Lines Matching refs:pwm
33 struct pwm_device *pwm; member
41 static int __set_pwm(struct pwm_fan_ctx *ctx, unsigned long pwm) in __set_pwm() argument
47 if (ctx->pwm_value == pwm) in __set_pwm()
50 duty = DIV_ROUND_UP(pwm * (ctx->pwm->period - 1), MAX_PWM); in __set_pwm()
51 ret = pwm_config(ctx->pwm, duty, ctx->pwm->period); in __set_pwm()
55 if (pwm == 0) in __set_pwm()
56 pwm_disable(ctx->pwm); in __set_pwm()
59 ret = pwm_enable(ctx->pwm); in __set_pwm()
64 ctx->pwm_value = pwm; in __set_pwm()
70 static void pwm_fan_update_state(struct pwm_fan_ctx *ctx, unsigned long pwm) in pwm_fan_update_state() argument
75 if (pwm < ctx->pwm_fan_cooling_levels[i + 1]) in pwm_fan_update_state()
85 unsigned long pwm; in set_pwm() local
88 if (kstrtoul(buf, 10, &pwm) || pwm > MAX_PWM) in set_pwm()
91 ret = __set_pwm(ctx, pwm); in set_pwm()
95 pwm_fan_update_state(ctx, pwm); in set_pwm()
228 ctx->pwm = devm_of_pwm_get(&pdev->dev, pdev->dev.of_node, NULL); in pwm_fan_probe()
229 if (IS_ERR(ctx->pwm)) { in pwm_fan_probe()
231 return PTR_ERR(ctx->pwm); in pwm_fan_probe()
237 duty_cycle = ctx->pwm->period - 1; in pwm_fan_probe()
240 ret = pwm_config(ctx->pwm, duty_cycle, ctx->pwm->period); in pwm_fan_probe()
247 ret = pwm_enable(ctx->pwm); in pwm_fan_probe()
257 pwm_disable(ctx->pwm); in pwm_fan_probe()
273 pwm_disable(ctx->pwm); in pwm_fan_probe()
289 pwm_disable(ctx->pwm); in pwm_fan_remove()
299 pwm_disable(ctx->pwm); in pwm_fan_suspend()
312 duty = DIV_ROUND_UP(ctx->pwm_value * (ctx->pwm->period - 1), MAX_PWM); in pwm_fan_resume()
313 ret = pwm_config(ctx->pwm, duty, ctx->pwm->period); in pwm_fan_resume()
316 return pwm_enable(ctx->pwm); in pwm_fan_resume()