Lines Matching full:dwc
22 #include "pwm-dwc.h"
24 static void __dwc_pwm_set_enable(struct dwc_pwm *dwc, int pwm, int enabled) in __dwc_pwm_set_enable() argument
28 reg = dwc_pwm_readl(dwc, DWC_TIM_CTRL(pwm)); in __dwc_pwm_set_enable()
35 dwc_pwm_writel(dwc, reg, DWC_TIM_CTRL(pwm)); in __dwc_pwm_set_enable()
38 static int __dwc_pwm_configure_timer(struct dwc_pwm *dwc, in __dwc_pwm_configure_timer() argument
52 tmp = DIV_ROUND_CLOSEST_ULL(state->duty_cycle, dwc->clk_ns); in __dwc_pwm_configure_timer()
58 dwc->clk_ns); in __dwc_pwm_configure_timer()
70 __dwc_pwm_set_enable(dwc, pwm->hwpwm, false); in __dwc_pwm_configure_timer()
78 dwc_pwm_writel(dwc, low, DWC_TIM_LD_CNT(pwm->hwpwm)); in __dwc_pwm_configure_timer()
79 dwc_pwm_writel(dwc, high, DWC_TIM_LD_CNT2(pwm->hwpwm)); in __dwc_pwm_configure_timer()
88 dwc_pwm_writel(dwc, ctrl, DWC_TIM_CTRL(pwm->hwpwm)); in __dwc_pwm_configure_timer()
93 __dwc_pwm_set_enable(dwc, pwm->hwpwm, state->enabled); in __dwc_pwm_configure_timer()
101 struct dwc_pwm *dwc = to_dwc_pwm(chip); in dwc_pwm_apply() local
109 return __dwc_pwm_configure_timer(dwc, pwm, state); in dwc_pwm_apply()
112 __dwc_pwm_set_enable(dwc, pwm->hwpwm, false); in dwc_pwm_apply()
123 struct dwc_pwm *dwc = to_dwc_pwm(chip); in dwc_pwm_get_state() local
129 ctrl = dwc_pwm_readl(dwc, DWC_TIM_CTRL(pwm->hwpwm)); in dwc_pwm_get_state()
130 ld = dwc_pwm_readl(dwc, DWC_TIM_LD_CNT(pwm->hwpwm)); in dwc_pwm_get_state()
131 ld2 = dwc_pwm_readl(dwc, DWC_TIM_LD_CNT2(pwm->hwpwm)); in dwc_pwm_get_state()
140 duty = (ld + 1) * dwc->clk_ns; in dwc_pwm_get_state()
141 period = (ld2 + 1) * dwc->clk_ns; in dwc_pwm_get_state()
144 duty = (ld + 1) * dwc->clk_ns; in dwc_pwm_get_state()
164 struct dwc_pwm *dwc; in dwc_pwm_alloc() local
166 dwc = devm_kzalloc(dev, sizeof(*dwc), GFP_KERNEL); in dwc_pwm_alloc()
167 if (!dwc) in dwc_pwm_alloc()
170 dwc->clk_ns = 10; in dwc_pwm_alloc()
171 dwc->chip.dev = dev; in dwc_pwm_alloc()
172 dwc->chip.ops = &dwc_pwm_ops; in dwc_pwm_alloc()
173 dwc->chip.npwm = DWC_TIMERS_TOTAL; in dwc_pwm_alloc()
175 dev_set_drvdata(dev, dwc); in dwc_pwm_alloc()
176 return dwc; in dwc_pwm_alloc()