|
@@ -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)
|