Lines Matching defs:ddata

65 static inline u32 pwm_loongson_readl(struct pwm_loongson_ddata *ddata, u32 offset)
67 return readl(ddata->base + offset);
70 static inline void pwm_loongson_writel(struct pwm_loongson_ddata *ddata,
73 writel(val, ddata->base + offset);
80 struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
82 val = pwm_loongson_readl(ddata, LOONGSON_PWM_REG_CTRL);
91 pwm_loongson_writel(ddata, val, LOONGSON_PWM_REG_CTRL);
99 struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
101 val = pwm_loongson_readl(ddata, LOONGSON_PWM_REG_CTRL);
103 pwm_loongson_writel(ddata, val, LOONGSON_PWM_REG_CTRL);
109 struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
111 val = pwm_loongson_readl(ddata, LOONGSON_PWM_REG_CTRL);
113 pwm_loongson_writel(ddata, val, LOONGSON_PWM_REG_CTRL);
122 struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
124 /* duty = duty_ns * ddata->clk_rate / NSEC_PER_SEC */
125 duty = mul_u64_u64_div_u64(duty_ns, ddata->clk_rate, NSEC_PER_SEC);
129 /* period = period_ns * ddata->clk_rate / NSEC_PER_SEC */
130 period = mul_u64_u64_div_u64(period_ns, ddata->clk_rate, NSEC_PER_SEC);
134 pwm_loongson_writel(ddata, duty, LOONGSON_PWM_REG_DUTY);
135 pwm_loongson_writel(ddata, period, LOONGSON_PWM_REG_PERIOD);
170 struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
172 duty = pwm_loongson_readl(ddata, LOONGSON_PWM_REG_DUTY);
173 period = pwm_loongson_readl(ddata, LOONGSON_PWM_REG_PERIOD);
174 ctrl = pwm_loongson_readl(ddata, LOONGSON_PWM_REG_CTRL);
177 state->duty_cycle = DIV64_U64_ROUND_UP((u64)duty * NSEC_PER_SEC, ddata->clk_rate);
178 state->period = DIV64_U64_ROUND_UP((u64)period * NSEC_PER_SEC, ddata->clk_rate);
195 struct pwm_loongson_ddata *ddata;
198 chip = devm_pwmchip_alloc(dev, 1, sizeof(*ddata));
201 ddata = to_pwm_loongson_ddata(chip);
203 ddata->base = devm_platform_ioremap_resource(pdev, 0);
204 if (IS_ERR(ddata->base))
205 return PTR_ERR(ddata->base);
207 ddata->clk = devm_clk_get_optional_enabled(dev, NULL);
208 if (IS_ERR(ddata->clk))
209 return dev_err_probe(dev, PTR_ERR(ddata->clk),
211 if (ddata->clk) {
212 ret = devm_clk_rate_exclusive_get(dev, ddata->clk);
217 ddata->clk_rate = clk_get_rate(ddata->clk);
218 if (!ddata->clk_rate)
222 ddata->clk_rate = LOONGSON_PWM_FREQ_DEFAULT;
226 if (ddata->clk_rate > NSEC_PER_SEC)
243 struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
249 clk_disable_unprepare(ddata->clk);
257 struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
259 return clk_prepare_enable(ddata->clk);