aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2017-02-09 13:15:53 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-02-10 09:57:28 -0500
commit8fa8bea728c261551baed01ef230e1138f2944ce (patch)
tree79b72c4fced823346b67d67484afb949a91bb473
parentcac513f1a9f7ace21d27665435f8fe7e39050396 (diff)
auxdisplay: ht16k33: remove private workqueue
There is no need for the driver to use private workqueue, standard system workqueue should suffice as they are going to use the same worker pool anyway. Acked-by: Robin van der Gracht <robin@protonic.nl> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/auxdisplay/ht16k33.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
index 586faba83a75..f66b45b235b0 100644
--- a/drivers/auxdisplay/ht16k33.c
+++ b/drivers/auxdisplay/ht16k33.c
@@ -80,7 +80,6 @@ struct ht16k33_priv {
80 struct i2c_client *client; 80 struct i2c_client *client;
81 struct ht16k33_keypad keypad; 81 struct ht16k33_keypad keypad;
82 struct ht16k33_fbdev fbdev; 82 struct ht16k33_fbdev fbdev;
83 struct workqueue_struct *workqueue;
84}; 83};
85 84
86static struct fb_fix_screeninfo ht16k33_fb_fix = { 85static struct fb_fix_screeninfo ht16k33_fb_fix = {
@@ -126,8 +125,8 @@ static void ht16k33_fb_queue(struct ht16k33_priv *priv)
126{ 125{
127 struct ht16k33_fbdev *fbdev = &priv->fbdev; 126 struct ht16k33_fbdev *fbdev = &priv->fbdev;
128 127
129 queue_delayed_work(priv->workqueue, &fbdev->work, 128 schedule_delayed_work(&fbdev->work,
130 msecs_to_jiffies(HZ / fbdev->refresh_rate)); 129 msecs_to_jiffies(HZ / fbdev->refresh_rate));
131} 130}
132 131
133/* 132/*
@@ -414,21 +413,15 @@ static int ht16k33_probe(struct i2c_client *client,
414 i2c_set_clientdata(client, priv); 413 i2c_set_clientdata(client, priv);
415 fbdev = &priv->fbdev; 414 fbdev = &priv->fbdev;
416 415
417 priv->workqueue = create_singlethread_workqueue(DRIVER_NAME "-wq");
418 if (priv->workqueue == NULL)
419 return -ENOMEM;
420
421 err = ht16k33_initialize(priv); 416 err = ht16k33_initialize(priv);
422 if (err) 417 if (err)
423 goto err_destroy_wq; 418 return err;
424 419
425 /* Framebuffer (2 bytes per column) */ 420 /* Framebuffer (2 bytes per column) */
426 BUILD_BUG_ON(PAGE_SIZE < HT16K33_FB_SIZE); 421 BUILD_BUG_ON(PAGE_SIZE < HT16K33_FB_SIZE);
427 fbdev->buffer = (unsigned char *) get_zeroed_page(GFP_KERNEL); 422 fbdev->buffer = (unsigned char *) get_zeroed_page(GFP_KERNEL);
428 if (!fbdev->buffer) { 423 if (!fbdev->buffer)
429 err = -ENOMEM; 424 return -ENOMEM;
430 goto err_destroy_wq;
431 }
432 425
433 fbdev->cache = devm_kmalloc(&client->dev, HT16K33_FB_SIZE, GFP_KERNEL); 426 fbdev->cache = devm_kmalloc(&client->dev, HT16K33_FB_SIZE, GFP_KERNEL);
434 if (!fbdev->cache) { 427 if (!fbdev->cache) {
@@ -505,8 +498,6 @@ err_fbdev_info:
505 framebuffer_release(fbdev->info); 498 framebuffer_release(fbdev->info);
506err_fbdev_buffer: 499err_fbdev_buffer:
507 free_page((unsigned long) fbdev->buffer); 500 free_page((unsigned long) fbdev->buffer);
508err_destroy_wq:
509 destroy_workqueue(priv->workqueue);
510 501
511 return err; 502 return err;
512} 503}
@@ -521,7 +512,6 @@ static int ht16k33_remove(struct i2c_client *client)
521 framebuffer_release(fbdev->info); 512 framebuffer_release(fbdev->info);
522 free_page((unsigned long) fbdev->buffer); 513 free_page((unsigned long) fbdev->buffer);
523 514
524 destroy_workqueue(priv->workqueue);
525 return 0; 515 return 0;
526} 516}
527 517