Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753821AbbHTOrc (ORCPT ); Thu, 20 Aug 2015 10:47:32 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:58262 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753801AbbHTOr0 (ORCPT ); Thu, 20 Aug 2015 10:47:26 -0400 X-AuditID: cbfee61b-f79706d000001b96-6f-55d5e87d984c From: Jacek Anaszewski To: linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andrew Lunn , Guennadi Liakhovetski , Jacek Anaszewski Subject: [PATCH/RFC v6 28/36] leds: dac124d085: Remove work queue Date: Thu, 20 Aug 2015 16:43:58 +0200 Message-id: <1440081846-11697-29-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+xgG7ti6uhBtPuaVqcv3uI2eL9xnlM Fr1XnzNaXN41h81i65t1jA6sHh8+xnns3PGZyaNvyypGj8+b5AJYorhsUlJzMstSi/TtErgy tn8PK9grVXHyUjt7A+NZ0S5GDg4JAROJ39squxg5gUwxiQv31rN1MXJxCAksZZSYNO0KM4Tz k1Hiz5d17CBVbAKGEj9fvGYCsUUEbCR6Z0xiAiliFmhglHi/eDYLSEJYwFHiZu99sAYWAVWJ N6vfgcV5BTwlfp1bwQaxWUFiziQbkDAnUHje/K9g5UICHhIv3m9hnsDIu4CRYRWjRGpBckFx UnquUV5quV5xYm5xaV66XnJ+7iZGcOA8k97BeHiX+yFGAQ5GJR7eC8JXQ4VYE8uKK3MPMUpw MCuJ8N56BhTiTUmsrEotyo8vKs1JLT7EKM3BoiTOq2+yKVRIID2xJDU7NbUgtQgmy8TBKdXA aCd57vudpw4e39VePCtL4TU8p/GT+etho6WKr9MP7lVd8TSiKOeW6Mojl7IVnv7wvsY3V/mA 6LPLZ/rKJvbVTvOVOPk9v/atVtL1t0lRDRwMx5PDfmUuNLPPCP4rbKlzM5TxEkNEXeTBqTnP bv35ERH82M3LJNw++ZyxpMFHBsPZRUu3PTBgUGIpzkg01GIuKk4EAP2VQN8YAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3526 Lines: 113 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: Guennadi Liakhovetski Signed-off-by: Jacek Anaszewski --- drivers/leds/leds-dac124s085.c | 38 ++++++++++---------------------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/drivers/leds/leds-dac124s085.c b/drivers/leds/leds-dac124s085.c index db3ba8b..1e6a3ee 100644 --- a/drivers/leds/leds-dac124s085.c +++ b/drivers/leds/leds-dac124s085.c @@ -13,20 +13,15 @@ #include #include #include -#include -#include #include struct dac124s085_led { struct led_classdev ldev; struct spi_device *spi; int id; - int brightness; char name[sizeof("dac124s085-3")]; struct mutex mutex; - struct work_struct work; - spinlock_t lock; }; struct dac124s085 { @@ -38,29 +33,21 @@ struct dac124s085 { #define ALL_WRITE_UPDATE (2 << 12) #define POWER_DOWN_OUTPUT (3 << 12) -static void dac124s085_led_work(struct work_struct *work) +static int dac124s085_set_brightness(struct led_classdev *ldev, + enum led_brightness brightness) { - struct dac124s085_led *led = container_of(work, struct dac124s085_led, - work); + struct dac124s085_led *led = container_of(ldev, struct dac124s085_led, + ldev); u16 word; + int ret; mutex_lock(&led->mutex); word = cpu_to_le16(((led->id) << 14) | REG_WRITE_UPDATE | - (led->brightness & 0xfff)); - spi_write(led->spi, (const u8 *)&word, sizeof(word)); + (brightness & 0xfff)); + ret = spi_write(led->spi, (const u8 *)&word, sizeof(word)); mutex_unlock(&led->mutex); -} - -static void dac124s085_set_brightness(struct led_classdev *ldev, - enum led_brightness brightness) -{ - struct dac124s085_led *led = container_of(ldev, struct dac124s085_led, - ldev); - spin_lock(&led->lock); - led->brightness = brightness; - schedule_work(&led->work); - spin_unlock(&led->lock); + return ret; } static int dac124s085_probe(struct spi_device *spi) @@ -78,16 +65,13 @@ static int dac124s085_probe(struct spi_device *spi) for (i = 0; i < ARRAY_SIZE(dac->leds); i++) { led = dac->leds + i; led->id = i; - led->brightness = LED_OFF; led->spi = spi; snprintf(led->name, sizeof(led->name), "dac124s085-%d", i); - spin_lock_init(&led->lock); - INIT_WORK(&led->work, dac124s085_led_work); mutex_init(&led->mutex); led->ldev.name = led->name; led->ldev.brightness = LED_OFF; led->ldev.max_brightness = 0xfff; - led->ldev.brightness_set = dac124s085_set_brightness; + led->ldev.brightness_set_blocking = dac124s085_set_brightness; ret = led_classdev_register(&spi->dev, &led->ldev); if (ret < 0) goto eledcr; @@ -109,10 +93,8 @@ static int dac124s085_remove(struct spi_device *spi) struct dac124s085 *dac = spi_get_drvdata(spi); int i; - for (i = 0; i < ARRAY_SIZE(dac->leds); i++) { + for (i = 0; i < ARRAY_SIZE(dac->leds); i++) led_classdev_unregister(&dac->leds[i].ldev); - cancel_work_sync(&dac->leds[i].work); - } return 0; } -- 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/