Re: [PATCH] leds: core: avoid error message when a USB LED device is unplugged

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 22.01.2016 um 09:45 schrieb Jacek Anaszewski:
> Hi Heiner,
> 
> Could you rebase this patch on the top of devel branch
> of LED git, please?
> 
> I am getting an error while applying it:
> 
> error: short SHA1 19e1e60 is ambiguous.
> fatal: sha1 information is lacking or useless (drivers/leds/led-core.c).
> Repository lacks necessary blobs to fall back on 3-way merge.
> 
> It may have happened that you had some patches that are not in mainline
> kernel in the repository you produced the patch from. It is also
> possible that this is an issue with the git version I am using, so this
> would clarify the situation.
> 
Reason is the changed comment as it affects the context of this patch.
Will rebase it and resend.

Regards, Heiner

> Thanks in advance.
> 
> Best Regards,
> Jacek Anaszewski
> 
> On 01/19/2016 09:42 PM, Heiner Kallweit wrote:
>> When a USB LED device is unplugged the remove call chain calls
>> led_classdev_unregister which tries to switch the LED off.
>> As the device has been removed already this results in a ENODEV
>> error message in dmesg.
>> Avoid this error message by ignoring ENODEV in calls from
>> led_classdev_unregister if the LED device is flagged as pluggable.
>>
>> Therefore a new flag LED_HW_PLUGGABLE was introduced which should be set by
>> all LED drivers handling pluggable LED devices (mainly USB LED devices).
>>
>> Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx>
>> ---
>>   drivers/leds/led-class.c | 2 ++
>>   drivers/leds/led-core.c  | 5 ++++-
>>   include/linux/leds.h     | 2 ++
>>   3 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
>> index 14139c3..aa84e5b 100644
>> --- a/drivers/leds/led-class.c
>> +++ b/drivers/leds/led-class.c
>> @@ -245,6 +245,8 @@ void led_classdev_unregister(struct led_classdev *led_cdev)
>>       up_write(&led_cdev->trigger_lock);
>>   #endif
>>
>> +    led_cdev->flags |= LED_UNREGISTERING;
>> +
>>       /* Stop blinking */
>>       led_stop_software_blink(led_cdev);
>>
>> diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
>> index 19e1e60..ad684b6 100644
>> --- a/drivers/leds/led-core.c
>> +++ b/drivers/leds/led-core.c
>> @@ -98,7 +98,10 @@ static void set_brightness_delayed(struct work_struct *ws)
>>                           led_cdev->delayed_set_value);
>>       else
>>           ret = -ENOTSUPP;
>> -    if (ret < 0)
>> +    if (ret < 0 &&
>> +        /* LED HW might have been unplugged, therefore don't warn */
>> +        !(ret == -ENODEV && (led_cdev->flags & LED_UNREGISTERING) &&
>> +        (led_cdev->flags & LED_HW_PLUGGABLE)))
>>           dev_err(led_cdev->dev,
>>               "Setting an LED's brightness failed (%d)\n", ret);
>>   }
>> diff --git a/include/linux/leds.h b/include/linux/leds.h
>> index 4429887..24413a8 100644
>> --- a/include/linux/leds.h
>> +++ b/include/linux/leds.h
>> @@ -39,6 +39,7 @@ struct led_classdev {
>>
>>       /* Lower 16 bits reflect status */
>>   #define LED_SUSPENDED        (1 << 0)
>> +#define LED_UNREGISTERING    (1 << 1)
>>       /* Upper 16 bits reflect control information */
>>   #define LED_CORE_SUSPENDRESUME    (1 << 16)
>>   #define LED_BLINK_ONESHOT    (1 << 17)
>> @@ -48,6 +49,7 @@ struct led_classdev {
>>   #define LED_BLINK_DISABLE    (1 << 21)
>>   #define LED_SYSFS_DISABLE    (1 << 22)
>>   #define LED_DEV_CAP_FLASH    (1 << 23)
>> +#define LED_HW_PLUGGABLE    (1 << 24)
>>
>>       /* Set LED brightness level */
>>       /* Must not sleep. If no non-blocking version can be provided
>>
> 
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-leds" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux