mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
pwm: vt8500: Add polarity support
Add support to set polarity on PWM devices, allowing for inverted duty cycles. Also update the binding document to #pwm-cells = <3> to allow passing the flags from devicetree. Signed-off-by: Tony Prisk <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
This commit is contained in:
parent
8ab432caa4
commit
3ccb1c1702
2 changed files with 29 additions and 3 deletions
|
|
@ -164,10 +164,31 @@ static void vt8500_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
|
|||
clk_disable(vt8500->clk);
|
||||
}
|
||||
|
||||
static int vt8500_pwm_set_polarity(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
enum pwm_polarity polarity)
|
||||
{
|
||||
struct vt8500_chip *vt8500 = to_vt8500_chip(chip);
|
||||
u32 val;
|
||||
|
||||
val = readl(vt8500->base + REG_CTRL(pwm->hwpwm));
|
||||
|
||||
if (polarity == PWM_POLARITY_INVERSED)
|
||||
val |= CTRL_INVERT;
|
||||
else
|
||||
val &= ~CTRL_INVERT;
|
||||
|
||||
writel(val, vt8500->base + REG_CTRL(pwm->hwpwm));
|
||||
pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_CTRL_UPDATE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct pwm_ops vt8500_pwm_ops = {
|
||||
.enable = vt8500_pwm_enable,
|
||||
.disable = vt8500_pwm_disable,
|
||||
.config = vt8500_pwm_config,
|
||||
.set_polarity = vt8500_pwm_set_polarity,
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
|
|
@ -197,6 +218,8 @@ static int vt8500_pwm_probe(struct platform_device *pdev)
|
|||
|
||||
chip->chip.dev = &pdev->dev;
|
||||
chip->chip.ops = &vt8500_pwm_ops;
|
||||
chip->chip.of_xlate = of_pwm_xlate_with_flags;
|
||||
chip->chip.of_pwm_n_cells = 3;
|
||||
chip->chip.base = -1;
|
||||
chip->chip.npwm = VT8500_NR_PWMS;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue