diff options
| -rw-r--r-- | Documentation/hwmon/adm1021 | 36 | ||||
| -rw-r--r-- | Documentation/hwmon/lm90 | 29 | ||||
| -rw-r--r-- | drivers/hwmon/Kconfig | 11 | ||||
| -rw-r--r-- | drivers/hwmon/lm85.c | 6 | ||||
| -rw-r--r-- | drivers/hwmon/lm90.c | 22 |
5 files changed, 63 insertions, 41 deletions
diff --git a/Documentation/hwmon/adm1021 b/Documentation/hwmon/adm1021 index 03d02bfb3df1..02ad96cf9b2b 100644 --- a/Documentation/hwmon/adm1021 +++ b/Documentation/hwmon/adm1021 | |||
| @@ -14,10 +14,6 @@ Supported chips: | |||
| 14 | Prefix: 'gl523sm' | 14 | Prefix: 'gl523sm' |
| 15 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | 15 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e |
| 16 | Datasheet: | 16 | Datasheet: |
| 17 | * Intel Xeon Processor | ||
| 18 | Prefix: - any other - may require 'force_adm1021' parameter | ||
| 19 | Addresses scanned: none | ||
| 20 | Datasheet: Publicly available at Intel website | ||
| 21 | * Maxim MAX1617 | 17 | * Maxim MAX1617 |
| 22 | Prefix: 'max1617' | 18 | Prefix: 'max1617' |
| 23 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e | 19 | Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e |
| @@ -91,21 +87,27 @@ will do no harm, but will return 'old' values. It is possible to make | |||
| 91 | ADM1021-clones do faster measurements, but there is really no good reason | 87 | ADM1021-clones do faster measurements, but there is really no good reason |
| 92 | for that. | 88 | for that. |
| 93 | 89 | ||
| 94 | Xeon support | ||
| 95 | ------------ | ||
| 96 | 90 | ||
| 97 | Some Xeon processors have real max1617, adm1021, or compatible chips | 91 | Netburst-based Xeon support |
| 98 | within them, with two temperature sensors. | 92 | --------------------------- |
| 99 | 93 | ||
| 100 | Other Xeons have chips with only one sensor. | 94 | Some Xeon processors based on the Netburst (early Pentium 4, from 2001 to |
| 95 | 2003) microarchitecture had real MAX1617, ADM1021, or compatible chips | ||
| 96 | within them, with two temperature sensors. Other Xeon processors of this | ||
| 97 | era (with 400 MHz FSB) had chips with only one temperature sensor. | ||
| 101 | 98 | ||
| 102 | If you have a Xeon, and the adm1021 module loads, and both temperatures | 99 | If you have such an old Xeon, and you get two valid temperatures when |
| 103 | appear valid, then things are good. | 100 | loading the adm1021 module, then things are good. |
| 104 | 101 | ||
| 105 | If the adm1021 module doesn't load, you should try this: | 102 | If nothing happens when loading the adm1021 module, and you are certain |
| 106 | modprobe adm1021 force_adm1021=BUS,ADDRESS | 103 | that your specific Xeon processor model includes compatible sensors, you |
| 107 | ADDRESS can only be 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. | 104 | will have to explicitly instantiate the sensor chips from user-space. See |
| 105 | method 4 in Documentation/i2c/instantiating-devices. Possible slave | ||
| 106 | addresses are 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. It is likely that | ||
| 107 | only temp2 will be correct and temp1 will have to be ignored. | ||
| 108 | 108 | ||
| 109 | If you have dual Xeons you may have appear to have two separate | 109 | Previous generations of the Xeon processor (based on Pentium II/III) |
| 110 | adm1021-compatible chips, or two single-temperature sensors, at distinct | 110 | didn't have these sensors. Next generations of Xeon processors (533 MHz |
| 111 | addresses. | 111 | FSB and faster) lost them, until the Core-based generation which |
| 112 | introduced integrated digital thermal sensors. These are supported by | ||
| 113 | the coretemp driver. | ||
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 index fa475c0a48a3..f3efd18e87f4 100644 --- a/Documentation/hwmon/lm90 +++ b/Documentation/hwmon/lm90 | |||
| @@ -32,6 +32,16 @@ Supported chips: | |||
| 32 | Addresses scanned: I2C 0x4c and 0x4d | 32 | Addresses scanned: I2C 0x4c and 0x4d |
| 33 | Datasheet: Publicly available at the ON Semiconductor website | 33 | Datasheet: Publicly available at the ON Semiconductor website |
| 34 | http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461 | 34 | http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461 |
| 35 | * Analog Devices ADT7461A | ||
| 36 | Prefix: 'adt7461a' | ||
| 37 | Addresses scanned: I2C 0x4c and 0x4d | ||
| 38 | Datasheet: Publicly available at the ON Semiconductor website | ||
| 39 | http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461A | ||
| 40 | * ON Semiconductor NCT1008 | ||
| 41 | Prefix: 'nct1008' | ||
| 42 | Addresses scanned: I2C 0x4c and 0x4d | ||
| 43 | Datasheet: Publicly available at the ON Semiconductor website | ||
| 44 | http://www.onsemi.com/PowerSolutions/product.do?id=NCT1008 | ||
| 35 | * Maxim MAX6646 | 45 | * Maxim MAX6646 |
| 36 | Prefix: 'max6646' | 46 | Prefix: 'max6646' |
| 37 | Addresses scanned: I2C 0x4d | 47 | Addresses scanned: I2C 0x4d |
| @@ -149,7 +159,7 @@ ADM1032: | |||
| 149 | * ALERT is triggered by open remote sensor. | 159 | * ALERT is triggered by open remote sensor. |
| 150 | * SMBus PEC support for Write Byte and Receive Byte transactions. | 160 | * SMBus PEC support for Write Byte and Receive Byte transactions. |
| 151 | 161 | ||
| 152 | ADT7461: | 162 | ADT7461, ADT7461A, NCT1008: |
| 153 | * Extended temperature range (breaks compatibility) | 163 | * Extended temperature range (breaks compatibility) |
| 154 | * Lower resolution for remote temperature | 164 | * Lower resolution for remote temperature |
| 155 | 165 | ||
| @@ -195,9 +205,9 @@ are exported, one for each channel, but these values are of course linked. | |||
| 195 | Only the local hysteresis can be set from user-space, and the same delta | 205 | Only the local hysteresis can be set from user-space, and the same delta |
| 196 | applies to the remote hysteresis. | 206 | applies to the remote hysteresis. |
| 197 | 207 | ||
| 198 | The lm90 driver will not update its values more frequently than every | 208 | The lm90 driver will not update its values more frequently than configured with |
| 199 | other second; reading them more often will do no harm, but will return | 209 | the update_interval attribute; reading them more often will do no harm, but will |
| 200 | 'old' values. | 210 | return 'old' values. |
| 201 | 211 | ||
| 202 | SMBus Alert Support | 212 | SMBus Alert Support |
| 203 | ------------------- | 213 | ------------------- |
| @@ -205,11 +215,12 @@ SMBus Alert Support | |||
| 205 | This driver has basic support for SMBus alert. When an alert is received, | 215 | This driver has basic support for SMBus alert. When an alert is received, |
| 206 | the status register is read and the faulty temperature channel is logged. | 216 | the status register is read and the faulty temperature channel is logged. |
| 207 | 217 | ||
| 208 | The Analog Devices chips (ADM1032 and ADT7461) do not implement the SMBus | 218 | The Analog Devices chips (ADM1032, ADT7461 and ADT7461A) and ON |
| 209 | alert protocol properly so additional care is needed: the ALERT output is | 219 | Semiconductor chips (NCT1008) do not implement the SMBus alert protocol |
| 210 | disabled when an alert is received, and is re-enabled only when the alarm | 220 | properly so additional care is needed: the ALERT output is disabled when |
| 211 | is gone. Otherwise the chip would block alerts from other chips in the bus | 221 | an alert is received, and is re-enabled only when the alarm is gone. |
| 212 | as long as the alarm is active. | 222 | Otherwise the chip would block alerts from other chips in the bus as long |
| 223 | as the alarm is active. | ||
| 213 | 224 | ||
| 214 | PEC Support | 225 | PEC Support |
| 215 | ----------- | 226 | ----------- |
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 060ef6327876..50e40dbd8bb6 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig | |||
| @@ -110,8 +110,7 @@ config SENSORS_ADM1021 | |||
| 110 | help | 110 | help |
| 111 | If you say yes here you get support for Analog Devices ADM1021 | 111 | If you say yes here you get support for Analog Devices ADM1021 |
| 112 | and ADM1023 sensor chips and clones: Maxim MAX1617 and MAX1617A, | 112 | and ADM1023 sensor chips and clones: Maxim MAX1617 and MAX1617A, |
| 113 | Genesys Logic GL523SM, National Semiconductor LM84, TI THMC10, | 113 | Genesys Logic GL523SM, National Semiconductor LM84 and TI THMC10. |
| 114 | and the XEON processor built-in sensor. | ||
| 115 | 114 | ||
| 116 | This driver can also be built as a module. If so, the module | 115 | This driver can also be built as a module. If so, the module |
| 117 | will be called adm1021. | 116 | will be called adm1021. |
| @@ -618,10 +617,10 @@ config SENSORS_LM90 | |||
| 618 | depends on I2C | 617 | depends on I2C |
| 619 | help | 618 | help |
| 620 | If you say yes here you get support for National Semiconductor LM90, | 619 | If you say yes here you get support for National Semiconductor LM90, |
| 621 | LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, Maxim | 620 | LM86, LM89 and LM99, Analog Devices ADM1032, ADT7461, and ADT7461A, |
| 622 | MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659, | 621 | Maxim MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659, |
| 623 | MAX6680, MAX6681, MAX6692, MAX6695, MAX6696, and Winbond/Nuvoton | 622 | MAX6680, MAX6681, MAX6692, MAX6695, MAX6696, ON Semiconductor NCT1008, |
| 624 | W83L771W/G/AWG/ASG sensor chips. | 623 | and Winbond/Nuvoton W83L771W/G/AWG/ASG sensor chips. |
| 625 | 624 | ||
| 626 | This driver can also be built as a module. If so, the module | 625 | This driver can also be built as a module. If so, the module |
| 627 | will be called lm90. | 626 | will be called lm90. |
diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c index 250d099ca398..da72dc12068c 100644 --- a/drivers/hwmon/lm85.c +++ b/drivers/hwmon/lm85.c | |||
| @@ -1094,6 +1094,7 @@ static struct attribute *lm85_attributes_minctl[] = { | |||
| 1094 | &sensor_dev_attr_pwm1_auto_pwm_minctl.dev_attr.attr, | 1094 | &sensor_dev_attr_pwm1_auto_pwm_minctl.dev_attr.attr, |
| 1095 | &sensor_dev_attr_pwm2_auto_pwm_minctl.dev_attr.attr, | 1095 | &sensor_dev_attr_pwm2_auto_pwm_minctl.dev_attr.attr, |
| 1096 | &sensor_dev_attr_pwm3_auto_pwm_minctl.dev_attr.attr, | 1096 | &sensor_dev_attr_pwm3_auto_pwm_minctl.dev_attr.attr, |
| 1097 | NULL | ||
| 1097 | }; | 1098 | }; |
| 1098 | 1099 | ||
| 1099 | static const struct attribute_group lm85_group_minctl = { | 1100 | static const struct attribute_group lm85_group_minctl = { |
| @@ -1104,6 +1105,7 @@ static struct attribute *lm85_attributes_temp_off[] = { | |||
| 1104 | &sensor_dev_attr_temp1_auto_temp_off.dev_attr.attr, | 1105 | &sensor_dev_attr_temp1_auto_temp_off.dev_attr.attr, |
| 1105 | &sensor_dev_attr_temp2_auto_temp_off.dev_attr.attr, | 1106 | &sensor_dev_attr_temp2_auto_temp_off.dev_attr.attr, |
| 1106 | &sensor_dev_attr_temp3_auto_temp_off.dev_attr.attr, | 1107 | &sensor_dev_attr_temp3_auto_temp_off.dev_attr.attr, |
| 1108 | NULL | ||
| 1107 | }; | 1109 | }; |
| 1108 | 1110 | ||
| 1109 | static const struct attribute_group lm85_group_temp_off = { | 1111 | static const struct attribute_group lm85_group_temp_off = { |
| @@ -1329,11 +1331,11 @@ static int lm85_probe(struct i2c_client *client, | |||
| 1329 | if (data->type != emc6d103s) { | 1331 | if (data->type != emc6d103s) { |
| 1330 | err = sysfs_create_group(&client->dev.kobj, &lm85_group_minctl); | 1332 | err = sysfs_create_group(&client->dev.kobj, &lm85_group_minctl); |
| 1331 | if (err) | 1333 | if (err) |
| 1332 | goto err_kfree; | 1334 | goto err_remove_files; |
| 1333 | err = sysfs_create_group(&client->dev.kobj, | 1335 | err = sysfs_create_group(&client->dev.kobj, |
| 1334 | &lm85_group_temp_off); | 1336 | &lm85_group_temp_off); |
| 1335 | if (err) | 1337 | if (err) |
| 1336 | goto err_kfree; | 1338 | goto err_remove_files; |
| 1337 | } | 1339 | } |
| 1338 | 1340 | ||
| 1339 | /* The ADT7463/68 have an optional VRM 10 mode where pin 21 is used | 1341 | /* The ADT7463/68 have an optional VRM 10 mode where pin 21 is used |
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c index c43b4e9f96a9..2f94f9504804 100644 --- a/drivers/hwmon/lm90.c +++ b/drivers/hwmon/lm90.c | |||
| @@ -49,10 +49,10 @@ | |||
| 49 | * chips, but support three temperature sensors instead of two. MAX6695 | 49 | * chips, but support three temperature sensors instead of two. MAX6695 |
| 50 | * and MAX6696 only differ in the pinout so they can be treated identically. | 50 | * and MAX6696 only differ in the pinout so they can be treated identically. |
| 51 | * | 51 | * |
| 52 | * This driver also supports the ADT7461 chip from Analog Devices. | 52 | * This driver also supports ADT7461 and ADT7461A from Analog Devices as well as |
| 53 | * It's supported in both compatibility and extended mode. It is mostly | 53 | * NCT1008 from ON Semiconductor. The chips are supported in both compatibility |
| 54 | * compatible with LM90 except for a data format difference for the | 54 | * and extended mode. They are mostly compatible with LM90 except for a data |
| 55 | * temperature value registers. | 55 | * format difference for the temperature value registers. |
| 56 | * | 56 | * |
| 57 | * Since the LM90 was the first chipset supported by this driver, most | 57 | * Since the LM90 was the first chipset supported by this driver, most |
| 58 | * comments will refer to this chipset, but are actually general and | 58 | * comments will refer to this chipset, but are actually general and |
| @@ -88,9 +88,10 @@ | |||
| 88 | * Addresses to scan | 88 | * Addresses to scan |
| 89 | * Address is fully defined internally and cannot be changed except for | 89 | * Address is fully defined internally and cannot be changed except for |
| 90 | * MAX6659, MAX6680 and MAX6681. | 90 | * MAX6659, MAX6680 and MAX6681. |
| 91 | * LM86, LM89, LM90, LM99, ADM1032, ADM1032-1, ADT7461, MAX6649, MAX6657, | 91 | * LM86, LM89, LM90, LM99, ADM1032, ADM1032-1, ADT7461, ADT7461A, MAX6649, |
| 92 | * MAX6658 and W83L771 have address 0x4c. | 92 | * MAX6657, MAX6658, NCT1008 and W83L771 have address 0x4c. |
| 93 | * ADM1032-2, ADT7461-2, LM89-1, LM99-1 and MAX6646 have address 0x4d. | 93 | * ADM1032-2, ADT7461-2, ADT7461A-2, LM89-1, LM99-1, MAX6646, and NCT1008D |
| 94 | * have address 0x4d. | ||
| 94 | * MAX6647 has address 0x4e. | 95 | * MAX6647 has address 0x4e. |
| 95 | * MAX6659 can have address 0x4c, 0x4d or 0x4e. | 96 | * MAX6659 can have address 0x4c, 0x4d or 0x4e. |
| 96 | * MAX6680 and MAX6681 can have address 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, | 97 | * MAX6680 and MAX6681 can have address 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, |
| @@ -174,6 +175,7 @@ enum chips { lm90, adm1032, lm99, lm86, max6657, max6659, adt7461, max6680, | |||
| 174 | static const struct i2c_device_id lm90_id[] = { | 175 | static const struct i2c_device_id lm90_id[] = { |
| 175 | { "adm1032", adm1032 }, | 176 | { "adm1032", adm1032 }, |
| 176 | { "adt7461", adt7461 }, | 177 | { "adt7461", adt7461 }, |
| 178 | { "adt7461a", adt7461 }, | ||
| 177 | { "lm90", lm90 }, | 179 | { "lm90", lm90 }, |
| 178 | { "lm86", lm86 }, | 180 | { "lm86", lm86 }, |
| 179 | { "lm89", lm86 }, | 181 | { "lm89", lm86 }, |
| @@ -188,6 +190,7 @@ static const struct i2c_device_id lm90_id[] = { | |||
| 188 | { "max6681", max6680 }, | 190 | { "max6681", max6680 }, |
| 189 | { "max6695", max6696 }, | 191 | { "max6695", max6696 }, |
| 190 | { "max6696", max6696 }, | 192 | { "max6696", max6696 }, |
| 193 | { "nct1008", adt7461 }, | ||
| 191 | { "w83l771", w83l771 }, | 194 | { "w83l771", w83l771 }, |
| 192 | { } | 195 | { } |
| 193 | }; | 196 | }; |
| @@ -1153,6 +1156,11 @@ static int lm90_detect(struct i2c_client *new_client, | |||
| 1153 | && (reg_config1 & 0x1B) == 0x00 | 1156 | && (reg_config1 & 0x1B) == 0x00 |
| 1154 | && reg_convrate <= 0x0A) { | 1157 | && reg_convrate <= 0x0A) { |
| 1155 | name = "adt7461"; | 1158 | name = "adt7461"; |
| 1159 | } else | ||
| 1160 | if (chip_id == 0x57 /* ADT7461A, NCT1008 */ | ||
| 1161 | && (reg_config1 & 0x1B) == 0x00 | ||
| 1162 | && reg_convrate <= 0x0A) { | ||
| 1163 | name = "adt7461a"; | ||
| 1156 | } | 1164 | } |
| 1157 | } else | 1165 | } else |
| 1158 | if (man_id == 0x4D) { /* Maxim */ | 1166 | if (man_id == 0x4D) { /* Maxim */ |
