|
@@ -130,10 +130,29 @@ static int jz4740_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int jz4740_pwm_set_polarity(struct pwm_chip *chip,
|
|
|
+ struct pwm_device *pwm, enum pwm_polarity polarity)
|
|
|
+{
|
|
|
+ uint32_t ctrl = jz4740_timer_get_ctrl(pwm->pwm);
|
|
|
+
|
|
|
+ switch (polarity) {
|
|
|
+ case PWM_POLARITY_NORMAL:
|
|
|
+ ctrl &= ~JZ_TIMER_CTRL_PWM_ACTIVE_LOW;
|
|
|
+ break;
|
|
|
+ case PWM_POLARITY_INVERSED:
|
|
|
+ ctrl |= JZ_TIMER_CTRL_PWM_ACTIVE_LOW;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ jz4740_timer_set_ctrl(pwm->hwpwm, ctrl);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static const struct pwm_ops jz4740_pwm_ops = {
|
|
|
.request = jz4740_pwm_request,
|
|
|
.free = jz4740_pwm_free,
|
|
|
.config = jz4740_pwm_config,
|
|
|
+ .set_polarity = jz4740_pwm_set_polarity,
|
|
|
.enable = jz4740_pwm_enable,
|
|
|
.disable = jz4740_pwm_disable,
|
|
|
.owner = THIS_MODULE,
|