mirror of https://gitee.com/openkylin/linux.git
leds: mt6323: move period calculation
clang static analysis reports this problem
leds-mt6323.c:275:12: warning: Division by zero
duty_hw = MT6323_CAL_HW_DUTY(*delay_on, period);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is because period can be 0.
period = *delay_on + *delay_off;
There is a later check that *delay_on/off are valid.
if (!*delay_on && !*delay_off) {
*delay_on = 500;
*delay_off = 500;
}
Setting the delay_on/off means period needs to be recalculated
anyway. So move the period statements after this check.
Fixes: 216ec6cc4c
("leds: Add LED support for MT6323 PMIC")
Signed-off-by: Tom Rix <trix@redhat.com>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
This commit is contained in:
parent
2d26684a4a
commit
fa31311c31
|
@ -248,15 +248,6 @@ static int mt6323_led_set_blink(struct led_classdev *cdev,
|
|||
u8 duty_hw;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Units are in ms, if over the hardware able
|
||||
* to support, fallback into software blink
|
||||
*/
|
||||
period = *delay_on + *delay_off;
|
||||
|
||||
if (period > MT6323_MAX_PERIOD)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* LED subsystem requires a default user
|
||||
* friendly blink pattern for the LED so using
|
||||
|
@ -268,6 +259,15 @@ static int mt6323_led_set_blink(struct led_classdev *cdev,
|
|||
*delay_off = 500;
|
||||
}
|
||||
|
||||
/*
|
||||
* Units are in ms, if over the hardware able
|
||||
* to support, fallback into software blink
|
||||
*/
|
||||
period = *delay_on + *delay_off;
|
||||
|
||||
if (period > MT6323_MAX_PERIOD)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* Calculate duty_hw based on the percentage of period during
|
||||
* which the led is ON.
|
||||
|
|
Loading…
Reference in New Issue