mirror of https://gitee.com/openkylin/linux.git
hwmon: (jc42) Don't reset hysteresis on device removal
Restoring the configuration register on device removal has the side effect of also resetting the hysteresis value. This is inconsistent as the other limits are not reset, only hysteresis. So, following the principle of least surprise, preserve the hysteresis value when restoring the configuration register. Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
2ccc8731e5
commit
5953e2761b
|
@ -534,9 +534,16 @@ static int jc42_remove(struct i2c_client *client)
|
||||||
struct jc42_data *data = i2c_get_clientdata(client);
|
struct jc42_data *data = i2c_get_clientdata(client);
|
||||||
hwmon_device_unregister(data->hwmon_dev);
|
hwmon_device_unregister(data->hwmon_dev);
|
||||||
sysfs_remove_group(&client->dev.kobj, &jc42_group);
|
sysfs_remove_group(&client->dev.kobj, &jc42_group);
|
||||||
if (data->config != data->orig_config)
|
|
||||||
i2c_smbus_write_word_swapped(client, JC42_REG_CONFIG,
|
/* Restore original configuration except hysteresis */
|
||||||
data->orig_config);
|
if ((data->config & ~JC42_CFG_HYST_MASK) !=
|
||||||
|
(data->orig_config & ~JC42_CFG_HYST_MASK)) {
|
||||||
|
int config;
|
||||||
|
|
||||||
|
config = (data->orig_config & ~JC42_CFG_HYST_MASK)
|
||||||
|
| (data->config & JC42_CFG_HYST_MASK);
|
||||||
|
i2c_smbus_write_word_swapped(client, JC42_REG_CONFIG, config);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue