diff options
Diffstat (limited to 'drivers/pwm/pwm-samsung.c')
-rw-r--r-- | drivers/pwm/pwm-samsung.c | 15 |
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 | ||