Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753618AbbHTOqu (ORCPT ); Thu, 20 Aug 2015 10:46:50 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:39977 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753584AbbHTOqr (ORCPT ); Thu, 20 Aug 2015 10:46:47 -0400 X-AuditID: cbfee61b-f79706d000001b96-3d-55d5e8562787 From: Jacek Anaszewski To: linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andrew Lunn , Jacek Anaszewski Subject: [PATCH/RFC v6 18/36] leds: pca9532: Remove work queue for LEDs. Date: Thu, 20 Aug 2015 16:43:48 +0200 Message-id: <1440081846-11697-19-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+NgFvrNJMWRmVeSWpSXmKPExsVy+t9jAd2wF1dDDXqWyVicv3uI2aL36nNG i8u75rBZbH2zjtGBxWPnjs9MHn1bVjF6fN4kF8AcxWWTkpqTWZZapG+XwJWx6/IN5oId4hU9 uy+wNTBuE+5i5OSQEDCReP/wJjOELSZx4d56ti5GLg4hgaWMEj9W9DCCJIQEfjJKfF2bBWKz CRhK/HzxmgnEFhGwkeidMQnMZhbwlbiyfwXYIGEBD4nmB9dYQWwWAVWJa90LgeZwcPAKeEoc e5cBYkoIKEjMmWQDUsEJFJ03/ys7xCYPiRfvtzBPYORdwMiwilEitSC5oDgpPdcoL7Vcrzgx t7g0L10vOT93EyM4SJ5J72A8vMv9EKMAB6MSD+8F4auhQqyJZcWVuYcYJTiYlUR4bz0DCvGm JFZWpRblxxeV5qQWH2KU5mBREufVN9kUKiSQnliSmp2aWpBaBJNl4uCUamAU8RGOOdC/fu0V 9Q7PvfUa68K29m5MysmqVes9eCnD9p2luPPuae9rL5zn58z7WcN84VJ5zKbq/xwWu668D9KK YhS4zW078/s3+3f8s6L8Lu4Q4nW5pNewiKfu/vKt+9fbbFV/HTuDXWyPzx/zf9o88W72Fqx7 77jMmLVhwUTtKXs2pR8yPVurxFKckWioxVxUnAgAaYOLcA4CAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3155 Lines: 95 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 Signed-off-by: Jacek Anaszewski --- drivers/leds/leds-pca9532.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/drivers/leds/leds-pca9532.c b/drivers/leds/leds-pca9532.c index 5a6363d..17c63ec 100644 --- a/drivers/leds/leds-pca9532.c +++ b/drivers/leds/leds-pca9532.c @@ -158,7 +158,7 @@ static void pca9532_setled(struct pca9532_led *led) mutex_unlock(&data->update_lock); } -static void pca9532_set_brightness(struct led_classdev *led_cdev, +static int pca9532_set_brightness(struct led_classdev *led_cdev, enum led_brightness value) { int err = 0; @@ -172,9 +172,12 @@ static void pca9532_set_brightness(struct led_classdev *led_cdev, led->state = PCA9532_PWM0; /* Thecus: hardcode one pwm */ err = pca9532_calcpwm(led->client, 0, 0, value); if (err) - return; /* XXX: led api doesn't allow error code? */ + return err; } - schedule_work(&led->work); + if (led->state == PCA9532_PWM0) + pca9532_setpwm(led->client, 0); + pca9532_setled(led); + return err; } static int pca9532_set_blink(struct led_classdev *led_cdev, @@ -198,7 +201,10 @@ static int pca9532_set_blink(struct led_classdev *led_cdev, err = pca9532_calcpwm(client, 0, psc, led_cdev->brightness); if (err) return err; - schedule_work(&led->work); + if (led->state == PCA9532_PWM0) + pca9532_setpwm(led->client, 0); + pca9532_setled(led); + return 0; } @@ -233,15 +239,6 @@ static void pca9532_input_work(struct work_struct *work) mutex_unlock(&data->update_lock); } -static void pca9532_led_work(struct work_struct *work) -{ - struct pca9532_led *led; - led = container_of(work, struct pca9532_led, work); - if (led->state == PCA9532_PWM0) - pca9532_setpwm(led->client, 0); - pca9532_setled(led); -} - #ifdef CONFIG_LEDS_PCA9532_GPIO static int pca9532_gpio_request_pin(struct gpio_chip *gc, unsigned offset) { @@ -307,7 +304,6 @@ static int pca9532_destroy_devices(struct pca9532_data *data, int n_devs) break; case PCA9532_TYPE_LED: led_classdev_unregister(&data->leds[i].ldev); - cancel_work_sync(&data->leds[i].work); break; case PCA9532_TYPE_N2100_BEEP: if (data->idev != NULL) { @@ -359,9 +355,9 @@ static int pca9532_configure(struct i2c_client *client, led->name = pled->name; led->ldev.name = led->name; led->ldev.brightness = LED_OFF; - led->ldev.brightness_set = pca9532_set_brightness; + led->ldev.brightness_set_blocking = + pca9532_set_brightness; led->ldev.blink_set = pca9532_set_blink; - INIT_WORK(&led->work, pca9532_led_work); err = led_classdev_register(&client->dev, &led->ldev); if (err < 0) { dev_err(&client->dev, -- 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/