On Thu, Oct 13, 2022 at 03:59:51PM +0200, Matthias Schiffer wrote: > When pwm1_enable is changed from 1 to 0 while pwm1 == 0, the regulator > is not switched off as expected. The reason is that when the fan is > already off, ctx->enabled is false, so pwm_fan_power_off() will be a > no-op. > > Handle this case explicitly in pwm_fan_update_enable() by calling > pwm_fan_switch_power() directly. > > Fixes: b99152d4f04b ("hwmon: (pwm-fan) Switch regulator dynamically") > Signed-off-by: Matthias Schiffer <matthias.schiffer@xxxxxxxxxxxxxxx> Applied. Thanks, Guenter > --- > drivers/hwmon/pwm-fan.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/hwmon/pwm-fan.c b/drivers/hwmon/pwm-fan.c > index dc3d9a22d917..83a347ca35da 100644 > --- a/drivers/hwmon/pwm-fan.c > +++ b/drivers/hwmon/pwm-fan.c > @@ -257,7 +257,10 @@ static int pwm_fan_update_enable(struct pwm_fan_ctx *ctx, long val) > > if (val == 0) { > /* Disable pwm-fan unconditionally */ > - ret = __set_pwm(ctx, 0); > + if (ctx->enabled) > + ret = __set_pwm(ctx, 0); > + else > + ret = pwm_fan_switch_power(ctx, false); > if (ret) > ctx->enable_mode = old_val; > pwm_fan_update_state(ctx, 0);