|
@@ -64,8 +64,6 @@ struct bfin_sport_spi_master_data {
|
|
|
/* Pin request list */
|
|
|
u16 *pin_req;
|
|
|
|
|
|
- /* Driver message queue */
|
|
|
- struct workqueue_struct *workqueue;
|
|
|
struct work_struct pump_messages;
|
|
|
spinlock_t lock;
|
|
|
struct list_head queue;
|
|
@@ -300,7 +298,7 @@ bfin_sport_spi_giveback(struct bfin_sport_spi_master_data *drv_data)
|
|
|
drv_data->cur_msg = NULL;
|
|
|
drv_data->cur_transfer = NULL;
|
|
|
drv_data->cur_chip = NULL;
|
|
|
- queue_work(drv_data->workqueue, &drv_data->pump_messages);
|
|
|
+ schedule_work(&drv_data->pump_messages);
|
|
|
spin_unlock_irqrestore(&drv_data->lock, flags);
|
|
|
|
|
|
if (!drv_data->cs_change)
|
|
@@ -556,7 +554,7 @@ bfin_sport_spi_transfer(struct spi_device *spi, struct spi_message *msg)
|
|
|
list_add_tail(&msg->queue, &drv_data->queue);
|
|
|
|
|
|
if (drv_data->run && !drv_data->busy)
|
|
|
- queue_work(drv_data->workqueue, &drv_data->pump_messages);
|
|
|
+ schedule_work(&drv_data->pump_messages);
|
|
|
|
|
|
spin_unlock_irqrestore(&drv_data->lock, flags);
|
|
|
|
|
@@ -666,12 +664,7 @@ bfin_sport_spi_init_queue(struct bfin_sport_spi_master_data *drv_data)
|
|
|
tasklet_init(&drv_data->pump_transfers,
|
|
|
bfin_sport_spi_pump_transfers, (unsigned long)drv_data);
|
|
|
|
|
|
- /* init messages workqueue */
|
|
|
INIT_WORK(&drv_data->pump_messages, bfin_sport_spi_pump_messages);
|
|
|
- drv_data->workqueue =
|
|
|
- create_singlethread_workqueue(dev_name(drv_data->master->dev.parent));
|
|
|
- if (drv_data->workqueue == NULL)
|
|
|
- return -EBUSY;
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -694,7 +687,7 @@ bfin_sport_spi_start_queue(struct bfin_sport_spi_master_data *drv_data)
|
|
|
drv_data->cur_chip = NULL;
|
|
|
spin_unlock_irqrestore(&drv_data->lock, flags);
|
|
|
|
|
|
- queue_work(drv_data->workqueue, &drv_data->pump_messages);
|
|
|
+ schedule_work(&drv_data->pump_messages);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -738,7 +731,7 @@ bfin_sport_spi_destroy_queue(struct bfin_sport_spi_master_data *drv_data)
|
|
|
if (status)
|
|
|
return status;
|
|
|
|
|
|
- destroy_workqueue(drv_data->workqueue);
|
|
|
+ flush_work(&drv_data->pump_messages);
|
|
|
|
|
|
return 0;
|
|
|
}
|