Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1946091AbbGQJF5 (ORCPT ); Fri, 17 Jul 2015 05:05:57 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:53795 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932456AbbGQIsw (ORCPT ); Fri, 17 Jul 2015 04:48:52 -0400 X-AuditID: cbfee61b-f79416d0000014c0-e9-55a8c1726e2f From: Jacek Anaszewski To: linux-leds@vger.kernel.org Cc: linux-kernel@vger.kernel.org, cooloney@gmail.com, rpurdie@rpsys.net, stsp@users.sourceforge.net, Andrew Lunn , Mark Brown Subject: [PATCH/RFC 21/51] leds: wm831x: Remove work queue Date: Fri, 17 Jul 2015 10:47:07 +0200 Message-id: <1437122857-6765-22-git-send-email-j.anaszewski@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1437122857-6765-1-git-send-email-j.anaszewski@samsung.com> References: <1437122857-6765-1-git-send-email-j.anaszewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGLMWRmVeSWpSXmKPExsVy+t9jAd3igytCDRavZbQ4f/cQs8XUh0/Y LI7unMhkcXnXHDaLrW/WMVrs3vWU1aKzbxqLA7vHzll32T02repk89i54zOTx575P1g9mk61 s3p83iQXwBbFZZOSmpNZllqkb5fAlTFxrVjBXsmK3UsOszcwThXtYuTkkBAwkfi9vZ0NwhaT uHBvPZDNxSEksIhR4vyBM2AJIYGfjBK/ZmuD2GwChhI/X7xm6mLk4BARkJPYeaYSpJ5ZYBmj xJYVN5lBaoQFrCRmXf3DCmKzCKhKTGqaCjaHV8BDYlvHfzaQXgkBBYk5k2xAwpxA4fcPVrJA rHKXaPtzkW0CI+8CRoZVjKKpBckFxUnpuUZ6xYm5xaV56XrJ+bmbGMGh9Ux6B+OqBotDjAIc jEo8vA2uK0KFWBPLiitzDzFKcDArifBW7gQK8aYkVlalFuXHF5XmpBYfYpTmYFES5z2Z7xMq JJCeWJKanZpakFoEk2Xi4JRqYPQvuH/Dbdv7CXvr/01NPOM+489EEya113N8LvFkr/4r8zy2 ODKfaW3LZ+UVQdLSLEv8zAznRUxqLZ5XGXjEhzP8YYrBkZhnF6oOJl08LPikxv7IPNNAnkx9 pUm2jzTOplS6pJwqXmHOfNhMuV80bvkrhslr9t5xEC/TdV3V2vMt1DVhN2u0ohJLcUaioRZz UXEiAMOjELMpAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3405 Lines: 106 From: Andrew Lunn Now the core implements the work queue, remove it from the drivers. Signed-off-by: Andrew Lunn Cc: Mark Brown --- drivers/leds/leds-wm831x-status.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/drivers/leds/leds-wm831x-status.c b/drivers/leds/leds-wm831x-status.c index 56027ef..01dad0e 100644 --- a/drivers/leds/leds-wm831x-status.c +++ b/drivers/leds/leds-wm831x-status.c @@ -23,7 +23,6 @@ struct wm831x_status { struct led_classdev cdev; struct wm831x *wm831x; - struct work_struct work; struct mutex mutex; spinlock_t value_lock; @@ -40,10 +39,8 @@ struct wm831x_status { #define to_wm831x_status(led_cdev) \ container_of(led_cdev, struct wm831x_status, cdev) -static void wm831x_status_work(struct work_struct *work) +static void wm831x_status_set(struct wm831x_status *led) { - struct wm831x_status *led = container_of(work, struct wm831x_status, - work); unsigned long flags; mutex_lock(&led->mutex); @@ -70,8 +67,8 @@ static void wm831x_status_work(struct work_struct *work) mutex_unlock(&led->mutex); } -static void wm831x_status_set(struct led_classdev *led_cdev, - enum led_brightness value) +static void wm831x_status_brightness_set(struct led_classdev *led_cdev, + enum led_brightness value) { struct wm831x_status *led = to_wm831x_status(led_cdev); unsigned long flags; @@ -80,8 +77,8 @@ static void wm831x_status_set(struct led_classdev *led_cdev, led->brightness = value; if (value == LED_OFF) led->blink = 0; - schedule_work(&led->work); spin_unlock_irqrestore(&led->value_lock, flags); + wm831x_status_set(led); } static int wm831x_status_blink_set(struct led_classdev *led_cdev, @@ -147,11 +144,8 @@ static int wm831x_status_blink_set(struct led_classdev *led_cdev, else led->blink = 0; - /* Always update; if we fail turn off blinking since we expect - * a software fallback. */ - schedule_work(&led->work); - spin_unlock_irqrestore(&led->value_lock, flags); + wm831x_status_set(led); return ret; } @@ -206,11 +200,9 @@ static ssize_t wm831x_status_src_store(struct device *dev, for (i = 0; i < ARRAY_SIZE(led_src_texts); i++) { if (!strcmp(name, led_src_texts[i])) { mutex_lock(&led->mutex); - led->src = i; - schedule_work(&led->work); - mutex_unlock(&led->mutex); + wm831x_status_set(led); } } @@ -262,7 +254,6 @@ static int wm831x_status_probe(struct platform_device *pdev) pdata.name = dev_name(&pdev->dev); mutex_init(&drvdata->mutex); - INIT_WORK(&drvdata->work, wm831x_status_work); spin_lock_init(&drvdata->value_lock); /* We cache the configuration register and read startup values @@ -287,7 +278,7 @@ static int wm831x_status_probe(struct platform_device *pdev) drvdata->cdev.name = pdata.name; drvdata->cdev.default_trigger = pdata.default_trigger; - drvdata->cdev.brightness_set = wm831x_status_set; + drvdata->cdev.brightness_set = wm831x_status_brightness_set; drvdata->cdev.blink_set = wm831x_status_blink_set; drvdata->cdev.groups = wm831x_status_groups; -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/