mirror of https://gitee.com/openkylin/linux.git
hwmon: (pwm-fan) Fix suspend/resume behavior
The state of a PWM output is not clearly defined after resume. Some PWM drivers do not restore the duty cycle upon resume, thus it is necessary to manually restore the correct value. Signed-off-by: Kamil Debski <k.debski@samsung.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
aab18da44f
commit
48b9d5b4f4
|
@ -161,10 +161,17 @@ static int pwm_fan_suspend(struct device *dev)
|
|||
static int pwm_fan_resume(struct device *dev)
|
||||
{
|
||||
struct pwm_fan_ctx *ctx = dev_get_drvdata(dev);
|
||||
unsigned long duty;
|
||||
int ret;
|
||||
|
||||
if (ctx->pwm_value)
|
||||
return pwm_enable(ctx->pwm);
|
||||
return 0;
|
||||
if (ctx->pwm_value == 0)
|
||||
return 0;
|
||||
|
||||
duty = DIV_ROUND_UP(ctx->pwm_value * (ctx->pwm->period - 1), MAX_PWM);
|
||||
ret = pwm_config(ctx->pwm, duty, ctx->pwm->period);
|
||||
if (ret)
|
||||
return ret;
|
||||
return pwm_enable(ctx->pwm);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue