diff options
Diffstat (limited to 'drivers/hwmon/lm90.c')
-rw-r--r-- | drivers/hwmon/lm90.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c index 16b99e0bdff0..90489b8f5c8b 100644 --- a/drivers/hwmon/lm90.c +++ b/drivers/hwmon/lm90.c | |||
@@ -323,12 +323,16 @@ static ssize_t set_temp11(struct device *dev, struct device_attribute *devattr, | |||
323 | mutex_lock(&data->update_lock); | 323 | mutex_lock(&data->update_lock); |
324 | if (data->kind == adt7461) | 324 | if (data->kind == adt7461) |
325 | data->temp11[nr] = TEMP2_TO_REG_ADT7461(val); | 325 | data->temp11[nr] = TEMP2_TO_REG_ADT7461(val); |
326 | else if (data->kind == max6657 || data->kind == max6680) | ||
327 | data->temp11[nr] = TEMP1_TO_REG(val) << 8; | ||
326 | else | 328 | else |
327 | data->temp11[nr] = TEMP2_TO_REG(val); | 329 | data->temp11[nr] = TEMP2_TO_REG(val); |
330 | |||
328 | i2c_smbus_write_byte_data(client, reg[(nr - 1) * 2], | 331 | i2c_smbus_write_byte_data(client, reg[(nr - 1) * 2], |
329 | data->temp11[nr] >> 8); | 332 | data->temp11[nr] >> 8); |
330 | i2c_smbus_write_byte_data(client, reg[(nr - 1) * 2 + 1], | 333 | if (data->kind != max6657 && data->kind != max6680) |
331 | data->temp11[nr] & 0xff); | 334 | i2c_smbus_write_byte_data(client, reg[(nr - 1) * 2 + 1], |
335 | data->temp11[nr] & 0xff); | ||
332 | mutex_unlock(&data->update_lock); | 336 | mutex_unlock(&data->update_lock); |
333 | return count; | 337 | return count; |
334 | } | 338 | } |
@@ -801,12 +805,21 @@ static struct lm90_data *lm90_update_device(struct device *dev) | |||
801 | lm90_read16(client, LM90_REG_R_REMOTE_TEMPH, | 805 | lm90_read16(client, LM90_REG_R_REMOTE_TEMPH, |
802 | LM90_REG_R_REMOTE_TEMPL, &data->temp11[0]); | 806 | LM90_REG_R_REMOTE_TEMPL, &data->temp11[0]); |
803 | 807 | ||
804 | if (lm90_read_reg(client, LM90_REG_R_REMOTE_LOWH, &h) == 0 | 808 | if (lm90_read_reg(client, LM90_REG_R_REMOTE_LOWH, &h) == 0) { |
805 | && lm90_read_reg(client, LM90_REG_R_REMOTE_LOWL, &l) == 0) | 809 | data->temp11[1] = h << 8; |
806 | data->temp11[1] = (h << 8) | l; | 810 | if (data->kind != max6657 && data->kind != max6680 |
807 | if (lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHH, &h) == 0 | 811 | && lm90_read_reg(client, LM90_REG_R_REMOTE_LOWL, |
808 | && lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHL, &l) == 0) | 812 | &l) == 0) |
809 | data->temp11[2] = (h << 8) | l; | 813 | data->temp11[1] |= l; |
814 | } | ||
815 | if (lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHH, &h) == 0) { | ||
816 | data->temp11[2] = h << 8; | ||
817 | if (data->kind != max6657 && data->kind != max6680 | ||
818 | && lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHL, | ||
819 | &l) == 0) | ||
820 | data->temp11[2] |= l; | ||
821 | } | ||
822 | |||
810 | if (data->kind != max6657) { | 823 | if (data->kind != max6657) { |
811 | if (lm90_read_reg(client, LM90_REG_R_REMOTE_OFFSH, | 824 | if (lm90_read_reg(client, LM90_REG_R_REMOTE_OFFSH, |
812 | &h) == 0 | 825 | &h) == 0 |