aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/hwmon/lm9012
-rw-r--r--drivers/hwmon/Kconfig2
-rw-r--r--drivers/hwmon/lm90.c25
3 files changed, 30 insertions, 9 deletions
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90
index 6e963b696d85..fa475c0a48a3 100644
--- a/Documentation/hwmon/lm90
+++ b/Documentation/hwmon/lm90
@@ -95,6 +95,10 @@ Supported chips:
95 0x4c, 0x4d and 0x4e 95 0x4c, 0x4d and 0x4e
96 Datasheet: Publicly available at the Maxim website 96 Datasheet: Publicly available at the Maxim website
97 http://www.maxim-ic.com/datasheet/index.mvp/id/4199 97 http://www.maxim-ic.com/datasheet/index.mvp/id/4199
98 * Winbond/Nuvoton W83L771W/G
99 Prefix: 'w83l771'
100 Addresses scanned: I2C 0x4c
101 Datasheet: No longer available
98 * Winbond/Nuvoton W83L771AWG/ASG 102 * Winbond/Nuvoton W83L771AWG/ASG
99 Prefix: 'w83l771' 103 Prefix: 'w83l771'
100 Addresses scanned: I2C 0x4c 104 Addresses scanned: I2C 0x4c
@@ -169,11 +173,15 @@ MAX6695 and MAX6696:
169 * Second critical temperature limit 173 * Second critical temperature limit
170 * Two remote sensors 174 * Two remote sensors
171 175
176W83L771W/G
177 * The G variant is lead-free, otherwise similar to the W.
178 * Filter and alert configuration register at 0xBF
179 * Moving average (depending on conversion rate)
180
172W83L771AWG/ASG 181W83L771AWG/ASG
182 * Successor of the W83L771W/G, same features.
173 * The AWG and ASG variants only differ in package format. 183 * The AWG and ASG variants only differ in package format.
174 * Filter and alert configuration register at 0xBF
175 * Diode ideality factor configuration (remote sensor) at 0xE3 184 * Diode ideality factor configuration (remote sensor) at 0xE3
176 * Moving average (depending on conversion rate)
177 185
178All temperature values are given in degrees Celsius. Resolution 186All temperature values are given in degrees Celsius. Resolution
179is 1.0 degree for the local temperature, 0.125 degree for the remote 187is 1.0 degree for the local temperature, 0.125 degree for the remote
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 9a3742b67c8c..3e88140b9d77 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -615,7 +615,7 @@ config SENSORS_LM90
615 LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, Maxim 615 LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, Maxim
616 MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659, 616 MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659,
617 MAX6680, MAX6681, MAX6692, MAX6695, MAX6696, and Winbond/Nuvoton 617 MAX6680, MAX6681, MAX6692, MAX6695, MAX6696, and Winbond/Nuvoton
618 W83L771AWG/ASG sensor chips. 618 W83L771W/G/AWG/ASG sensor chips.
619 619
620 This driver can also be built as a module. If so, the module 620 This driver can also be built as a module. If so, the module
621 will be called lm90. 621 will be called lm90.
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
index f9e76c757de8..812781c655a7 100644
--- a/drivers/hwmon/lm90.c
+++ b/drivers/hwmon/lm90.c
@@ -88,8 +88,8 @@
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, MAX6649, MAX6657,
92 * and MAX6658 have address 0x4c. 92 * MAX6658 and W83L771 have address 0x4c.
93 * ADM1032-2, ADT7461-2, LM89-1, LM99-1 and MAX6646 have address 0x4d. 93 * ADM1032-2, ADT7461-2, LM89-1, LM99-1 and MAX6646 have address 0x4d.
94 * MAX6647 has address 0x4e. 94 * MAX6647 has address 0x4e.
95 * MAX6659 can have address 0x4c, 0x4d or 0x4e. 95 * MAX6659 can have address 0x4c, 0x4d or 0x4e.
@@ -1237,10 +1237,23 @@ static int lm90_detect(struct i2c_client *new_client,
1237 } else 1237 } else
1238 if (address == 0x4C 1238 if (address == 0x4C
1239 && man_id == 0x5C) { /* Winbond/Nuvoton */ 1239 && man_id == 0x5C) { /* Winbond/Nuvoton */
1240 if ((chip_id & 0xFE) == 0x10 /* W83L771AWG/ASG */ 1240 int reg_config2;
1241 && (reg_config1 & 0x2A) == 0x00 1241
1242 && reg_convrate <= 0x08) { 1242 reg_config2 = i2c_smbus_read_byte_data(new_client,
1243 name = "w83l771"; 1243 LM90_REG_R_CONFIG2);
1244 if (reg_config2 < 0)
1245 return -ENODEV;
1246
1247 if ((reg_config1 & 0x2A) == 0x00
1248 && (reg_config2 & 0xF8) == 0x00) {
1249 if (chip_id == 0x01 /* W83L771W/G */
1250 && reg_convrate <= 0x09) {
1251 name = "w83l771";
1252 } else
1253 if ((chip_id & 0xFE) == 0x10 /* W83L771AWG/ASG */
1254 && reg_convrate <= 0x08) {
1255 name = "w83l771";
1256 }
1244 } 1257 }
1245 } 1258 }
1246 1259