leds: leds-pwm: Set led_classdev max_brightness
Currently the driver leds-pwm doesn't set max_brightness for the led device although it's platform data proides a maximum brightness. Instead it stores its own private driver struct. The max_brightness defaults to 255 for led device if it has not been set. As a result any leds-pwm device with a different maximum brightness will show incorrect behavior, as it is posible to either set a longer then period duty time or not be able to switch the led to full brightness. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
parent
1998111582
commit
e45906203d
|
@ -27,7 +27,6 @@ struct led_pwm_data {
|
|||
struct pwm_device *pwm;
|
||||
unsigned int active_low;
|
||||
unsigned int period;
|
||||
unsigned int max_brightness;
|
||||
};
|
||||
|
||||
static void led_pwm_set(struct led_classdev *led_cdev,
|
||||
|
@ -35,7 +34,7 @@ static void led_pwm_set(struct led_classdev *led_cdev,
|
|||
{
|
||||
struct led_pwm_data *led_dat =
|
||||
container_of(led_cdev, struct led_pwm_data, cdev);
|
||||
unsigned int max = led_dat->max_brightness;
|
||||
unsigned int max = led_dat->cdev.max_brightness;
|
||||
unsigned int period = led_dat->period;
|
||||
|
||||
if (brightness == 0) {
|
||||
|
@ -77,10 +76,10 @@ static int led_pwm_probe(struct platform_device *pdev)
|
|||
led_dat->cdev.name = cur_led->name;
|
||||
led_dat->cdev.default_trigger = cur_led->default_trigger;
|
||||
led_dat->active_low = cur_led->active_low;
|
||||
led_dat->max_brightness = cur_led->max_brightness;
|
||||
led_dat->period = cur_led->pwm_period_ns;
|
||||
led_dat->cdev.brightness_set = led_pwm_set;
|
||||
led_dat->cdev.brightness = LED_OFF;
|
||||
led_dat->cdev.max_brightness = cur_led->max_brightness;
|
||||
led_dat->cdev.flags |= LED_CORE_SUSPENDRESUME;
|
||||
|
||||
ret = led_classdev_register(&pdev->dev, &led_dat->cdev);
|
||||
|
|
Loading…
Reference in New Issue