* [PATCH] leds: set max_brightness to 1 for on/off-only drivers
@ 2026-08-25 7:10 MYYDAQ
2026-08-27 13:35 ` Lee Jones
0 siblings, 1 reply; 2+ messages in thread
From: MYYDAQ @ 2026-08-25 7:10 UTC (permalink / raw)
To: lee, pavel; +Cc: linux-leds, linux-kernel
The following drivers implement their brightness_set() callback as a
pure on/off switch: any nonzero brightness value turns the LED on, and
there is no way to request intermediate levels. They still keep the
default max_brightness of LED_FULL (255), so user space writing e.g.
"100" or "200" to the brightness sysfs attribute produces exactly the
same hardware state, which is misleading and violates the first item of
the drivers/leds/TODO list ("On/off LEDs should have max_brightness of
1").
Address this by setting max_brightness to 1 for all on/off-only LED
drivers in drivers/leds, and by using LED_ON instead of LED_FULL for
their initial brightness values and brightness_get() results:
ariel, bcm6328, bcm6358, cobalt-qube, cobalt-raq, hp6xx,
ipaq-micro, locomo, menf21bmc, net48xx, ot200, rb532, ss4200,
syscon, wrap
Signed-off-by: MYYDAQ <xmmntnbklsa917813@163.com>
---
drivers/leds/leds-ariel.c | 1 +
drivers/leds/leds-bcm6328.c | 3 ++-
drivers/leds/leds-bcm6358.c | 3 ++-
drivers/leds/leds-cobalt-qube.c | 3 ++-
drivers/leds/leds-cobalt-raq.c | 2 ++
drivers/leds/leds-hp6xx.c | 2 ++
drivers/leds/leds-ipaq-micro.c | 1 +
drivers/leds/leds-locomo.c | 2 ++
drivers/leds/leds-menf21bmc.c | 1 +
drivers/leds/leds-net48xx.c | 1 +
drivers/leds/leds-ot200.c | 1 +
drivers/leds/leds-rb532.c | 3 ++-
drivers/leds/leds-ss4200.c | 6 ++++--
drivers/leds/leds-syscon.c | 1 +
drivers/leds/leds-wrap.c | 3 +++
15 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/drivers/leds/leds-ariel.c b/drivers/leds/leds-ariel.c
index dd319c7..9f1a11d 100644
--- a/drivers/leds/leds-ariel.c
+++ b/drivers/leds/leds-ariel.c
@@ -111,6 +111,7 @@ static int ariel_led_probe(struct platform_device *pdev)
leds[i].led_cdev.brightness_get = ariel_led_get;
leds[i].led_cdev.brightness_set = ariel_led_set;
leds[i].led_cdev.blink_set = ariel_blink_set;
+ leds[i].led_cdev.max_brightness = 1;
ret = devm_led_classdev_register(dev, &leds[i].led_cdev);
if (ret)
diff --git a/drivers/leds/leds-bcm6328.c b/drivers/leds/leds-bcm6328.c
index 592bbf4..0ccffc6 100644
--- a/drivers/leds/leds-bcm6328.c
+++ b/drivers/leds/leds-bcm6328.c
@@ -366,7 +366,7 @@ static int bcm6328_led(struct device *dev, struct
device_node *nc, u32 reg,
val &= BCM6328_LED_MODE_MASK;
if ((led->active_low && val == BCM6328_LED_MODE_OFF) ||
(!led->active_low && val == BCM6328_LED_MODE_ON))
- led->cdev.brightness = LED_FULL;
+ led->cdev.brightness = LED_ON;
else
led->cdev.brightness = LED_OFF;
break;
@@ -378,6 +378,7 @@ static int bcm6328_led(struct device *dev, struct
device_node *nc, u32 reg,
led->cdev.brightness_set = bcm6328_led_set;
led->cdev.blink_set = bcm6328_blink_set;
+ led->cdev.max_brightness = 1;
rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
if (rc < 0)
diff --git a/drivers/leds/leds-bcm6358.c b/drivers/leds/leds-bcm6358.c
index 51fcff2..291a587 100644
--- a/drivers/leds/leds-bcm6358.c
+++ b/drivers/leds/leds-bcm6358.c
@@ -122,7 +122,7 @@ static int bcm6358_led(struct device *dev, struct
device_node *nc, u32 reg,
val = bcm6358_led_read(led->mem + BCM6358_REG_MODE);
val &= BIT(led->pin);
if ((led->active_low && !val) || (!led->active_low && val))
- led->cdev.brightness = LED_FULL;
+ led->cdev.brightness = LED_ON;
else
led->cdev.brightness = LED_OFF;
break;
@@ -133,6 +133,7 @@ static int bcm6358_led(struct device *dev, struct
device_node *nc, u32 reg,
bcm6358_led_set(&led->cdev, led->cdev.brightness);
led->cdev.brightness_set = bcm6358_led_set;
+ led->cdev.max_brightness = 1;
rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
if (rc < 0)
diff --git a/drivers/leds/leds-cobalt-qube.c
b/drivers/leds/leds-cobalt-qube.c
index ef22e1e..204d69e 100644
--- a/drivers/leds/leds-cobalt-qube.c
+++ b/drivers/leds/leds-cobalt-qube.c
@@ -29,7 +29,8 @@ static void qube_front_led_set(struct led_classdev
*led_cdev,
static struct led_classdev qube_front_led = {
.name = "qube::front",
- .brightness = LED_FULL,
+ .brightness = LED_ON,
+ .max_brightness = 1,
.brightness_set = qube_front_led_set,
.default_trigger = "default-on",
};
diff --git a/drivers/leds/leds-cobalt-raq.c b/drivers/leds/leds-cobalt-raq.c
index 045c239..4d1735d 100644
--- a/drivers/leds/leds-cobalt-raq.c
+++ b/drivers/leds/leds-cobalt-raq.c
@@ -39,6 +39,7 @@ static void raq_web_led_set(struct led_classdev *led_cdev,
static struct led_classdev raq_web_led = {
.name = "raq::web",
.brightness_set = raq_web_led_set,
+ .max_brightness = 1,
};
static void raq_power_off_led_set(struct led_classdev *led_cdev,
@@ -60,6 +61,7 @@ static void raq_power_off_led_set(struct led_classdev
*led_cdev,
static struct led_classdev raq_power_off_led = {
.name = "raq::power-off",
.brightness_set = raq_power_off_led_set,
+ .max_brightness = 1,
.default_trigger = "power-off",
};
diff --git a/drivers/leds/leds-hp6xx.c b/drivers/leds/leds-hp6xx.c
index 54af9e6..03a2638 100644
--- a/drivers/leds/leds-hp6xx.c
+++ b/drivers/leds/leds-hp6xx.c
@@ -42,6 +42,7 @@ static struct led_classdev hp6xx_red_led = {
.name = "hp6xx:red",
.default_trigger = "hp6xx-charge",
.brightness_set = hp6xxled_red_set,
+ .max_brightness = 1,
.flags = LED_CORE_SUSPENDRESUME,
};
@@ -49,6 +50,7 @@ static struct led_classdev hp6xx_green_led = {
.name = "hp6xx:green",
.default_trigger = "disk-activity",
.brightness_set = hp6xxled_green_set,
+ .max_brightness = 1,
.flags = LED_CORE_SUSPENDRESUME,
};
diff --git a/drivers/leds/leds-ipaq-micro.c b/drivers/leds/leds-ipaq-micro.c
index 504a95b..aae3e13 100644
--- a/drivers/leds/leds-ipaq-micro.c
+++ b/drivers/leds/leds-ipaq-micro.c
@@ -102,6 +102,7 @@ static struct led_classdev micro_led = {
.name = "led-ipaq-micro",
.brightness_set_blocking = micro_leds_brightness_set,
.blink_set = micro_leds_blink_set,
+ .max_brightness = 1,
.flags = LED_CORE_SUSPENDRESUME,
};
diff --git a/drivers/leds/leds-locomo.c b/drivers/leds/leds-locomo.c
index 9aa3fcc..8dc162f 100644
--- a/drivers/leds/leds-locomo.c
+++ b/drivers/leds/leds-locomo.c
@@ -43,12 +43,14 @@ static struct led_classdev locomo_led0 = {
.name = "locomo:amber:charge",
.default_trigger = "main-battery-charging",
.brightness_set = locomoled_brightness_set0,
+ .max_brightness = 1,
};
static struct led_classdev locomo_led1 = {
.name = "locomo:green:mail",
.default_trigger = "nand-disk",
.brightness_set = locomoled_brightness_set1,
+ .max_brightness = 1,
};
static int locomoled_probe(struct locomo_dev *ldev)
diff --git a/drivers/leds/leds-menf21bmc.c b/drivers/leds/leds-menf21bmc.c
index 6b1b471..8d7b234 100644
--- a/drivers/leds/leds-menf21bmc.c
+++ b/drivers/leds/leds-menf21bmc.c
@@ -82,6 +82,7 @@ static int menf21bmc_led_probe(struct platform_device
*pdev)
for (i = 0; i < ARRAY_SIZE(leds); i++) {
leds[i].cdev.name = leds[i].name;
leds[i].cdev.brightness_set = menf21bmc_led_set;
+ leds[i].cdev.max_brightness = 1;
leds[i].i2c_client = i2c_client;
ret = devm_led_classdev_register(&pdev->dev, &leds[i].cdev);
if (ret < 0) {
diff --git a/drivers/leds/leds-net48xx.c b/drivers/leds/leds-net48xx.c
index a93468c..1dd9dc5 100644
--- a/drivers/leds/leds-net48xx.c
+++ b/drivers/leds/leds-net48xx.c
@@ -31,6 +31,7 @@ static void net48xx_error_led_set(struct led_classdev
*led_cdev,
static struct led_classdev net48xx_error_led = {
.name = "net48xx::error",
.brightness_set = net48xx_error_led_set,
+ .max_brightness = 1,
.flags = LED_CORE_SUSPENDRESUME,
};
diff --git a/drivers/leds/leds-ot200.c b/drivers/leds/leds-ot200.c
index 12af112..17b72e3 100644
--- a/drivers/leds/leds-ot200.c
+++ b/drivers/leds/leds-ot200.c
@@ -123,6 +123,7 @@ static int ot200_led_probe(struct platform_device *pdev)
leds[i].cdev.name = leds[i].name;
leds[i].cdev.brightness_set = ot200_led_brightness_set;
+ leds[i].cdev.max_brightness = 1;
ret = devm_led_classdev_register(&pdev->dev, &leds[i].cdev);
if (ret < 0)
diff --git a/drivers/leds/leds-rb532.c b/drivers/leds/leds-rb532.c
index 782e1c1..aba17f5 100644
--- a/drivers/leds/leds-rb532.c
+++ b/drivers/leds/leds-rb532.c
@@ -27,12 +27,13 @@ static void rb532_led_set(struct led_classdev *cdev,
static enum led_brightness rb532_led_get(struct led_classdev *cdev)
{
- return (get_latch_u5() & LO_ULED) ? LED_FULL : LED_OFF;
+ return (get_latch_u5() & LO_ULED) ? LED_ON : LED_OFF;
}
static struct led_classdev rb532_uled = {
.name = "uled",
.brightness_set = rb532_led_set,
+ .max_brightness = 1,
.brightness_get = rb532_led_get,
.default_trigger = "nand-disk",
};
diff --git a/drivers/leds/leds-ss4200.c b/drivers/leds/leds-ss4200.c
index f24ca75..726b608 100644
--- a/drivers/leds/leds-ss4200.c
+++ b/drivers/leds/leds-ss4200.c
@@ -214,7 +214,8 @@ static u32 nasgpio_led_get_attr(struct led_classdev
*led_cdev, u32 port)
/*
* There is actual brightness control in the hardware,
* but it is via smbus commands and not implemented
- * in this driver.
+ * in this driver, so the LED is treated as on/off and
+ * max_brightness is set to 1.
*/
static void nasgpio_led_set_brightness(struct led_classdev *led_cdev,
enum led_brightness brightness)
@@ -487,9 +488,10 @@ static int register_nasgpio_led(int led_nr)
led->name = nas_led->name;
led->brightness = LED_OFF;
if (nasgpio_led_get_attr(led, GP_LVL))
- led->brightness = LED_FULL;
+ led->brightness = LED_ON;
led->brightness_set = nasgpio_led_set_brightness;
led->blink_set = nasgpio_led_set_blink;
+ led->max_brightness = 1;
led->groups = nasgpio_led_groups;
return led_classdev_register(&nas_gpio_pci_dev->dev, led);
diff --git a/drivers/leds/leds-syscon.c b/drivers/leds/leds-syscon.c
index d633ad5..acee7db 100644
--- a/drivers/leds/leds-syscon.c
+++ b/drivers/leds/leds-syscon.c
@@ -110,6 +110,7 @@ static int syscon_led_probe(struct platform_device
*pdev)
sled->state = false;
}
sled->cdev.brightness_set = syscon_led_set;
+ sled->cdev.max_brightness = 1;
ret = devm_led_classdev_register_ext(dev, &sled->cdev, &init_data);
if (ret < 0)
diff --git a/drivers/leds/leds-wrap.c b/drivers/leds/leds-wrap.c
index 794697e..348c06b 100644
--- a/drivers/leds/leds-wrap.c
+++ b/drivers/leds/leds-wrap.c
@@ -53,6 +53,7 @@ static void wrap_extra_led_set(struct led_classdev
*led_cdev,
static struct led_classdev wrap_power_led = {
.name = "wrap::power",
.brightness_set = wrap_power_led_set,
+ .max_brightness = 1,
.default_trigger = "default-on",
.flags = LED_CORE_SUSPENDRESUME,
};
@@ -60,12 +61,14 @@ static struct led_classdev wrap_power_led = {
static struct led_classdev wrap_error_led = {
.name = "wrap::error",
.brightness_set = wrap_error_led_set,
+ .max_brightness = 1,
.flags = LED_CORE_SUSPENDRESUME,
};
static struct led_classdev wrap_extra_led = {
.name = "wrap::extra",
.brightness_set = wrap_extra_led_set,
+ .max_brightness = 1,
.flags = LED_CORE_SUSPENDRESUME,
};
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] leds: set max_brightness to 1 for on/off-only drivers
2026-08-25 7:10 [PATCH] leds: set max_brightness to 1 for on/off-only drivers MYYDAQ
@ 2026-08-27 13:35 ` Lee Jones
0 siblings, 0 replies; 2+ messages in thread
From: Lee Jones @ 2026-08-27 13:35 UTC (permalink / raw)
To: MYYDAQ; +Cc: pavel, linux-leds, linux-kernel
On Tue, 25 Aug 2026, MYYDAQ wrote:
> The following drivers implement their brightness_set() callback as a
> pure on/off switch: any nonzero brightness value turns the LED on, and
> there is no way to request intermediate levels. They still keep the
> default max_brightness of LED_FULL (255), so user space writing e.g.
> "100" or "200" to the brightness sysfs attribute produces exactly the
> same hardware state, which is misleading and violates the first item of
> the drivers/leds/TODO list ("On/off LEDs should have max_brightness of
> 1").
>
> Address this by setting max_brightness to 1 for all on/off-only LED
> drivers in drivers/leds, and by using LED_ON instead of LED_FULL for
> their initial brightness values and brightness_get() results:
>
> ariel, bcm6328, bcm6358, cobalt-qube, cobalt-raq, hp6xx,
> ipaq-micro, locomo, menf21bmc, net48xx, ot200, rb532, ss4200,
> syscon, wrap
I'm guessing this patch was created with AI, right?
> Signed-off-by: MYYDAQ <xmmntnbklsa917813@163.com>
Could you please sign off using your full, real name? The 'Signed-off-by' tag
requires a real name rather than a pseudonym or username.
> ---
> drivers/leds/leds-ariel.c | 1 +
> drivers/leds/leds-bcm6328.c | 3 ++-
> drivers/leds/leds-bcm6358.c | 3 ++-
> drivers/leds/leds-cobalt-qube.c | 3 ++-
> drivers/leds/leds-cobalt-raq.c | 2 ++
> drivers/leds/leds-hp6xx.c | 2 ++
> drivers/leds/leds-ipaq-micro.c | 1 +
> drivers/leds/leds-locomo.c | 2 ++
> drivers/leds/leds-menf21bmc.c | 1 +
> drivers/leds/leds-net48xx.c | 1 +
> drivers/leds/leds-ot200.c | 1 +
> drivers/leds/leds-rb532.c | 3 ++-
> drivers/leds/leds-ss4200.c | 6 ++++--
> drivers/leds/leds-syscon.c | 1 +
> drivers/leds/leds-wrap.c | 3 +++
> 15 files changed, 27 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/leds/leds-ariel.c b/drivers/leds/leds-ariel.c
> index dd319c7..9f1a11d 100644
> --- a/drivers/leds/leds-ariel.c
> +++ b/drivers/leds/leds-ariel.c
> @@ -111,6 +111,7 @@ static int ariel_led_probe(struct platform_device *pdev)
> leds[i].led_cdev.brightness_get = ariel_led_get;
> leds[i].led_cdev.brightness_set = ariel_led_set;
> leds[i].led_cdev.blink_set = ariel_blink_set;
> + leds[i].led_cdev.max_brightness = 1;
Use tabs, not spaces.
Did you run `checkpatch.pl`?
> ret = devm_led_classdev_register(dev, &leds[i].led_cdev);
> if (ret)
> diff --git a/drivers/leds/leds-bcm6328.c b/drivers/leds/leds-bcm6328.c
> index 592bbf4..0ccffc6 100644
> --- a/drivers/leds/leds-bcm6328.c
> +++ b/drivers/leds/leds-bcm6328.c
> @@ -366,7 +366,7 @@ static int bcm6328_led(struct device *dev, struct
> device_node *nc, u32 reg,
> val &= BCM6328_LED_MODE_MASK;
> if ((led->active_low && val == BCM6328_LED_MODE_OFF) ||
> (!led->active_low && val == BCM6328_LED_MODE_ON))
> - led->cdev.brightness = LED_FULL;
> + led->cdev.brightness = LED_ON;
> else
> led->cdev.brightness = LED_OFF;
> break;
> @@ -378,6 +378,7 @@ static int bcm6328_led(struct device *dev, struct
> device_node *nc, u32 reg,
>
> led->cdev.brightness_set = bcm6328_led_set;
> led->cdev.blink_set = bcm6328_blink_set;
> + led->cdev.max_brightness = 1;
>
> rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
> if (rc < 0)
> diff --git a/drivers/leds/leds-bcm6358.c b/drivers/leds/leds-bcm6358.c
> index 51fcff2..291a587 100644
> --- a/drivers/leds/leds-bcm6358.c
> +++ b/drivers/leds/leds-bcm6358.c
> @@ -122,7 +122,7 @@ static int bcm6358_led(struct device *dev, struct
> device_node *nc, u32 reg,
> val = bcm6358_led_read(led->mem + BCM6358_REG_MODE);
> val &= BIT(led->pin);
> if ((led->active_low && !val) || (!led->active_low && val))
> - led->cdev.brightness = LED_FULL;
> + led->cdev.brightness = LED_ON;
> else
> led->cdev.brightness = LED_OFF;
> break;
> @@ -133,6 +133,7 @@ static int bcm6358_led(struct device *dev, struct
> device_node *nc, u32 reg,
> bcm6358_led_set(&led->cdev, led->cdev.brightness);
>
> led->cdev.brightness_set = bcm6358_led_set;
> + led->cdev.max_brightness = 1;
>
> rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
> if (rc < 0)
> diff --git a/drivers/leds/leds-cobalt-qube.c
> b/drivers/leds/leds-cobalt-qube.c
> index ef22e1e..204d69e 100644
> --- a/drivers/leds/leds-cobalt-qube.c
> +++ b/drivers/leds/leds-cobalt-qube.c
> @@ -29,7 +29,8 @@ static void qube_front_led_set(struct led_classdev
> *led_cdev,
>
> static struct led_classdev qube_front_led = {
> .name = "qube::front",
> - .brightness = LED_FULL,
> + .brightness = LED_ON,
> + .max_brightness = 1,
Some odd alignment issues going on here.
> .brightness_set = qube_front_led_set,
> .default_trigger = "default-on",
> };
> diff --git a/drivers/leds/leds-cobalt-raq.c b/drivers/leds/leds-cobalt-raq.c
> index 045c239..4d1735d 100644
> --- a/drivers/leds/leds-cobalt-raq.c
> +++ b/drivers/leds/leds-cobalt-raq.c
> @@ -39,6 +39,7 @@ static void raq_web_led_set(struct led_classdev *led_cdev,
> static struct led_classdev raq_web_led = {
> .name = "raq::web",
> .brightness_set = raq_web_led_set,
> + .max_brightness = 1,
> };
>
> static void raq_power_off_led_set(struct led_classdev *led_cdev,
> @@ -60,6 +61,7 @@ static void raq_power_off_led_set(struct led_classdev
> *led_cdev,
> static struct led_classdev raq_power_off_led = {
> .name = "raq::power-off",
> .brightness_set = raq_power_off_led_set,
> + .max_brightness = 1,
> .default_trigger = "power-off",
> };
>
> diff --git a/drivers/leds/leds-hp6xx.c b/drivers/leds/leds-hp6xx.c
> index 54af9e6..03a2638 100644
> --- a/drivers/leds/leds-hp6xx.c
> +++ b/drivers/leds/leds-hp6xx.c
> @@ -42,6 +42,7 @@ static struct led_classdev hp6xx_red_led = {
> .name = "hp6xx:red",
> .default_trigger = "hp6xx-charge",
> .brightness_set = hp6xxled_red_set,
> + .max_brightness = 1,
> .flags = LED_CORE_SUSPENDRESUME,
> };
>
> @@ -49,6 +50,7 @@ static struct led_classdev hp6xx_green_led = {
> .name = "hp6xx:green",
> .default_trigger = "disk-activity",
> .brightness_set = hp6xxled_green_set,
> + .max_brightness = 1,
> .flags = LED_CORE_SUSPENDRESUME,
> };
>
> diff --git a/drivers/leds/leds-ipaq-micro.c b/drivers/leds/leds-ipaq-micro.c
> index 504a95b..aae3e13 100644
> --- a/drivers/leds/leds-ipaq-micro.c
> +++ b/drivers/leds/leds-ipaq-micro.c
> @@ -102,6 +102,7 @@ static struct led_classdev micro_led = {
> .name = "led-ipaq-micro",
> .brightness_set_blocking = micro_leds_brightness_set,
> .blink_set = micro_leds_blink_set,
> + .max_brightness = 1,
> .flags = LED_CORE_SUSPENDRESUME,
> };
>
> diff --git a/drivers/leds/leds-locomo.c b/drivers/leds/leds-locomo.c
> index 9aa3fcc..8dc162f 100644
> --- a/drivers/leds/leds-locomo.c
> +++ b/drivers/leds/leds-locomo.c
> @@ -43,12 +43,14 @@ static struct led_classdev locomo_led0 = {
> .name = "locomo:amber:charge",
> .default_trigger = "main-battery-charging",
> .brightness_set = locomoled_brightness_set0,
> + .max_brightness = 1,
> };
>
> static struct led_classdev locomo_led1 = {
> .name = "locomo:green:mail",
> .default_trigger = "nand-disk",
> .brightness_set = locomoled_brightness_set1,
> + .max_brightness = 1,
> };
>
> static int locomoled_probe(struct locomo_dev *ldev)
> diff --git a/drivers/leds/leds-menf21bmc.c b/drivers/leds/leds-menf21bmc.c
> index 6b1b471..8d7b234 100644
> --- a/drivers/leds/leds-menf21bmc.c
> +++ b/drivers/leds/leds-menf21bmc.c
> @@ -82,6 +82,7 @@ static int menf21bmc_led_probe(struct platform_device
> *pdev)
> for (i = 0; i < ARRAY_SIZE(leds); i++) {
> leds[i].cdev.name = leds[i].name;
> leds[i].cdev.brightness_set = menf21bmc_led_set;
> + leds[i].cdev.max_brightness = 1;
> leds[i].i2c_client = i2c_client;
> ret = devm_led_classdev_register(&pdev->dev, &leds[i].cdev);
> if (ret < 0) {
> diff --git a/drivers/leds/leds-net48xx.c b/drivers/leds/leds-net48xx.c
> index a93468c..1dd9dc5 100644
> --- a/drivers/leds/leds-net48xx.c
> +++ b/drivers/leds/leds-net48xx.c
> @@ -31,6 +31,7 @@ static void net48xx_error_led_set(struct led_classdev
> *led_cdev,
> static struct led_classdev net48xx_error_led = {
> .name = "net48xx::error",
> .brightness_set = net48xx_error_led_set,
> + .max_brightness = 1,
> .flags = LED_CORE_SUSPENDRESUME,
> };
>
> diff --git a/drivers/leds/leds-ot200.c b/drivers/leds/leds-ot200.c
> index 12af112..17b72e3 100644
> --- a/drivers/leds/leds-ot200.c
> +++ b/drivers/leds/leds-ot200.c
> @@ -123,6 +123,7 @@ static int ot200_led_probe(struct platform_device *pdev)
>
> leds[i].cdev.name = leds[i].name;
> leds[i].cdev.brightness_set = ot200_led_brightness_set;
> + leds[i].cdev.max_brightness = 1;
>
> ret = devm_led_classdev_register(&pdev->dev, &leds[i].cdev);
> if (ret < 0)
> diff --git a/drivers/leds/leds-rb532.c b/drivers/leds/leds-rb532.c
> index 782e1c1..aba17f5 100644
> --- a/drivers/leds/leds-rb532.c
> +++ b/drivers/leds/leds-rb532.c
> @@ -27,12 +27,13 @@ static void rb532_led_set(struct led_classdev *cdev,
>
> static enum led_brightness rb532_led_get(struct led_classdev *cdev)
> {
> - return (get_latch_u5() & LO_ULED) ? LED_FULL : LED_OFF;
> + return (get_latch_u5() & LO_ULED) ? LED_ON : LED_OFF;
> }
>
> static struct led_classdev rb532_uled = {
> .name = "uled",
> .brightness_set = rb532_led_set,
> + .max_brightness = 1,
> .brightness_get = rb532_led_get,
> .default_trigger = "nand-disk",
> };
> diff --git a/drivers/leds/leds-ss4200.c b/drivers/leds/leds-ss4200.c
> index f24ca75..726b608 100644
> --- a/drivers/leds/leds-ss4200.c
> +++ b/drivers/leds/leds-ss4200.c
> @@ -214,7 +214,8 @@ static u32 nasgpio_led_get_attr(struct led_classdev
> *led_cdev, u32 port)
> /*
> * There is actual brightness control in the hardware,
> * but it is via smbus commands and not implemented
> - * in this driver.
> + * in this driver, so the LED is treated as on/off and
> + * max_brightness is set to 1.
> */
> static void nasgpio_led_set_brightness(struct led_classdev *led_cdev,
> enum led_brightness brightness)
> @@ -487,9 +488,10 @@ static int register_nasgpio_led(int led_nr)
> led->name = nas_led->name;
> led->brightness = LED_OFF;
> if (nasgpio_led_get_attr(led, GP_LVL))
> - led->brightness = LED_FULL;
> + led->brightness = LED_ON;
> led->brightness_set = nasgpio_led_set_brightness;
> led->blink_set = nasgpio_led_set_blink;
> + led->max_brightness = 1;
> led->groups = nasgpio_led_groups;
>
> return led_classdev_register(&nas_gpio_pci_dev->dev, led);
> diff --git a/drivers/leds/leds-syscon.c b/drivers/leds/leds-syscon.c
> index d633ad5..acee7db 100644
> --- a/drivers/leds/leds-syscon.c
> +++ b/drivers/leds/leds-syscon.c
> @@ -110,6 +110,7 @@ static int syscon_led_probe(struct platform_device
> *pdev)
> sled->state = false;
> }
> sled->cdev.brightness_set = syscon_led_set;
> + sled->cdev.max_brightness = 1;
>
> ret = devm_led_classdev_register_ext(dev, &sled->cdev, &init_data);
> if (ret < 0)
> diff --git a/drivers/leds/leds-wrap.c b/drivers/leds/leds-wrap.c
> index 794697e..348c06b 100644
> --- a/drivers/leds/leds-wrap.c
> +++ b/drivers/leds/leds-wrap.c
> @@ -53,6 +53,7 @@ static void wrap_extra_led_set(struct led_classdev
> *led_cdev,
> static struct led_classdev wrap_power_led = {
> .name = "wrap::power",
> .brightness_set = wrap_power_led_set,
> + .max_brightness = 1,
> .default_trigger = "default-on",
> .flags = LED_CORE_SUSPENDRESUME,
> };
> @@ -60,12 +61,14 @@ static struct led_classdev wrap_power_led = {
> static struct led_classdev wrap_error_led = {
> .name = "wrap::error",
> .brightness_set = wrap_error_led_set,
> + .max_brightness = 1,
> .flags = LED_CORE_SUSPENDRESUME,
> };
>
> static struct led_classdev wrap_extra_led = {
> .name = "wrap::extra",
> .brightness_set = wrap_extra_led_set,
> + .max_brightness = 1,
> .flags = LED_CORE_SUSPENDRESUME,
> };
>
--
Lee Jones
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-27 13:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-25 7:10 [PATCH] leds: set max_brightness to 1 for on/off-only drivers MYYDAQ
2026-08-27 13:35 ` Lee Jones
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®