mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
leds: pwm-multicolor: Support active-low LEDs
Add support for LEDs wired up to light when the PWM output is low, just like the regular PWM LEDs. Signed-off-by: Emil Renner Berthing <emil.renner.berthing@canonical.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Pavel Machek <pavel@ucw.cz>
This commit is contained in:
parent
83543c6e54
commit
3dd7ed589f
@ -19,6 +19,7 @@
|
||||
struct pwm_led {
|
||||
struct pwm_device *pwm;
|
||||
struct pwm_state state;
|
||||
bool active_low;
|
||||
};
|
||||
|
||||
struct pwm_mc_led {
|
||||
@ -45,6 +46,9 @@ static int led_pwm_mc_set(struct led_classdev *cdev,
|
||||
duty *= mc_cdev->subled_info[i].brightness;
|
||||
do_div(duty, cdev->max_brightness);
|
||||
|
||||
if (priv->leds[i].active_low)
|
||||
duty = priv->leds[i].state.period - duty;
|
||||
|
||||
priv->leds[i].state.duty_cycle = duty;
|
||||
priv->leds[i].state.enabled = duty > 0;
|
||||
ret = pwm_apply_state(priv->leds[i].pwm,
|
||||
@ -76,6 +80,7 @@ static int iterate_subleds(struct device *dev, struct pwm_mc_led *priv,
|
||||
goto release_fwnode;
|
||||
}
|
||||
pwm_init_state(pwmled->pwm, &pwmled->state);
|
||||
pwmled->active_low = fwnode_property_read_bool(fwnode, "active-low");
|
||||
|
||||
ret = fwnode_property_read_u32(fwnode, "color", &color);
|
||||
if (ret) {
|
||||
|
Loading…
Reference in New Issue
Block a user