diff options
-rw-r--r-- | Documentation/hwmon/lm90 | 12 | ||||
-rw-r--r-- | drivers/hwmon/Kconfig | 2 | ||||
-rw-r--r-- | drivers/hwmon/lm90.c | 25 |
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 | ||
176 | W83L771W/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 | |||
172 | W83L771AWG/ASG | 181 | W83L771AWG/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 | ||
178 | All temperature values are given in degrees Celsius. Resolution | 186 | All temperature values are given in degrees Celsius. Resolution |
179 | is 1.0 degree for the local temperature, 0.125 degree for the remote | 187 | is 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 | ||