Merge tag 'spi-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
[sfrench/cifs-2.6.git] / drivers / spi / spi-mpc52xx-psc.c
index 72d11ebefb2890cc538b186ee6a97a8513426e0a..42a8b8521f8f790cec466aea0cac8263babeb2f0 100644 (file)
@@ -42,7 +42,6 @@ struct mpc52xx_psc_spi {
        u8 bits_per_word;
        u8 busy;
 
-       struct workqueue_struct *workqueue;
        struct work_struct work;
 
        struct list_head queue;
@@ -299,7 +298,7 @@ static int mpc52xx_psc_spi_transfer(struct spi_device *spi,
 
        spin_lock_irqsave(&mps->lock, flags);
        list_add_tail(&m->queue, &mps->queue);
-       queue_work(mps->workqueue, &mps->work);
+       schedule_work(&mps->work);
        spin_unlock_irqrestore(&mps->lock, flags);
 
        return 0;
@@ -425,21 +424,12 @@ static int mpc52xx_psc_spi_do_probe(struct device *dev, u32 regaddr,
        INIT_WORK(&mps->work, mpc52xx_psc_spi_work);
        INIT_LIST_HEAD(&mps->queue);
 
-       mps->workqueue = create_singlethread_workqueue(
-               dev_name(master->dev.parent));
-       if (mps->workqueue == NULL) {
-               ret = -EBUSY;
-               goto free_irq;
-       }
-
        ret = spi_register_master(master);
        if (ret < 0)
-               goto unreg_master;
+               goto free_irq;
 
        return ret;
 
-unreg_master:
-       destroy_workqueue(mps->workqueue);
 free_irq:
        free_irq(mps->irq, mps);
 free_master:
@@ -484,8 +474,7 @@ static int mpc52xx_psc_spi_of_remove(struct platform_device *op)
        struct spi_master *master = spi_master_get(platform_get_drvdata(op));
        struct mpc52xx_psc_spi *mps = spi_master_get_devdata(master);
 
-       flush_workqueue(mps->workqueue);
-       destroy_workqueue(mps->workqueue);
+       flush_work(&mps->work);
        spi_unregister_master(master);
        free_irq(mps->irq, mps);
        if (mps->psc)