From: Russell King Date: Sun, 6 Apr 2014 22:20:18 +0000 (-0700) Subject: leds: leds-pwm: implement PWM inversion X-Git-Tag: firefly_0821_release~176^2~3769^2~6 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d19a8a7078a9a8e254c030bcdb6732d26cbd6c16;p=firefly-linux-kernel-4.4.55.git leds: leds-pwm: implement PWM inversion Some PWM outputs are wired such that the LED they're controlling is connected to supply rather than ground. These PWMs may not support output inversion, or when they do, disabling the PWM may set the PWM output low, causing a "brightness" value of zero to turn the LED fully on. The platform data for this driver already indicates that this was thought about, and we have the "active_low" property there already. However, the implementation for this is missing. Add the trivial implementation for this feature. Signed-off-by: Russell King Acked-by: Thierry Reding Signed-off-by: Bryan Wu --- diff --git a/drivers/leds/leds-pwm.c b/drivers/leds/leds-pwm.c index 35c1c5f144dc..8bd225df14de 100644 --- a/drivers/leds/leds-pwm.c +++ b/drivers/leds/leds-pwm.c @@ -69,6 +69,10 @@ static void led_pwm_set(struct led_classdev *led_cdev, duty *= brightness; do_div(duty, max); + + if (led_dat->active_low) + duty = led_dat->period - duty; + led_dat->duty = duty; if (led_dat->can_sleep)