mirror of
https://github.com/openwrt/openwrt.git
synced 2025-03-21 03:25:22 +00:00
generic: silence led set_brightness error message
Currently, if the phy driver does not implement the led_brightness_set function, setting the LED will result in the following error message: leds mdio-bus:*:green:lan: Setting an LED's brightness failed (-524) Backport a patch to silence this error message. Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> Link: https://github.com/openwrt/openwrt/pull/18080 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
043df82cea
commit
3a1bc14733
@ -0,0 +1,57 @@
|
||||
From d33d1214a1ddf9e7e4d14c62637518252927f0be Mon Sep 17 00:00:00 2001
|
||||
From: Lee Jones <lee@kernel.org>
|
||||
Date: Wed, 12 Jun 2024 16:36:40 +0100
|
||||
Subject: [PATCH] leds: core: Omit set_brightness error message for a LED
|
||||
supporting hw trigger only
|
||||
|
||||
If both set_brightness functions return -ENOTSUPP, then the LED doesn't
|
||||
support setting a fixed brightness value, and the error message isn't
|
||||
helpful. This can be the case e.g. for LEDs supporting a specific hw
|
||||
trigger only.
|
||||
|
||||
Pinched the subject line and commit message from Heiner:
|
||||
Link: https://lore.kernel.org/all/44177e37-9512-4044-8991-bb23b184bf37@gmail.com/
|
||||
|
||||
Reworked the function to provide Heiner's required semantics whilst
|
||||
simultaneously increasing readability and flow.
|
||||
|
||||
Cc: Pavel Machek <pavel@ucw.cz>
|
||||
Cc: linux-leds@vger.kernel.org
|
||||
Suggested-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/leds/led-core.c | 19 +++++++++++++------
|
||||
1 file changed, 13 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/leds/led-core.c
|
||||
+++ b/drivers/leds/led-core.c
|
||||
@@ -122,15 +122,22 @@ static void led_timer_function(struct ti
|
||||
static void set_brightness_delayed_set_brightness(struct led_classdev *led_cdev,
|
||||
unsigned int value)
|
||||
{
|
||||
- int ret = 0;
|
||||
+ int ret;
|
||||
|
||||
ret = __led_set_brightness(led_cdev, value);
|
||||
- if (ret == -ENOTSUPP)
|
||||
+ if (ret == -ENOTSUPP) {
|
||||
ret = __led_set_brightness_blocking(led_cdev, value);
|
||||
- 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)))
|
||||
+ if (ret == -ENOTSUPP)
|
||||
+ /* No back-end support to set a fixed brightness value */
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* LED HW might have been unplugged, therefore don't warn */
|
||||
+ if (ret == -ENODEV && led_cdev->flags & LED_UNREGISTERING &&
|
||||
+ led_cdev->flags & LED_HW_PLUGGABLE)
|
||||
+ return;
|
||||
+
|
||||
+ if (ret < 0)
|
||||
dev_err(led_cdev->dev,
|
||||
"Setting an LED's brightness failed (%d)\n", ret);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user