mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-07 04:09:21 +00:00
hwmon: (adm1021) Fix cache problem when writing temperature limits
commit c024044d4da2c9c3b32933b4235df1e409293b84 upstream. The module test script for the adm1021 driver exposes a cache problem when writing temperature limits. temp_min and temp_max are expected to be stored in milli-degrees C but are stored in degrees C. Reported-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c1bf93008b
commit
906a2fc009
1 changed files with 8 additions and 6 deletions
|
@ -185,7 +185,7 @@ static ssize_t set_temp_max(struct device *dev,
|
|||
struct i2c_client *client = to_i2c_client(dev);
|
||||
struct adm1021_data *data = i2c_get_clientdata(client);
|
||||
long temp;
|
||||
int err;
|
||||
int reg_val, err;
|
||||
|
||||
err = kstrtol(buf, 10, &temp);
|
||||
if (err)
|
||||
|
@ -193,10 +193,11 @@ static ssize_t set_temp_max(struct device *dev,
|
|||
temp /= 1000;
|
||||
|
||||
mutex_lock(&data->update_lock);
|
||||
data->temp_max[index] = clamp_val(temp, -128, 127);
|
||||
reg_val = clamp_val(temp, -128, 127);
|
||||
data->temp_max[index] = reg_val * 1000;
|
||||
if (!read_only)
|
||||
i2c_smbus_write_byte_data(client, ADM1021_REG_TOS_W(index),
|
||||
data->temp_max[index]);
|
||||
reg_val);
|
||||
mutex_unlock(&data->update_lock);
|
||||
|
||||
return count;
|
||||
|
@ -210,7 +211,7 @@ static ssize_t set_temp_min(struct device *dev,
|
|||
struct i2c_client *client = to_i2c_client(dev);
|
||||
struct adm1021_data *data = i2c_get_clientdata(client);
|
||||
long temp;
|
||||
int err;
|
||||
int reg_val, err;
|
||||
|
||||
err = kstrtol(buf, 10, &temp);
|
||||
if (err)
|
||||
|
@ -218,10 +219,11 @@ static ssize_t set_temp_min(struct device *dev,
|
|||
temp /= 1000;
|
||||
|
||||
mutex_lock(&data->update_lock);
|
||||
data->temp_min[index] = clamp_val(temp, -128, 127);
|
||||
reg_val = clamp_val(temp, -128, 127);
|
||||
data->temp_min[index] = reg_val * 1000;
|
||||
if (!read_only)
|
||||
i2c_smbus_write_byte_data(client, ADM1021_REG_THYST_W(index),
|
||||
data->temp_min[index]);
|
||||
reg_val);
|
||||
mutex_unlock(&data->update_lock);
|
||||
|
||||
return count;
|
||||
|
|
Loading…
Reference in a new issue