Lines Matching defs:pwm

3  * pwm-fan.c - Hwmon driver for fans connected to PWM lines.
17 #include <linux/pwm.h>
27 struct pwm_device *pwm;
72 static int __set_pwm(struct pwm_fan_ctx *ctx, unsigned long pwm)
79 if (ctx->pwm_value == pwm)
82 pwm_init_state(ctx->pwm, &state);
83 period = ctx->pwm->args.period;
84 state.duty_cycle = DIV_ROUND_UP(pwm * (period - 1), MAX_PWM);
85 state.enabled = pwm ? true : false;
87 ret = pwm_apply_state(ctx->pwm, &state);
89 ctx->pwm_value = pwm;
95 static void pwm_fan_update_state(struct pwm_fan_ctx *ctx, unsigned long pwm)
100 if (pwm < ctx->pwm_fan_cooling_levels[i + 1])
110 unsigned long pwm;
113 if (kstrtoul(buf, 10, &pwm) || pwm > MAX_PWM)
116 ret = __set_pwm(ctx, pwm);
120 pwm_fan_update_state(ctx, pwm);
140 static SENSOR_DEVICE_ATTR_RW(pwm1, pwm, 0);
213 dev_err(&cdev->device, "Cannot set pwm!\n");
277 pwm_disable(ctx->pwm);
297 ctx->pwm = devm_of_pwm_get(dev, dev->of_node, NULL);
298 if (IS_ERR(ctx->pwm))
299 return dev_err_probe(dev, PTR_ERR(ctx->pwm), "Could not get PWM\n");
327 pwm_init_state(ctx->pwm, &state);
339 state.duty_cycle = ctx->pwm->args.period - 1;
342 ret = pwm_apply_state(ctx->pwm, &state);
384 dev->of_node, "pwm-fan", ctx, &pwm_fan_cooling_ops);
388 "Failed to register pwm-fan as cooling device: %d\n",
405 pwm_get_args(ctx->pwm, &args);
408 ret = pwm_config(ctx->pwm, 0, args.period);
412 pwm_disable(ctx->pwm);
455 pwm_get_args(ctx->pwm, &pargs);
457 ret = pwm_config(ctx->pwm, duty, pargs.period);
460 return pwm_enable(ctx->pwm);
467 { .compatible = "pwm-fan", },
476 .name = "pwm-fan",
485 MODULE_ALIAS("platform:pwm-fan");