]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
pwm: jz4740: Implement ->set_polarity()
authorPaul Cercueil <paul@crapouillou.net>
Sat, 6 Jan 2018 16:58:41 +0000 (17:58 +0100)
committerThierry Reding <thierry.reding@gmail.com>
Tue, 27 Mar 2018 22:23:45 +0000 (00:23 +0200)
This permits clients of this driver to specify the polarity to use for
their PWM channel.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
drivers/pwm/pwm-jz4740.c

index 2e41ba213f39cae67d470610f2300ca9833ce5dd..6539c001fe32833692a5ff341e968c97aadfc3d8 100644 (file)
@@ -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,