aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pwm/pwm-samsung.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pwm/pwm-samsung.c')
-rw-r--r--drivers/pwm/pwm-samsung.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/pwm/pwm-samsung.c b/drivers/pwm/pwm-samsung.c
index ada2d326dc3e..f113cda47032 100644
--- a/drivers/pwm/pwm-samsung.c
+++ b/drivers/pwm/pwm-samsung.c
@@ -193,9 +193,18 @@ static unsigned long pwm_samsung_calc_tin(struct samsung_pwm_chip *chip,
193 * divider settings and choose the lowest divisor that can generate 193 * divider settings and choose the lowest divisor that can generate
194 * frequencies lower than requested. 194 * frequencies lower than requested.
195 */ 195 */
196 for (div = variant->div_base; div < 4; ++div) 196 if (variant->bits < 32) {
197 if ((rate >> (variant->bits + div)) < freq) 197 /* Only for s3c24xx */
198 break; 198 for (div = variant->div_base; div < 4; ++div)
199 if ((rate >> (variant->bits + div)) < freq)
200 break;
201 } else {
202 /*
203 * Other variants have enough counter bits to generate any
204 * requested rate, so no need to check higher divisors.
205 */
206 div = variant->div_base;
207 }
199 208
200 pwm_samsung_set_divisor(chip, chan, BIT(div)); 209 pwm_samsung_set_divisor(chip, chan, BIT(div));
201 210