diff options
author | Axel Lin <axel.lin@ingics.com> | 2013-04-23 02:02:49 -0400 |
---|---|---|
committer | Thierry Reding <thierry.reding@avionic-design.de> | 2013-04-23 04:58:47 -0400 |
commit | affb923df96d6c927f9a3dfb0e6f4be940b185cd (patch) | |
tree | 3f1c654c95946c04e465ab230fa5e61c30bb9dd8 | |
parent | 08ee77b5a5de27ad63c92262ebcb4efe0da93b58 (diff) |
pwm: lpc32xx: Don't change PWM_ENABLE bit in lpc32xx_pwm_config
lpc32xx_pwm_config() is supposed to set duty_ns and period_ns,
it should not change PWM_ENABLE bit.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Tested-by: Roland Stigge <stigge@antcom.de>
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
-rw-r--r-- | drivers/pwm/pwm-lpc32xx.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c index 6b6272f61da5..8272883c0d05 100644 --- a/drivers/pwm/pwm-lpc32xx.c +++ b/drivers/pwm/pwm-lpc32xx.c | |||
@@ -37,6 +37,7 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
37 | struct lpc32xx_pwm_chip *lpc32xx = to_lpc32xx_pwm_chip(chip); | 37 | struct lpc32xx_pwm_chip *lpc32xx = to_lpc32xx_pwm_chip(chip); |
38 | unsigned long long c; | 38 | unsigned long long c; |
39 | int period_cycles, duty_cycles; | 39 | int period_cycles, duty_cycles; |
40 | u32 val; | ||
40 | 41 | ||
41 | c = clk_get_rate(lpc32xx->clk) / 256; | 42 | c = clk_get_rate(lpc32xx->clk) / 256; |
42 | c = c * period_ns; | 43 | c = c * period_ns; |
@@ -68,8 +69,10 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
68 | c = 255; | 69 | c = 255; |
69 | duty_cycles = 256 - c; | 70 | duty_cycles = 256 - c; |
70 | 71 | ||
71 | writel(PWM_ENABLE | PWM_RELOADV(period_cycles) | PWM_DUTY(duty_cycles), | 72 | val = readl(lpc32xx->base + (pwm->hwpwm << 2)); |
72 | lpc32xx->base + (pwm->hwpwm << 2)); | 73 | val &= ~0xFFFF; |
74 | val |= PWM_RELOADV(period_cycles) | PWM_DUTY(duty_cycles); | ||
75 | writel(val, lpc32xx->base + (pwm->hwpwm << 2)); | ||
73 | 76 | ||
74 | return 0; | 77 | return 0; |
75 | } | 78 | } |