Commit 8cb08101 authored by George Stark's avatar George Stark Committed by Lee Jones
Browse files

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: default avatarGeorge Stark <gnstark@salutedevices.com>
Link: https://lore.kernel.org/r/20241105185006.1380166-3-gnstark@salutedevices.com


Signed-off-by: default avatarLee Jones <lee@kernel.org>
parent 44e04fb8
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -62,6 +62,20 @@ static int led_pwm_set(struct led_classdev *led_cdev,
	return pwm_apply_might_sleep(led_dat->pwm, &led_dat->pwmstate);
}

static int led_pwm_default_brightness_get(struct fwnode_handle *fwnode,
					  int max_brightness)
{
	unsigned int default_brightness;
	int ret;

	ret = fwnode_property_read_u32(fwnode, "default-brightness",
				       &default_brightness);
	if (ret < 0 || default_brightness > max_brightness)
		default_brightness = max_brightness;

	return default_brightness;
}

__attribute__((nonnull))
static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
		       struct led_pwm *led, struct fwnode_handle *fwnode)
@@ -103,7 +117,8 @@ static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
	/* set brightness */
	switch (led->default_state) {
	case LEDS_DEFSTATE_ON:
		led_data->cdev.brightness = led->max_brightness;
		led_data->cdev.brightness =
			led_pwm_default_brightness_get(fwnode, led->max_brightness);
		break;
	case LEDS_DEFSTATE_KEEP:
		{