Merge branch 'for-viro' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi...
[cascardo/linux.git] / drivers / spi / spi-sh.c
index 5025011..2bf53f0 100644 (file)
@@ -82,7 +82,6 @@ struct spi_sh_data {
        int irq;
        struct spi_master *master;
        struct list_head queue;
-       struct workqueue_struct *workqueue;
        struct work_struct ws;
        unsigned long cr1;
        wait_queue_head_t wait;
@@ -380,7 +379,7 @@ static int spi_sh_transfer(struct spi_device *spi, struct spi_message *mesg)
        spi_sh_clear_bit(ss, SPI_SH_SSA, SPI_SH_CR1);
 
        list_add_tail(&mesg->queue, &ss->queue);
-       queue_work(ss->workqueue, &ss->ws);
+       schedule_work(&ss->ws);
 
        spin_unlock_irqrestore(&ss->lock, flags);
 
@@ -425,7 +424,7 @@ static int spi_sh_remove(struct platform_device *pdev)
        struct spi_sh_data *ss = platform_get_drvdata(pdev);
 
        spi_unregister_master(ss->master);
-       destroy_workqueue(ss->workqueue);
+       flush_work(&ss->ws);
        free_irq(ss->irq, ss);
 
        return 0;
@@ -484,18 +483,11 @@ static int spi_sh_probe(struct platform_device *pdev)
        spin_lock_init(&ss->lock);
        INIT_WORK(&ss->ws, spi_sh_work);
        init_waitqueue_head(&ss->wait);
-       ss->workqueue = create_singlethread_workqueue(
-                                       dev_name(master->dev.parent));
-       if (ss->workqueue == NULL) {
-               dev_err(&pdev->dev, "create workqueue error\n");
-               ret = -EBUSY;
-               goto error1;
-       }
 
        ret = request_irq(irq, spi_sh_irq, 0, "spi_sh", ss);
        if (ret < 0) {
                dev_err(&pdev->dev, "request_irq error\n");
-               goto error2;
+               goto error1;
        }
 
        master->num_chipselect = 2;
@@ -514,8 +506,6 @@ static int spi_sh_probe(struct platform_device *pdev)
 
  error3:
        free_irq(irq, ss);
- error2:
-       destroy_workqueue(ss->workqueue);
  error1:
        spi_master_put(master);