Commit ed90013e authored by Bhaktipriya Shridhar's avatar Bhaktipriya Shridhar Committed by Mauro Carvalho Chehab

[media] s5p-mfc: Remove deprecated create_singlethread_workqueue

alloc_workqueue replaces deprecated create_singlethread_workqueue().

The MFC device driver is a v4l2 driver which can encode/decode video
raw/elementary streams and has support for all popular video codecs.

The driver's watchdog_workqueue has been replaced with system_wq since
it queues a single work item, &dev->watchdog_work, which calls for no
ordering requirement. The work item is involved in running the watchdog
timer and is not being used on a memory reclaim path.

Work item has been flushed in s5p_mfc_remove() to ensure
that there are no pending tasks while disconnecting the driver.
Signed-off-by: default avatarBhaktipriya Shridhar <bhaktipriya96@gmail.com>
Acked-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 605b8920
...@@ -153,7 +153,7 @@ static void s5p_mfc_watchdog(unsigned long arg) ...@@ -153,7 +153,7 @@ static void s5p_mfc_watchdog(unsigned long arg)
* error. Now it is time to kill all instances and * error. Now it is time to kill all instances and
* reset the MFC. */ * reset the MFC. */
mfc_err("Time out during waiting for HW\n"); mfc_err("Time out during waiting for HW\n");
queue_work(dev->watchdog_workqueue, &dev->watchdog_work); schedule_work(&dev->watchdog_work);
} }
dev->watchdog_timer.expires = jiffies + dev->watchdog_timer.expires = jiffies +
msecs_to_jiffies(MFC_WATCHDOG_INTERVAL); msecs_to_jiffies(MFC_WATCHDOG_INTERVAL);
...@@ -1246,7 +1246,6 @@ static int s5p_mfc_probe(struct platform_device *pdev) ...@@ -1246,7 +1246,6 @@ static int s5p_mfc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, dev); platform_set_drvdata(pdev, dev);
dev->hw_lock = 0; dev->hw_lock = 0;
dev->watchdog_workqueue = create_singlethread_workqueue(S5P_MFC_NAME);
INIT_WORK(&dev->watchdog_work, s5p_mfc_watchdog_worker); INIT_WORK(&dev->watchdog_work, s5p_mfc_watchdog_worker);
atomic_set(&dev->watchdog_cnt, 0); atomic_set(&dev->watchdog_cnt, 0);
init_timer(&dev->watchdog_timer); init_timer(&dev->watchdog_timer);
...@@ -1324,8 +1323,7 @@ static int s5p_mfc_remove(struct platform_device *pdev) ...@@ -1324,8 +1323,7 @@ static int s5p_mfc_remove(struct platform_device *pdev)
mutex_unlock(&dev->mfc_mutex); mutex_unlock(&dev->mfc_mutex);
del_timer_sync(&dev->watchdog_timer); del_timer_sync(&dev->watchdog_timer);
flush_workqueue(dev->watchdog_workqueue); flush_work(&dev->watchdog_work);
destroy_workqueue(dev->watchdog_workqueue);
video_unregister_device(dev->vfd_enc); video_unregister_device(dev->vfd_enc);
video_unregister_device(dev->vfd_dec); video_unregister_device(dev->vfd_dec);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment