Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753848AbbHTOrh (ORCPT ); Thu, 20 Aug 2015 10:47:37 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:54210 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753779AbbHTOrc (ORCPT ); Thu, 20 Aug 2015 10:47:32 -0400 X-AuditID: cbfee61b-f79706d000001b96-74-55d5e882d945 From: Jacek Anaszewski To: linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andrew Lunn , Daniel Mack , Jacek Anaszewski Subject: [PATCH/RFC v6 29/36] leds: lt3593: Remove work queue Date: Thu, 20 Aug 2015 16:43:59 +0200 Message-id: <1440081846-11697-30-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+NgFmphluLIzCtJLcpLzFFi42I5/e+xgG7zi6uhBlcuM1mcv3uI2eLt6QY2 i96rzxktLu+aw2ax9c06RgdWj41fVjJ57Nzxmcmjb8sqRo/Pm+QCWKK4bFJSczLLUov07RK4 MuZt+chSMEOqYuMC7gbGA6JdjJwcEgImEm8Ov2eEsMUkLtxbz9bFyMUhJLCUUaLlaBMThPOT UeJL4z92kCo2AUOJny9eM4HYIgI2Er0zJoHZzAJ5Em+2/mLuYuTgEBawleg9lg0SZhFQlbi9 uY8VJMwr4Cnx5p0ciCkhoCAxZ5INSAUnUHTe/K9gw4UEPCRevN/CPIGRdwEjwypGidSC5ILi pPRco7zUcr3ixNzi0rx0veT83E2M4LB5Jr2D8fAu90OMAhyMSjy8F4SvhgqxJpYVV+YeYpTg YFYS4b31DCjEm5JYWZValB9fVJqTWnyIUZqDRUmcV99kU6iQQHpiSWp2ampBahFMlomDU6qB MeNl7jZ7z93ciZVbkuvOpyk41fP0frq3OFGLY3190t42tvtLOjLm/LBz66hdf2Ff8QPHLwbN 7BNirmq5Xt4x82xPi/W6SuW/jVOY5Jbd7e2ZM7mioZo7jL0maX6AjfDl1Zt+z+SQ/pNyZ8Pz LcraMrOLD5pNPhL8nK1rosmHgnrVvPkyqnf/KrEUZyQaajEXFScCAD3aRKcXAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3483 Lines: 119 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: Daniel Mack Signed-off-by: Jacek Anaszewski --- drivers/leds/leds-lt3593.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/drivers/leds/leds-lt3593.c b/drivers/leds/leds-lt3593.c index 9f41124..a7ff510 100644 --- a/drivers/leds/leds-lt3593.c +++ b/drivers/leds/leds-lt3593.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -28,15 +27,14 @@ struct lt3593_led_data { struct led_classdev cdev; unsigned gpio; - struct work_struct work; - u8 new_level; }; -static void lt3593_led_work(struct work_struct *work) +static int lt3593_led_set(struct led_classdev *led_cdev, + enum led_brightness value) { - int pulses; struct lt3593_led_data *led_dat = - container_of(work, struct lt3593_led_data, work); + container_of(led_cdev, struct lt3593_led_data, cdev); + int pulses; /* * The LT3593 resets its internal current level register to the maximum @@ -47,18 +45,18 @@ static void lt3593_led_work(struct work_struct *work) * applied is to the output driver. */ - if (led_dat->new_level == 0) { + if (value == 0) { gpio_set_value_cansleep(led_dat->gpio, 0); - return; + return 0; } - pulses = 32 - (led_dat->new_level * 32) / 255; + pulses = 32 - (value * 32) / 255; if (pulses == 0) { gpio_set_value_cansleep(led_dat->gpio, 0); mdelay(1); gpio_set_value_cansleep(led_dat->gpio, 1); - return; + return 0; } gpio_set_value_cansleep(led_dat->gpio, 1); @@ -69,16 +67,8 @@ static void lt3593_led_work(struct work_struct *work) gpio_set_value_cansleep(led_dat->gpio, 1); udelay(1); } -} -static void lt3593_led_set(struct led_classdev *led_cdev, - enum led_brightness value) -{ - struct lt3593_led_data *led_dat = - container_of(led_cdev, struct lt3593_led_data, cdev); - - led_dat->new_level = value; - schedule_work(&led_dat->work); + return 0; } static int create_lt3593_led(const struct gpio_led *template, @@ -97,7 +87,7 @@ static int create_lt3593_led(const struct gpio_led *template, led_dat->cdev.default_trigger = template->default_trigger; led_dat->gpio = template->gpio; - led_dat->cdev.brightness_set = lt3593_led_set; + led_dat->cdev.brightness_set_blocking = lt3593_led_set; state = (template->default_state == LEDS_GPIO_DEFSTATE_ON); led_dat->cdev.brightness = state ? LED_FULL : LED_OFF; @@ -111,8 +101,6 @@ static int create_lt3593_led(const struct gpio_led *template, if (ret < 0) return ret; - INIT_WORK(&led_dat->work, lt3593_led_work); - ret = led_classdev_register(parent, &led_dat->cdev); if (ret < 0) return ret; @@ -129,7 +117,6 @@ static void delete_lt3593_led(struct lt3593_led_data *led) return; led_classdev_unregister(&led->cdev); - cancel_work_sync(&led->work); } static int lt3593_led_probe(struct platform_device *pdev) -- 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/