diff options
Diffstat (limited to 'drivers/pwm/pwm-lpss.c')
-rw-r--r-- | drivers/pwm/pwm-lpss.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/pwm/pwm-lpss.c b/drivers/pwm/pwm-lpss.c index 98dc8b80b79d..be4658b42882 100644 --- a/drivers/pwm/pwm-lpss.c +++ b/drivers/pwm/pwm-lpss.c | |||
@@ -91,7 +91,7 @@ static int pwm_lpss_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
91 | int duty_ns, int period_ns) | 91 | int duty_ns, int period_ns) |
92 | { | 92 | { |
93 | struct pwm_lpss_chip *lpwm = to_lpwm(chip); | 93 | struct pwm_lpss_chip *lpwm = to_lpwm(chip); |
94 | u8 on_time_div; | 94 | unsigned long long on_time_div; |
95 | unsigned long c, base_unit_range; | 95 | unsigned long c, base_unit_range; |
96 | unsigned long long base_unit, freq = NSEC_PER_SEC; | 96 | unsigned long long base_unit, freq = NSEC_PER_SEC; |
97 | u32 ctrl; | 97 | u32 ctrl; |
@@ -113,7 +113,9 @@ static int pwm_lpss_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
113 | 113 | ||
114 | if (duty_ns <= 0) | 114 | if (duty_ns <= 0) |
115 | duty_ns = 1; | 115 | duty_ns = 1; |
116 | on_time_div = 255 - (255 * duty_ns / period_ns); | 116 | on_time_div = 255ULL * duty_ns; |
117 | do_div(on_time_div, period_ns); | ||
118 | on_time_div = 255ULL - on_time_div; | ||
117 | 119 | ||
118 | pm_runtime_get_sync(chip->dev); | 120 | pm_runtime_get_sync(chip->dev); |
119 | 121 | ||