Skip to content

Commit

Permalink
hwmon: (lm90) Don't access nonexistent registers on Maxim chips
Browse files Browse the repository at this point in the history
The Maxim chips supported by the lm90 driver have 8-bit high and low
remote limit values, not 11-bit as the other chips have. So stop reading
from and writing to registers that do not exist on these chips. Also
round the limit values set by the user properly.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Martyn Welch <martyn.welch@gefanuc.com>
  • Loading branch information
Jean Delvare authored and Jean Delvare committed Oct 17, 2008
1 parent f65e170 commit 5f502a8
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions drivers/hwmon/lm90.c
Original file line number Diff line number Diff line change
Expand Up @@ -323,12 +323,16 @@ static ssize_t set_temp11(struct device *dev, struct device_attribute *devattr,
mutex_lock(&data->update_lock);
if (data->kind == adt7461)
data->temp11[nr] = TEMP2_TO_REG_ADT7461(val);
else if (data->kind == max6657 || data->kind == max6680)
data->temp11[nr] = TEMP1_TO_REG(val) << 8;
else
data->temp11[nr] = TEMP2_TO_REG(val);

i2c_smbus_write_byte_data(client, reg[(nr - 1) * 2],
data->temp11[nr] >> 8);
i2c_smbus_write_byte_data(client, reg[(nr - 1) * 2 + 1],
data->temp11[nr] & 0xff);
if (data->kind != max6657 && data->kind != max6680)
i2c_smbus_write_byte_data(client, reg[(nr - 1) * 2 + 1],
data->temp11[nr] & 0xff);
mutex_unlock(&data->update_lock);
return count;
}
Expand Down Expand Up @@ -801,12 +805,21 @@ static struct lm90_data *lm90_update_device(struct device *dev)
lm90_read16(client, LM90_REG_R_REMOTE_TEMPH,
LM90_REG_R_REMOTE_TEMPL, &data->temp11[0]);

if (lm90_read_reg(client, LM90_REG_R_REMOTE_LOWH, &h) == 0
&& lm90_read_reg(client, LM90_REG_R_REMOTE_LOWL, &l) == 0)
data->temp11[1] = (h << 8) | l;
if (lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHH, &h) == 0
&& lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHL, &l) == 0)
data->temp11[2] = (h << 8) | l;
if (lm90_read_reg(client, LM90_REG_R_REMOTE_LOWH, &h) == 0) {
data->temp11[1] = h << 8;
if (data->kind != max6657 && data->kind != max6680
&& lm90_read_reg(client, LM90_REG_R_REMOTE_LOWL,
&l) == 0)
data->temp11[1] |= l;
}
if (lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHH, &h) == 0) {
data->temp11[2] = h << 8;
if (data->kind != max6657 && data->kind != max6680
&& lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHL,
&l) == 0)
data->temp11[2] |= l;
}

if (data->kind != max6657) {
if (lm90_read_reg(client, LM90_REG_R_REMOTE_OFFSH,
&h) == 0
Expand Down

0 comments on commit 5f502a8

Please sign in to comment.