Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b84bb518 authored by Guenter Roeck's avatar Guenter Roeck
Browse files

hwmon: (w83627ehf) Permit enabling SmartFan IV mode if configured at startup



If SmartFan IV mode was configured at startup, it should be possible
to re-enable it later on.

Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
Acked-by: default avatarIan Dobson <i.dobson@planet-ian.com>
parent 279af1a9
Loading
Loading
Loading
Loading
+10 −2
Original line number Original line Diff line number Diff line
@@ -346,7 +346,10 @@ struct w83627ehf_data {
			     2->thermal cruise mode (also called SmartFan I)
			     2->thermal cruise mode (also called SmartFan I)
			     3->fan speed cruise mode
			     3->fan speed cruise mode
			     4->variable thermal cruise (also called
			     4->variable thermal cruise (also called
				SmartFan III) */
				SmartFan III)
			     5->enhanced variable thermal cruise (also called
				SmartFan IV) */
	u8 pwm_enable_orig[4];	/* original value of pwm_enable */
	u8 pwm_num;		/* number of pwm */
	u8 pwm_num;		/* number of pwm */
	u8 pwm[4];
	u8 pwm[4];
	u8 target_temp[4];
	u8 target_temp[4];
@@ -1055,7 +1058,7 @@ store_pwm_enable(struct device *dev, struct device_attribute *attr,
	if (err < 0)
	if (err < 0)
		return err;
		return err;


	if (!val || (val > 4))
	if (!val || (val > 4 && val != data->pwm_enable_orig[nr]))
		return -EINVAL;
		return -EINVAL;
	mutex_lock(&data->update_lock);
	mutex_lock(&data->update_lock);
	reg = w83627ehf_read_value(data, W83627EHF_REG_PWM_ENABLE[nr]);
	reg = w83627ehf_read_value(data, W83627EHF_REG_PWM_ENABLE[nr]);
@@ -1617,6 +1620,11 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
	/* Read fan clock dividers immediately */
	/* Read fan clock dividers immediately */
	w83627ehf_update_fan_div(data);
	w83627ehf_update_fan_div(data);


	/* Read pwm data to save original values */
	w83627ehf_update_pwm_common(dev, data);
	for (i = 0; i < data->pwm_num; i++)
		data->pwm_enable_orig[i] = data->pwm_enable[i];

	/* Register sysfs hooks */
	/* Register sysfs hooks */
	for (i = 0; i < ARRAY_SIZE(sda_sf3_arrays); i++) {
	for (i = 0; i < ARRAY_SIZE(sda_sf3_arrays); i++) {
		err = device_create_file(dev, &sda_sf3_arrays[i].dev_attr);
		err = device_create_file(dev, &sda_sf3_arrays[i].dev_attr);