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 3c2ad284ee3..4b6688909fe 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,  		writel(period_cycles, pc->mmio_base + CAP3);  	} +	if (!test_bit(PWMF_ENABLED, &pwm->flags)) { +		reg_val = readw(pc->mmio_base + ECCTL2); +		/* Disable APWM mode to put APWM output Low */ +		reg_val &= ~ECCTL2_APWM_MODE; +		writew(reg_val, pc->mmio_base + ECCTL2); +	} +  	pm_runtime_put_sync(pc->chip.dev);  	return 0;  } @@ -192,10 +199,8 @@ static int __devinit ecap_pwm_probe(struct platform_device *pdev)  	}  	pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r); -	if (!pc->mmio_base) { -		dev_err(&pdev->dev, "failed to ioremap() registers\n"); +	if (!pc->mmio_base)  		return -EADDRNOTAVAIL; -	}  	ret = pwmchip_add(&pc->chip);  	if (ret < 0) {  |