There is no need for the driver to user private workqueue, standard system
workqueue should suffice as they going to use the same worker pool anyway.

Signed-off-by: Dmitry Torokhov <dmitry.torok...@gmail.com>
---
 drivers/auxdisplay/ht16k33.c | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)

diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
index b2fbe68c7fa9..533886a59cec 100644
--- a/drivers/auxdisplay/ht16k33.c
+++ b/drivers/auxdisplay/ht16k33.c
@@ -80,7 +80,6 @@ struct ht16k33_priv {
        struct i2c_client *client;
        struct ht16k33_keypad keypad;
        struct ht16k33_fbdev fbdev;
-       struct workqueue_struct *workqueue;
 };
 
 static struct fb_fix_screeninfo ht16k33_fb_fix = {
@@ -126,8 +125,8 @@ static void ht16k33_fb_queue(struct ht16k33_priv *priv)
 {
        struct ht16k33_fbdev *fbdev = &priv->fbdev;
 
-       queue_delayed_work(priv->workqueue, &fbdev->work,
-               msecs_to_jiffies(HZ / fbdev->refresh_rate));
+       schedule_delayed_work(&fbdev->work,
+                             msecs_to_jiffies(HZ / fbdev->refresh_rate));
 }
 
 /*
@@ -414,21 +413,15 @@ static int ht16k33_probe(struct i2c_client *client,
        i2c_set_clientdata(client, priv);
        fbdev = &priv->fbdev;
 
-       priv->workqueue = create_singlethread_workqueue(DRIVER_NAME "-wq");
-       if (priv->workqueue == NULL)
-               return -ENOMEM;
-
        err = ht16k33_initialize(priv);
        if (err)
-               goto err_destroy_wq;
+               return err;
 
        /* Framebuffer (2 bytes per column) */
        BUILD_BUG_ON(PAGE_SIZE < HT16K33_FB_SIZE);
        fbdev->buffer = (unsigned char *) get_zeroed_page(GFP_KERNEL);
-       if (!fbdev->buffer) {
-               err = -ENOMEM;
-               goto err_destroy_wq;
-       }
+       if (!fbdev->buffer)
+               return -ENOMEM;
 
        fbdev->cache = devm_kmalloc(&client->dev, HT16K33_FB_SIZE, GFP_KERNEL);
        if (!fbdev->cache) {
@@ -505,8 +498,6 @@ static int ht16k33_probe(struct i2c_client *client,
        framebuffer_release(fbdev->info);
 err_fbdev_buffer:
        free_page((unsigned long) fbdev->buffer);
-err_destroy_wq:
-       destroy_workqueue(priv->workqueue);
 
        return err;
 }
@@ -521,7 +512,6 @@ static int ht16k33_remove(struct i2c_client *client)
        framebuffer_release(fbdev->info);
        free_page((unsigned long) fbdev->buffer);
 
-       destroy_workqueue(priv->workqueue);
        return 0;
 }
 
-- 
2.11.0.483.g087da7b7c-goog

Reply via email to