diff options
Diffstat (limited to 'drivers/pwm/pwm-tiecap.c')
-rw-r--r-- | drivers/pwm/pwm-tiecap.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/pwm/pwm-tiecap.c b/drivers/pwm/pwm-tiecap.c index 3c2ad284ee3e..4b6688909fee 100644 --- a/drivers/pwm/pwm-tiecap.c +++ b/drivers/pwm/pwm-tiecap.c | |||
@@ -100,6 +100,13 @@ static int ecap_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
100 | writel(period_cycles, pc->mmio_base + CAP3); | 100 | writel(period_cycles, pc->mmio_base + CAP3); |
101 | } | 101 | } |
102 | 102 | ||
103 | if (!test_bit(PWMF_ENABLED, &pwm->flags)) { | ||
104 | reg_val = readw(pc->mmio_base + ECCTL2); | ||
105 | /* Disable APWM mode to put APWM output Low */ | ||
106 | reg_val &= ~ECCTL2_APWM_MODE; | ||
107 | writew(reg_val, pc->mmio_base + ECCTL2); | ||
108 | } | ||
109 | |||
103 | pm_runtime_put_sync(pc->chip.dev); | 110 | pm_runtime_put_sync(pc->chip.dev); |
104 | return 0; | 111 | return 0; |
105 | } | 112 | } |
@@ -192,10 +199,8 @@ static int __devinit ecap_pwm_probe(struct platform_device *pdev) | |||
192 | } | 199 | } |
193 | 200 | ||
194 | pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r); | 201 | pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r); |
195 | if (!pc->mmio_base) { | 202 | if (!pc->mmio_base) |
196 | dev_err(&pdev->dev, "failed to ioremap() registers\n"); | ||
197 | return -EADDRNOTAVAIL; | 203 | return -EADDRNOTAVAIL; |
198 | } | ||
199 | 204 | ||
200 | ret = pwmchip_add(&pc->chip); | 205 | ret = pwmchip_add(&pc->chip); |
201 | if (ret < 0) { | 206 | if (ret < 0) { |