Skip to content

Commit 6ced5ff

Browse files
rayagondathierryreding
authored andcommitted
pwm: bcm-iproc: handle clk_get_rate() return
Handle clk_get_rate() returning 0 to avoid possible division by zero. Fixes: daa5abc ("pwm: Add support for Broadcom iProc PWM controller") Signed-off-by: Rayagonda Kokatanur <[email protected]> Signed-off-by: Scott Branden <[email protected]> Reviewed-by: Ray Jui <[email protected]> Reviewed-by: Uwe Kleine-König <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
1 parent 216a094 commit 6ced5ff

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

drivers/pwm/pwm-bcm-iproc.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,6 @@ static void iproc_pwmc_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
8585
u64 tmp, multi, rate;
8686
u32 value, prescale;
8787

88-
rate = clk_get_rate(ip->clk);
89-
9088
value = readl(ip->base + IPROC_PWM_CTRL_OFFSET);
9189

9290
if (value & BIT(IPROC_PWM_CTRL_EN_SHIFT(pwm->hwpwm)))
@@ -99,6 +97,13 @@ static void iproc_pwmc_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
9997
else
10098
state->polarity = PWM_POLARITY_INVERSED;
10199

100+
rate = clk_get_rate(ip->clk);
101+
if (rate == 0) {
102+
state->period = 0;
103+
state->duty_cycle = 0;
104+
return;
105+
}
106+
102107
value = readl(ip->base + IPROC_PWM_PRESCALE_OFFSET);
103108
prescale = value >> IPROC_PWM_PRESCALE_SHIFT(pwm->hwpwm);
104109
prescale &= IPROC_PWM_PRESCALE_MAX;

0 commit comments

Comments
 (0)