diff --git a/drivers/pwm/ecap.c b/drivers/pwm/ecap.c
index 63c240573a22f3937a6a3121717b843740cc38c1..a75ef36f26d4bf60125c4d0cf8fe2a4db401fdf7 100644 (file)
--- a/drivers/pwm/ecap.c
+++ b/drivers/pwm/ecap.c
spin_lock_irqsave(&ep->lock, flags);
v = readw(ep->mmio_base + CAPTURE_CTRL2_REG);
v &= ~ECTRL2_PLSL_LOW;
- v |= (!pol << 10);
+ v |= pol << 10;
writew(v, ep->mmio_base + CAPTURE_CTRL2_REG);
spin_unlock_irqrestore(&ep->lock, flags);
break;
case BIT(PWM_CONFIG_POLARITY):
+ p->active_high = c->polarity;
ret = ecap_pwm_set_polarity(p, c->polarity);
break;
pwm_set_drvdata(&ep->pwm, ep);
ret = pwm_register(&ep->pwm, &pdev->dev, -1);
platform_set_drvdata(pdev, ep);
+ /* Inverse the polarity of PWM wave */
+ if (pdata->chan_attrib[0].inverse_pol) {
+ ep->pwm.active_high = 1;
+ ecap_pwm_set_polarity(&ep->pwm, 1);
+ }
return 0;
err_ioremap: