MXC: pwm driver fixes
authorSascha Hauer <s.hauer@pengutronix.de>
Fri, 19 Jun 2009 09:35:08 +0000 (11:35 +0200)
committerSascha Hauer <s.hauer@pengutronix.de>
Fri, 7 Aug 2009 10:11:10 +0000 (12:11 +0200)
- fix off-by-one error in divider calculation
- disable pwm in pwm_disable

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
arch/arm/plat-mxc/pwm.c

index ae34198..42dd17b 100644 (file)
@@ -72,7 +72,7 @@ int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)
 
                writel(duty_cycles, pwm->mmio_base + MX3_PWMSAR);
                writel(period_cycles, pwm->mmio_base + MX3_PWMPR);
-               writel(MX3_PWMCR_PRESCALER(prescale - 1) |
+               writel(MX3_PWMCR_PRESCALER(prescale) |
                        MX3_PWMCR_CLKSRC_IPG_HIGH | MX3_PWMCR_EN,
                        pwm->mmio_base + MX3_PWMCR);
        } else if (cpu_is_mx1() || cpu_is_mx21()) {
@@ -118,6 +118,8 @@ EXPORT_SYMBOL(pwm_enable);
 
 void pwm_disable(struct pwm_device *pwm)
 {
+       writel(0, pwm->mmio_base + MX3_PWMCR);
+
        if (pwm->clk_enabled) {
                clk_disable(pwm->clk);
                pwm->clk_enabled = 0;