Lines Matching refs:vt8500
67 static inline void pwm_busy_wait(struct vt8500_chip *vt8500, int nr, u8 bitmask) in pwm_busy_wait() argument
72 while ((readl(vt8500->base + REG_STATUS) & mask) && --loops) in pwm_busy_wait()
76 dev_warn(vt8500->chip.dev, "Waiting for status bits 0x%x to clear timed out\n", in pwm_busy_wait()
83 struct vt8500_chip *vt8500 = to_vt8500_chip(chip); in vt8500_pwm_config() local
89 err = clk_enable(vt8500->clk); in vt8500_pwm_config()
95 c = clk_get_rate(vt8500->clk); in vt8500_pwm_config()
108 clk_disable(vt8500->clk); in vt8500_pwm_config()
116 writel(prescale, vt8500->base + REG_SCALAR(pwm->hwpwm)); in vt8500_pwm_config()
117 pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_SCALAR_UPDATE); in vt8500_pwm_config()
119 writel(pv, vt8500->base + REG_PERIOD(pwm->hwpwm)); in vt8500_pwm_config()
120 pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_PERIOD_UPDATE); in vt8500_pwm_config()
122 writel(dc, vt8500->base + REG_DUTY(pwm->hwpwm)); in vt8500_pwm_config()
123 pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_DUTY_UPDATE); in vt8500_pwm_config()
125 val = readl(vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_config()
127 writel(val, vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_config()
128 pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_CTRL_UPDATE); in vt8500_pwm_config()
130 clk_disable(vt8500->clk); in vt8500_pwm_config()
136 struct vt8500_chip *vt8500 = to_vt8500_chip(chip); in vt8500_pwm_enable() local
140 err = clk_enable(vt8500->clk); in vt8500_pwm_enable()
146 val = readl(vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_enable()
148 writel(val, vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_enable()
149 pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_CTRL_UPDATE); in vt8500_pwm_enable()
156 struct vt8500_chip *vt8500 = to_vt8500_chip(chip); in vt8500_pwm_disable() local
159 val = readl(vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_disable()
161 writel(val, vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_disable()
162 pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_CTRL_UPDATE); in vt8500_pwm_disable()
164 clk_disable(vt8500->clk); in vt8500_pwm_disable()
171 struct vt8500_chip *vt8500 = to_vt8500_chip(chip); in vt8500_pwm_set_polarity() local
174 val = readl(vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_set_polarity()
181 writel(val, vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_set_polarity()
182 pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_CTRL_UPDATE); in vt8500_pwm_set_polarity()