Commit 786375f7298dcc78a7cf44be9e15fb79bddc6f25
Committed by
Jean Delvare
1 parent
662bda2832
Exists in
master
and in
6 other branches
hwmon: (lm63) Add support for external temperature offset register
LM63 and compatibles support a temperature offset register for the external temperature sensor. Add support for it. Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com> Signed-off-by: Jean Delvare <khali@linux-fr.org>
Showing 1 changed file with 13 additions and 3 deletions Side-by-side Diff
drivers/hwmon/lm63.c
... | ... | @@ -180,9 +180,10 @@ |
180 | 180 | s8 temp8[3]; /* 0: local input |
181 | 181 | 1: local high limit |
182 | 182 | 2: remote critical limit */ |
183 | - s16 temp11[3]; /* 0: remote input | |
183 | + s16 temp11[4]; /* 0: remote input | |
184 | 184 | 1: remote low limit |
185 | - 2: remote high limit */ | |
185 | + 2: remote high limit | |
186 | + 3: remote offset */ | |
186 | 187 | u8 temp2_crit_hyst; |
187 | 188 | u8 alarms; |
188 | 189 | }; |
189 | 190 | |
... | ... | @@ -318,11 +319,13 @@ |
318 | 319 | static ssize_t set_temp11(struct device *dev, struct device_attribute *devattr, |
319 | 320 | const char *buf, size_t count) |
320 | 321 | { |
321 | - static const u8 reg[4] = { | |
322 | + static const u8 reg[6] = { | |
322 | 323 | LM63_REG_REMOTE_LOW_MSB, |
323 | 324 | LM63_REG_REMOTE_LOW_LSB, |
324 | 325 | LM63_REG_REMOTE_HIGH_MSB, |
325 | 326 | LM63_REG_REMOTE_HIGH_LSB, |
327 | + LM63_REG_REMOTE_OFFSET_MSB, | |
328 | + LM63_REG_REMOTE_OFFSET_LSB, | |
326 | 329 | }; |
327 | 330 | |
328 | 331 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); |
... | ... | @@ -418,6 +421,8 @@ |
418 | 421 | set_temp11, 1); |
419 | 422 | static SENSOR_DEVICE_ATTR(temp2_max, S_IWUSR | S_IRUGO, show_temp11, |
420 | 423 | set_temp11, 2); |
424 | +static SENSOR_DEVICE_ATTR(temp2_offset, S_IWUSR | S_IRUGO, show_temp11, | |
425 | + set_temp11, 3); | |
421 | 426 | /* |
422 | 427 | * On LM63, temp2_crit can be set only once, which should be job |
423 | 428 | * of the bootloader. |
... | ... | @@ -445,6 +450,7 @@ |
445 | 450 | &sensor_dev_attr_temp2_min.dev_attr.attr, |
446 | 451 | &sensor_dev_attr_temp1_max.dev_attr.attr, |
447 | 452 | &sensor_dev_attr_temp2_max.dev_attr.attr, |
453 | + &sensor_dev_attr_temp2_offset.dev_attr.attr, | |
448 | 454 | &sensor_dev_attr_temp2_crit.dev_attr.attr, |
449 | 455 | &dev_attr_temp2_crit_hyst.attr, |
450 | 456 | |
... | ... | @@ -668,6 +674,10 @@ |
668 | 674 | LM63_REG_REMOTE_HIGH_MSB) << 8) |
669 | 675 | | i2c_smbus_read_byte_data(client, |
670 | 676 | LM63_REG_REMOTE_HIGH_LSB); |
677 | + data->temp11[3] = (i2c_smbus_read_byte_data(client, | |
678 | + LM63_REG_REMOTE_OFFSET_MSB) << 8) | |
679 | + | i2c_smbus_read_byte_data(client, | |
680 | + LM63_REG_REMOTE_OFFSET_LSB); | |
671 | 681 | data->temp8[2] = i2c_smbus_read_byte_data(client, |
672 | 682 | LM63_REG_REMOTE_TCRIT); |
673 | 683 | data->temp2_crit_hyst = i2c_smbus_read_byte_data(client, |