Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753642AbbHTOqz (ORCPT ); Thu, 20 Aug 2015 10:46:55 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:33302 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753157AbbHTOqv (ORCPT ); Thu, 20 Aug 2015 10:46:51 -0400 X-AuditID: cbfee61b-f79706d000001b96-41-55d5e85aa971 From: Jacek Anaszewski To: linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andrew Lunn , Antonio Ospite , Jacek Anaszewski Subject: [PATCH/RFC v6 19/36] leds: lp3944: Remove work queue Date: Thu, 20 Aug 2015 16:43:49 +0200 Message-id: <1440081846-11697-20-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+NgFmpjluLIzCtJLcpLzFFi42I5/e+xgG7Ui6uhBh/fqFicv3uI2aL36nNG i8u75rBZbH2zjtHid/duFgdWj507PjN59G1Zxehx6MI6Fo/Pm+QCWKK4bFJSczLLUov07RK4 Mu4t+stWcFmuYu61D4wNjE2SXYycHBICJhKrTr1ggrDFJC7cW8/WxcjFISSwlFHi/PonzBDO T0aJo8fmMoNUsQkYSvx88RqsQ0TARqJ3xiQgm4ODWaBKYtb9epCwsICtRPe0o2DlLAKqEs// H2UDsXkFPCXmN4As4ABapiAxZ5INSJgTKDxv/ld2EFtIwEPixfstzBMYeRcwMqxilEgtSC4o TkrPNcpLLdcrTswtLs1L10vOz93ECA6dZ9I7GA/vcj/EKMDBqMTDe0H4aqgQa2JZcWXuIUYJ DmYlEd5bz4BCvCmJlVWpRfnxRaU5qcWHGKU5WJTEefVNNoUKCaQnlqRmp6YWpBbBZJk4OKUa GOsnJURz7z7x6sJdg5ju+kXFH9xVzodu8LNdf+OepebSyxc0jv1253Wtao24s6Z5++qzBkvO yYXxqRx9WHG6Iuv6hZjMqUc2HfBR3evB/3O3jmZ4qo32mzOXFB20dgk+ytx6/++0bWqecQx/ Nk1bK/nFXslCaMGe/+kpW7KUCuS1Ll/gkxVhn6DEUpyRaKjFXFScCAB5qovsGQIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4045 Lines: 128 From: Andrew Lunn Now the core implements the work queue, remove it from the driver, and switch to using brightness_set_blocking op. Signed-off-by: Andrew Lunn Cc: Antonio Ospite Signed-off-by: Jacek Anaszewski --- drivers/leds/leds-lp3944.c | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/drivers/leds/leds-lp3944.c b/drivers/leds/leds-lp3944.c index 53144fb..6c758ae 100644 --- a/drivers/leds/leds-lp3944.c +++ b/drivers/leds/leds-lp3944.c @@ -31,7 +31,6 @@ #include #include #include -#include #include /* Read Only Registers */ @@ -68,10 +67,8 @@ struct lp3944_led_data { u8 id; enum lp3944_type type; - enum lp3944_status status; struct led_classdev ldev; struct i2c_client *client; - struct work_struct work; }; struct lp3944_data { @@ -275,13 +272,12 @@ static int lp3944_led_set_blink(struct led_classdev *led_cdev, dev_dbg(&led->client->dev, "%s: OK hardware accelerated blink!\n", __func__); - led->status = LP3944_LED_STATUS_DIM0; - schedule_work(&led->work); + lp3944_led_set(led, LP3944_LED_STATUS_DIM0); return 0; } -static void lp3944_led_set_brightness(struct led_classdev *led_cdev, +static int lp3944_led_set_brightness(struct led_classdev *led_cdev, enum led_brightness brightness) { struct lp3944_led_data *led = ldev_to_led(led_cdev); @@ -289,16 +285,7 @@ static void lp3944_led_set_brightness(struct led_classdev *led_cdev, dev_dbg(&led->client->dev, "%s: %s, %d\n", __func__, led_cdev->name, brightness); - led->status = !!brightness; - schedule_work(&led->work); -} - -static void lp3944_led_work(struct work_struct *work) -{ - struct lp3944_led_data *led; - - led = container_of(work, struct lp3944_led_data, work); - lp3944_led_set(led, led->status); + return lp3944_led_set(led, !!brightness); } static int lp3944_configure(struct i2c_client *client, @@ -318,14 +305,13 @@ static int lp3944_configure(struct i2c_client *client, case LP3944_LED_TYPE_LED: case LP3944_LED_TYPE_LED_INVERTED: led->type = pled->type; - led->status = pled->status; led->ldev.name = pled->name; led->ldev.max_brightness = 1; - led->ldev.brightness_set = lp3944_led_set_brightness; + led->ldev.brightness_set_blocking = + lp3944_led_set_brightness; led->ldev.blink_set = lp3944_led_set_blink; led->ldev.flags = LED_CORE_SUSPENDRESUME; - INIT_WORK(&led->work, lp3944_led_work); err = led_classdev_register(&client->dev, &led->ldev); if (err < 0) { dev_err(&client->dev, @@ -336,14 +322,14 @@ static int lp3944_configure(struct i2c_client *client, /* to expose the default value to userspace */ led->ldev.brightness = - (enum led_brightness) led->status; + (enum led_brightness) pled->status; /* Set the default led status */ - err = lp3944_led_set(led, led->status); + err = lp3944_led_set(led, pled->status); if (err < 0) { dev_err(&client->dev, "%s couldn't set STATUS %d\n", - led->ldev.name, led->status); + led->ldev.name, pled->status); goto exit; } break; @@ -364,7 +350,6 @@ exit: case LP3944_LED_TYPE_LED: case LP3944_LED_TYPE_LED_INVERTED: led_classdev_unregister(&data->leds[i].ldev); - cancel_work_sync(&data->leds[i].work); break; case LP3944_LED_TYPE_NONE: @@ -424,7 +409,6 @@ static int lp3944_remove(struct i2c_client *client) case LP3944_LED_TYPE_LED: case LP3944_LED_TYPE_LED_INVERTED: led_classdev_unregister(&data->leds[i].ldev); - cancel_work_sync(&data->leds[i].work); break; case LP3944_LED_TYPE_NONE: -- 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/