mirror of https://github.com/torvalds/linux.git
hwmon: (emc2305) Set initial PWM minimum value during probe based on thermal state
Prevent the PWM value from being set to minimum when thermal zone temperature exceeds any trip point during driver probe. Otherwise, the PWM fan speed will remains at minimum speed and not respond to temperature changes. Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com> Link: https://lore.kernel.org/r/20250603113125.3175103-5-florin.leotescu@oss.nxp.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
ef8b1b4eb7
commit
0429415a08
|
|
@ -317,6 +317,12 @@ static int emc2305_set_single_tz(struct device *dev, struct device_node *fan_nod
|
|||
dev_err(dev, "Failed to register cooling device %s\n", emc2305_fan_name[idx]);
|
||||
return PTR_ERR(data->cdev_data[cdev_idx].cdev);
|
||||
}
|
||||
|
||||
if (data->cdev_data[cdev_idx].cur_state > 0)
|
||||
/* Update pwm when temperature is above trips */
|
||||
pwm = EMC2305_PWM_STATE2DUTY(data->cdev_data[cdev_idx].cur_state,
|
||||
data->max_state, EMC2305_FAN_MAX);
|
||||
|
||||
/* Set minimal PWM speed. */
|
||||
if (data->pwm_separate) {
|
||||
ret = emc2305_set_pwm(dev, pwm, cdev_idx);
|
||||
|
|
@ -330,10 +336,10 @@ static int emc2305_set_single_tz(struct device *dev, struct device_node *fan_nod
|
|||
}
|
||||
}
|
||||
data->cdev_data[cdev_idx].cur_state =
|
||||
EMC2305_PWM_DUTY2STATE(data->pwm_min[cdev_idx], data->max_state,
|
||||
EMC2305_PWM_DUTY2STATE(pwm, data->max_state,
|
||||
EMC2305_FAN_MAX);
|
||||
data->cdev_data[cdev_idx].last_hwmon_state =
|
||||
EMC2305_PWM_DUTY2STATE(data->pwm_min[cdev_idx], data->max_state,
|
||||
EMC2305_PWM_DUTY2STATE(pwm, data->max_state,
|
||||
EMC2305_FAN_MAX);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue