Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

leds: pwm: Add optional DT property default-brightness

When probing if default LED state is on then default brightness will be
applied instead of max brightness.

Signed-off-by: George Stark <gnstark@salutedevices.com>
Link: https://lore.kernel.org/r/20241105185006.1380166-3-gnstark@salutedevices.com
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

George Stark and committed by
Lee Jones
8cb08101 44e04fb8

+16 -1
+16 -1
drivers/leds/leds-pwm.c
··· 62 62 return pwm_apply_might_sleep(led_dat->pwm, &led_dat->pwmstate); 63 63 } 64 64 65 + static int led_pwm_default_brightness_get(struct fwnode_handle *fwnode, 66 + int max_brightness) 67 + { 68 + unsigned int default_brightness; 69 + int ret; 70 + 71 + ret = fwnode_property_read_u32(fwnode, "default-brightness", 72 + &default_brightness); 73 + if (ret < 0 || default_brightness > max_brightness) 74 + default_brightness = max_brightness; 75 + 76 + return default_brightness; 77 + } 78 + 65 79 __attribute__((nonnull)) 66 80 static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv, 67 81 struct led_pwm *led, struct fwnode_handle *fwnode) ··· 117 103 /* set brightness */ 118 104 switch (led->default_state) { 119 105 case LEDS_DEFSTATE_ON: 120 - led_data->cdev.brightness = led->max_brightness; 106 + led_data->cdev.brightness = 107 + led_pwm_default_brightness_get(fwnode, led->max_brightness); 121 108 break; 122 109 case LEDS_DEFSTATE_KEEP: 123 110 {