Commit 592311c9 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging

* 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
  hwmon: (lm85) Fix error paths in probe function
  hwmon: (lm85) Add missing list terminators
  hwmon: (adm1021) Clarify documentation regarding Xeon processors
  hwmon: (lm90) Fix update interval information in driver documentation
  hwmon: (lm90) Add support for ADT7461A and NCT1008
parents 9748d4d2 bc4d45f1
...@@ -14,10 +14,6 @@ Supported chips: ...@@ -14,10 +14,6 @@ Supported chips:
Prefix: 'gl523sm' Prefix: 'gl523sm'
Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
Datasheet: Datasheet:
* Intel Xeon Processor
Prefix: - any other - may require 'force_adm1021' parameter
Addresses scanned: none
Datasheet: Publicly available at Intel website
* Maxim MAX1617 * Maxim MAX1617
Prefix: 'max1617' Prefix: 'max1617'
Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e 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,21 +87,27 @@ will do no harm, but will return 'old' values. It is possible to make
ADM1021-clones do faster measurements, but there is really no good reason ADM1021-clones do faster measurements, but there is really no good reason
for that. for that.
Xeon support
------------
Some Xeon processors have real max1617, adm1021, or compatible chips Netburst-based Xeon support
within them, with two temperature sensors. ---------------------------
Other Xeons have chips with only one sensor. Some Xeon processors based on the Netburst (early Pentium 4, from 2001 to
2003) microarchitecture had real MAX1617, ADM1021, or compatible chips
within them, with two temperature sensors. Other Xeon processors of this
era (with 400 MHz FSB) had chips with only one temperature sensor.
If you have a Xeon, and the adm1021 module loads, and both temperatures If you have such an old Xeon, and you get two valid temperatures when
appear valid, then things are good. loading the adm1021 module, then things are good.
If the adm1021 module doesn't load, you should try this: If nothing happens when loading the adm1021 module, and you are certain
modprobe adm1021 force_adm1021=BUS,ADDRESS that your specific Xeon processor model includes compatible sensors, you
ADDRESS can only be 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. will have to explicitly instantiate the sensor chips from user-space. See
method 4 in Documentation/i2c/instantiating-devices. Possible slave
addresses are 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. It is likely that
only temp2 will be correct and temp1 will have to be ignored.
If you have dual Xeons you may have appear to have two separate Previous generations of the Xeon processor (based on Pentium II/III)
adm1021-compatible chips, or two single-temperature sensors, at distinct didn't have these sensors. Next generations of Xeon processors (533 MHz
addresses. FSB and faster) lost them, until the Core-based generation which
introduced integrated digital thermal sensors. These are supported by
the coretemp driver.
...@@ -32,6 +32,16 @@ Supported chips: ...@@ -32,6 +32,16 @@ Supported chips:
Addresses scanned: I2C 0x4c and 0x4d Addresses scanned: I2C 0x4c and 0x4d
Datasheet: Publicly available at the ON Semiconductor website Datasheet: Publicly available at the ON Semiconductor website
http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461 http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461
* Analog Devices ADT7461A
Prefix: 'adt7461a'
Addresses scanned: I2C 0x4c and 0x4d
Datasheet: Publicly available at the ON Semiconductor website
http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461A
* ON Semiconductor NCT1008
Prefix: 'nct1008'
Addresses scanned: I2C 0x4c and 0x4d
Datasheet: Publicly available at the ON Semiconductor website
http://www.onsemi.com/PowerSolutions/product.do?id=NCT1008
* Maxim MAX6646 * Maxim MAX6646
Prefix: 'max6646' Prefix: 'max6646'
Addresses scanned: I2C 0x4d Addresses scanned: I2C 0x4d
...@@ -149,7 +159,7 @@ ADM1032: ...@@ -149,7 +159,7 @@ ADM1032:
* ALERT is triggered by open remote sensor. * ALERT is triggered by open remote sensor.
* SMBus PEC support for Write Byte and Receive Byte transactions. * SMBus PEC support for Write Byte and Receive Byte transactions.
ADT7461: ADT7461, ADT7461A, NCT1008:
* Extended temperature range (breaks compatibility) * Extended temperature range (breaks compatibility)
* Lower resolution for remote temperature * Lower resolution for remote temperature
...@@ -195,9 +205,9 @@ are exported, one for each channel, but these values are of course linked. ...@@ -195,9 +205,9 @@ are exported, one for each channel, but these values are of course linked.
Only the local hysteresis can be set from user-space, and the same delta Only the local hysteresis can be set from user-space, and the same delta
applies to the remote hysteresis. applies to the remote hysteresis.
The lm90 driver will not update its values more frequently than every The lm90 driver will not update its values more frequently than configured with
other second; reading them more often will do no harm, but will return the update_interval attribute; reading them more often will do no harm, but will
'old' values. return 'old' values.
SMBus Alert Support SMBus Alert Support
------------------- -------------------
...@@ -205,11 +215,12 @@ SMBus Alert Support ...@@ -205,11 +215,12 @@ SMBus Alert Support
This driver has basic support for SMBus alert. When an alert is received, This driver has basic support for SMBus alert. When an alert is received,
the status register is read and the faulty temperature channel is logged. the status register is read and the faulty temperature channel is logged.
The Analog Devices chips (ADM1032 and ADT7461) do not implement the SMBus The Analog Devices chips (ADM1032, ADT7461 and ADT7461A) and ON
alert protocol properly so additional care is needed: the ALERT output is Semiconductor chips (NCT1008) do not implement the SMBus alert protocol
disabled when an alert is received, and is re-enabled only when the alarm properly so additional care is needed: the ALERT output is disabled when
is gone. Otherwise the chip would block alerts from other chips in the bus an alert is received, and is re-enabled only when the alarm is gone.
as long as the alarm is active. Otherwise the chip would block alerts from other chips in the bus as long
as the alarm is active.
PEC Support PEC Support
----------- -----------
......
...@@ -110,8 +110,7 @@ config SENSORS_ADM1021 ...@@ -110,8 +110,7 @@ config SENSORS_ADM1021
help help
If you say yes here you get support for Analog Devices ADM1021 If you say yes here you get support for Analog Devices ADM1021
and ADM1023 sensor chips and clones: Maxim MAX1617 and MAX1617A, and ADM1023 sensor chips and clones: Maxim MAX1617 and MAX1617A,
Genesys Logic GL523SM, National Semiconductor LM84, TI THMC10, Genesys Logic GL523SM, National Semiconductor LM84 and TI THMC10.
and the XEON processor built-in sensor.
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called adm1021. will be called adm1021.
...@@ -618,10 +617,10 @@ config SENSORS_LM90 ...@@ -618,10 +617,10 @@ config SENSORS_LM90
depends on I2C depends on I2C
help help
If you say yes here you get support for National Semiconductor LM90, If you say yes here you get support for National Semiconductor LM90,
LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, Maxim LM86, LM89 and LM99, Analog Devices ADM1032, ADT7461, and ADT7461A,
MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659, Maxim MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659,
MAX6680, MAX6681, MAX6692, MAX6695, MAX6696, and Winbond/Nuvoton MAX6680, MAX6681, MAX6692, MAX6695, MAX6696, ON Semiconductor NCT1008,
W83L771W/G/AWG/ASG sensor chips. and Winbond/Nuvoton W83L771W/G/AWG/ASG sensor chips.
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called lm90. will be called lm90.
......
...@@ -1094,6 +1094,7 @@ static struct attribute *lm85_attributes_minctl[] = { ...@@ -1094,6 +1094,7 @@ static struct attribute *lm85_attributes_minctl[] = {
&sensor_dev_attr_pwm1_auto_pwm_minctl.dev_attr.attr, &sensor_dev_attr_pwm1_auto_pwm_minctl.dev_attr.attr,
&sensor_dev_attr_pwm2_auto_pwm_minctl.dev_attr.attr, &sensor_dev_attr_pwm2_auto_pwm_minctl.dev_attr.attr,
&sensor_dev_attr_pwm3_auto_pwm_minctl.dev_attr.attr, &sensor_dev_attr_pwm3_auto_pwm_minctl.dev_attr.attr,
NULL
}; };
static const struct attribute_group lm85_group_minctl = { static const struct attribute_group lm85_group_minctl = {
...@@ -1104,6 +1105,7 @@ static struct attribute *lm85_attributes_temp_off[] = { ...@@ -1104,6 +1105,7 @@ static struct attribute *lm85_attributes_temp_off[] = {
&sensor_dev_attr_temp1_auto_temp_off.dev_attr.attr, &sensor_dev_attr_temp1_auto_temp_off.dev_attr.attr,
&sensor_dev_attr_temp2_auto_temp_off.dev_attr.attr, &sensor_dev_attr_temp2_auto_temp_off.dev_attr.attr,
&sensor_dev_attr_temp3_auto_temp_off.dev_attr.attr, &sensor_dev_attr_temp3_auto_temp_off.dev_attr.attr,
NULL
}; };
static const struct attribute_group lm85_group_temp_off = { static const struct attribute_group lm85_group_temp_off = {
...@@ -1329,11 +1331,11 @@ static int lm85_probe(struct i2c_client *client, ...@@ -1329,11 +1331,11 @@ static int lm85_probe(struct i2c_client *client,
if (data->type != emc6d103s) { if (data->type != emc6d103s) {
err = sysfs_create_group(&client->dev.kobj, &lm85_group_minctl); err = sysfs_create_group(&client->dev.kobj, &lm85_group_minctl);
if (err) if (err)
goto err_kfree; goto err_remove_files;
err = sysfs_create_group(&client->dev.kobj, err = sysfs_create_group(&client->dev.kobj,
&lm85_group_temp_off); &lm85_group_temp_off);
if (err) if (err)
goto err_kfree; goto err_remove_files;
} }
/* The ADT7463/68 have an optional VRM 10 mode where pin 21 is used /* The ADT7463/68 have an optional VRM 10 mode where pin 21 is used
......
...@@ -49,10 +49,10 @@ ...@@ -49,10 +49,10 @@
* chips, but support three temperature sensors instead of two. MAX6695 * chips, but support three temperature sensors instead of two. MAX6695
* and MAX6696 only differ in the pinout so they can be treated identically. * and MAX6696 only differ in the pinout so they can be treated identically.
* *
* This driver also supports the ADT7461 chip from Analog Devices. * This driver also supports ADT7461 and ADT7461A from Analog Devices as well as
* It's supported in both compatibility and extended mode. It is mostly * NCT1008 from ON Semiconductor. The chips are supported in both compatibility
* compatible with LM90 except for a data format difference for the * and extended mode. They are mostly compatible with LM90 except for a data
* temperature value registers. * format difference for the temperature value registers.
* *
* Since the LM90 was the first chipset supported by this driver, most * Since the LM90 was the first chipset supported by this driver, most
* comments will refer to this chipset, but are actually general and * comments will refer to this chipset, but are actually general and
...@@ -88,9 +88,10 @@ ...@@ -88,9 +88,10 @@
* Addresses to scan * Addresses to scan
* Address is fully defined internally and cannot be changed except for * Address is fully defined internally and cannot be changed except for
* MAX6659, MAX6680 and MAX6681. * MAX6659, MAX6680 and MAX6681.
* LM86, LM89, LM90, LM99, ADM1032, ADM1032-1, ADT7461, MAX6649, MAX6657, * LM86, LM89, LM90, LM99, ADM1032, ADM1032-1, ADT7461, ADT7461A, MAX6649,
* MAX6658 and W83L771 have address 0x4c. * MAX6657, MAX6658, NCT1008 and W83L771 have address 0x4c.
* ADM1032-2, ADT7461-2, LM89-1, LM99-1 and MAX6646 have address 0x4d. * ADM1032-2, ADT7461-2, ADT7461A-2, LM89-1, LM99-1, MAX6646, and NCT1008D
* have address 0x4d.
* MAX6647 has address 0x4e. * MAX6647 has address 0x4e.
* MAX6659 can have address 0x4c, 0x4d or 0x4e. * MAX6659 can have address 0x4c, 0x4d or 0x4e.
* MAX6680 and MAX6681 can have address 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, * 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,6 +175,7 @@ enum chips { lm90, adm1032, lm99, lm86, max6657, max6659, adt7461, max6680,
static const struct i2c_device_id lm90_id[] = { static const struct i2c_device_id lm90_id[] = {
{ "adm1032", adm1032 }, { "adm1032", adm1032 },
{ "adt7461", adt7461 }, { "adt7461", adt7461 },
{ "adt7461a", adt7461 },
{ "lm90", lm90 }, { "lm90", lm90 },
{ "lm86", lm86 }, { "lm86", lm86 },
{ "lm89", lm86 }, { "lm89", lm86 },
...@@ -188,6 +190,7 @@ static const struct i2c_device_id lm90_id[] = { ...@@ -188,6 +190,7 @@ static const struct i2c_device_id lm90_id[] = {
{ "max6681", max6680 }, { "max6681", max6680 },
{ "max6695", max6696 }, { "max6695", max6696 },
{ "max6696", max6696 }, { "max6696", max6696 },
{ "nct1008", adt7461 },
{ "w83l771", w83l771 }, { "w83l771", w83l771 },
{ } { }
}; };
...@@ -1153,6 +1156,11 @@ static int lm90_detect(struct i2c_client *new_client, ...@@ -1153,6 +1156,11 @@ static int lm90_detect(struct i2c_client *new_client,
&& (reg_config1 & 0x1B) == 0x00 && (reg_config1 & 0x1B) == 0x00
&& reg_convrate <= 0x0A) { && reg_convrate <= 0x0A) {
name = "adt7461"; name = "adt7461";
} else
if (chip_id == 0x57 /* ADT7461A, NCT1008 */
&& (reg_config1 & 0x1B) == 0x00
&& reg_convrate <= 0x0A) {
name = "adt7461a";
} }
} else } else
if (man_id == 0x4D) { /* Maxim */ if (man_id == 0x4D) { /* Maxim */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment