From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752074AbcKFNtt (ORCPT ); Sun, 6 Nov 2016 08:49:49 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:35467 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751613AbcKFNtr (ORCPT ); Sun, 6 Nov 2016 08:49:47 -0500 Subject: Re: [PATCH 2/2] leds: core: Remove delayed_set_value property from struct led_classdev To: Jacek Anaszewski , linux-leds@vger.kernel.org References: <1475661812-26215-1-git-send-email-j.anaszewski@samsung.com> <1475661812-26215-2-git-send-email-j.anaszewski@samsung.com> Cc: linux-kernel@vger.kernel.org, Fabio Baltieri , Sakari Ailus , Pavel Machek , Andrew Lunn From: Jacek Anaszewski Message-ID: <5839241e-e69e-40ea-9a6a-da2ff291117e@gmail.com> Date: Sun, 6 Nov 2016 14:49:06 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.4.0 MIME-Version: 1.0 In-Reply-To: <1475661812-26215-2-git-send-email-j.anaszewski@samsung.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Withdrawing this patch as it breaks restoring brightness on resume. Thanks, Jacek Anaszewski On 10/05/2016 12:03 PM, Jacek Anaszewski wrote: > delayed_set_value property was introduced in the commit > d23a22a74fde ("leds: delay led_set_brightness if stopping soft-blink"). > Its aim was to allow calling led_set_brightness() from hard irq context > when soft blinking is enabled. Later LED core refactoring preserved > the property, although in an ineffective way. That bug was harmless > because in the new approach brightness setting is deferred until the > next timer tick when software blinking is enabled. > > Since LED brightness is assigned immediately in > led_set_brightness_nosleep() or through struct led_classdev's > blink_brightness while soft blinking is enabled, then > delayed_set_value is no longer required. > > Signed-off-by: Jacek Anaszewski > Cc: Fabio Baltieri > Cc: Sakari Ailus > Cc: Pavel Machek > Cc: Andrew Lunn > --- > drivers/leds/led-core.c | 8 ++++---- > include/linux/leds.h | 1 - > 2 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c > index 3bce448..2d0c75a 100644 > --- a/drivers/leds/led-core.c > +++ b/drivers/leds/led-core.c > @@ -107,15 +107,15 @@ static void set_brightness_delayed(struct work_struct *ws) > int ret = 0; > > if (led_cdev->flags & LED_BLINK_DISABLE) { > - led_cdev->delayed_set_value = LED_OFF; > + led_cdev->brightness = LED_OFF; > led_stop_software_blink(led_cdev); > led_cdev->flags &= ~LED_BLINK_DISABLE; > } > > - ret = __led_set_brightness(led_cdev, led_cdev->delayed_set_value); > + ret = __led_set_brightness(led_cdev, led_cdev->brightness); > if (ret == -ENOTSUPP) > ret = __led_set_brightness_blocking(led_cdev, > - led_cdev->delayed_set_value); > + led_cdev->brightness); > if (ret < 0 && > /* LED HW might have been unplugged, therefore don't warn */ > !(ret == -ENODEV && (led_cdev->flags & LED_UNREGISTERING) && > @@ -260,7 +260,7 @@ void led_set_brightness_nopm(struct led_classdev *led_cdev, > return; > > /* If brightness setting can sleep, delegate it to a work queue task */ > - led_cdev->delayed_set_value = value; > + led_cdev->brightness = value; > schedule_work(&led_cdev->set_brightness_work); > } > EXPORT_SYMBOL_GPL(led_set_brightness_nopm); > diff --git a/include/linux/leds.h b/include/linux/leds.h > index ddfcb2d..52993de 100644 > --- a/include/linux/leds.h > +++ b/include/linux/leds.h > @@ -92,7 +92,6 @@ struct led_classdev { > void (*flash_resume)(struct led_classdev *led_cdev); > > struct work_struct set_brightness_work; > - int delayed_set_value; > > #ifdef CONFIG_LEDS_TRIGGERS > /* Protects the trigger data below */ >