]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/spi/spi-bfin-sport.c
Merge tag 'initramfs-fix-4.12-rc1' of git://github.com/stffrdhrn/linux
[karo-tx-linux.git] / drivers / spi / spi-bfin-sport.c
index 6c967555a56a4d3a030bd374c2ef94151039e44a..01d0ba9c5942e5f2de8dda31c322ed33578c6e5b 100644 (file)
@@ -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;
 }