Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754111AbbHTOvW (ORCPT ); Thu, 20 Aug 2015 10:51:22 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:41361 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753730AbbHTOrR (ORCPT ); Thu, 20 Aug 2015 10:47:17 -0400 X-AuditID: cbfee61b-f79706d000001b96-5c-55d5e873c61b From: Jacek Anaszewski To: linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andrew Lunn , Mark Brown , Jacek Anaszewski Subject: [PATCH/RFC v6 25/36] leds: wm831x: Remove work queue Date: Thu, 20 Aug 2015 16:43:55 +0200 Message-id: <1440081846-11697-26-git-send-email-j.anaszewski@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1440081846-11697-1-git-send-email-j.anaszewski@samsung.com> References: <1440081846-11697-1-git-send-email-j.anaszewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplluLIzCtJLcpLzFFi42I5/e+xgG7Ji6uhBk92Mlqcv3uI2WLqwyds Fr1XnzNaXN41h81i65t1jA6sHptWdbJ57Nzxmcmjb8sqRo/Pm+QCWKK4bFJSczLLUov07RK4 Mtbulig4KlXxc0oLYwNjt1gXIweHhICJxLJNRl2MnECmmMSFe+vZuhi5OIQEljJKnN8ymwnC +cko8WxDGyNIFZuAocTPF6+ZQGwRARuJ3hmTwGxmgQKJW4cegtnCArYSDV9fs4DYLAKqEhva O1hBbF4BT4k9x/uYIBYrSMyZZAMS5gQKz5v/lR3EFhLwkHjxfgvzBEbeBYwMqxglUguSC4qT 0nON8lLL9YoTc4tL89L1kvNzNzGCA+eZ9A7Gw7vcDzEKcDAq8fBeEL4aKsSaWFZcmXuIUYKD WUmE99YzoBBvSmJlVWpRfnxRaU5q8SFGaQ4WJXFefZNNoUIC6YklqdmpqQWpRTBZJg5OqQbG lZd3f99qyxLOWMUoe9D/+fN9sqtliuedaXiYNftSELs1+4MDilo91w+Ir8q+4zq/kYFpfyGr nEQSP4NY6tPjSq1hIS9PyXlmsquqBETsLm2Y1v9J0GqjZu7LE0k+0xfJXN//qTR8jpqRdLMO b8jc7bLfLup1zHRvzXeV8Cu6Kzmbyz5j5xUlluKMREMt5qLiRACcvglfGAIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3537 Lines: 110 From: Andrew Lunn Now the core implements the work queue, remove it from the drivers, and switch to using brightness_set_blocking op. Signed-off-by: Andrew Lunn Cc: Mark Brown Signed-off-by: Jacek Anaszewski --- drivers/leds/leds-wm831x-status.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/drivers/leds/leds-wm831x-status.c b/drivers/leds/leds-wm831x-status.c index 56027ef..64a2226 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 int 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,10 @@ 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); + + return 0; } static int wm831x_status_blink_set(struct led_classdev *led_cdev, @@ -147,11 +146,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 +202,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 +256,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 +280,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_blocking = 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/