diff options
-rw-r--r-- | Documentation/hwmon/lm90 | 10 | ||||
-rw-r--r-- | drivers/hwmon/Kconfig | 5 | ||||
-rw-r--r-- | drivers/hwmon/lm90.c | 12 |
3 files changed, 24 insertions, 3 deletions
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 index 93d8e3d55150..08106ad7089c 100644 --- a/Documentation/hwmon/lm90 +++ b/Documentation/hwmon/lm90 | |||
@@ -84,6 +84,10 @@ Supported chips: | |||
84 | Addresses scanned: I2C 0x4c | 84 | Addresses scanned: I2C 0x4c |
85 | Datasheet: Publicly available at the Maxim website | 85 | Datasheet: Publicly available at the Maxim website |
86 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500 | 86 | http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500 |
87 | * Winbond/Nuvoton W83L771AWG/ASG | ||
88 | Prefix: 'w83l771' | ||
89 | Addresses scanned: I2C 0x4c | ||
90 | Datasheet: Not publicly available, can be requested from Nuvoton | ||
87 | 91 | ||
88 | 92 | ||
89 | Author: Jean Delvare <khali@linux-fr.org> | 93 | Author: Jean Delvare <khali@linux-fr.org> |
@@ -147,6 +151,12 @@ MAX6680 and MAX6681: | |||
147 | * Selectable address | 151 | * Selectable address |
148 | * Remote sensor type selection | 152 | * Remote sensor type selection |
149 | 153 | ||
154 | W83L771AWG/ASG | ||
155 | * The AWG and ASG variants only differ in package format. | ||
156 | * Filter and alert configuration register at 0xBF | ||
157 | * Diode ideality factor configuration (remote sensor) at 0xE3 | ||
158 | * Moving average (depending on conversion rate) | ||
159 | |||
150 | All temperature values are given in degrees Celsius. Resolution | 160 | All temperature values are given in degrees Celsius. Resolution |
151 | is 1.0 degree for the local temperature, 0.125 degree for the remote | 161 | is 1.0 degree for the local temperature, 0.125 degree for the remote |
152 | temperature, except for the MAX6657, MAX6658 and MAX6659 which have a | 162 | temperature, except for the MAX6657, MAX6658 and MAX6659 which have a |
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 68cf87749a42..9234c2e2c7d9 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig | |||
@@ -563,9 +563,10 @@ config SENSORS_LM90 | |||
563 | depends on I2C | 563 | depends on I2C |
564 | help | 564 | help |
565 | If you say yes here you get support for National Semiconductor LM90, | 565 | If you say yes here you get support for National Semiconductor LM90, |
566 | LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, and Maxim | 566 | LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, Maxim |
567 | MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659, | 567 | MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659, |
568 | MAX6680, MAX6681 and MAX6692 sensor chips. | 568 | MAX6680, MAX6681 and MAX6692, and Winbond/Nuvoton W83L771AWG/ASG |
569 | sensor chips. | ||
569 | 570 | ||
570 | This driver can also be built as a module. If so, the module | 571 | This driver can also be built as a module. If so, the module |
571 | will be called lm90. | 572 | will be called lm90. |
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c index 7c9bdc167426..ddf617f3a713 100644 --- a/drivers/hwmon/lm90.c +++ b/drivers/hwmon/lm90.c | |||
@@ -93,7 +93,8 @@ | |||
93 | static const unsigned short normal_i2c[] = { | 93 | static const unsigned short normal_i2c[] = { |
94 | 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END }; | 94 | 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END }; |
95 | 95 | ||
96 | enum chips { lm90, adm1032, lm99, lm86, max6657, adt7461, max6680, max6646 }; | 96 | enum chips { lm90, adm1032, lm99, lm86, max6657, adt7461, max6680, max6646, |
97 | w83l771 }; | ||
97 | 98 | ||
98 | /* | 99 | /* |
99 | * The LM90 registers | 100 | * The LM90 registers |
@@ -173,6 +174,7 @@ static const struct i2c_device_id lm90_id[] = { | |||
173 | { "max6659", max6657 }, | 174 | { "max6659", max6657 }, |
174 | { "max6680", max6680 }, | 175 | { "max6680", max6680 }, |
175 | { "max6681", max6680 }, | 176 | { "max6681", max6680 }, |
177 | { "w83l771", w83l771 }, | ||
176 | { } | 178 | { } |
177 | }; | 179 | }; |
178 | MODULE_DEVICE_TABLE(i2c, lm90_id); | 180 | MODULE_DEVICE_TABLE(i2c, lm90_id); |
@@ -758,6 +760,14 @@ static int lm90_detect(struct i2c_client *new_client, | |||
758 | && reg_convrate <= 0x07) { | 760 | && reg_convrate <= 0x07) { |
759 | name = "max6646"; | 761 | name = "max6646"; |
760 | } | 762 | } |
763 | } else | ||
764 | if (address == 0x4C | ||
765 | && man_id == 0x5C) { /* Winbond/Nuvoton */ | ||
766 | if ((chip_id & 0xFE) == 0x10 /* W83L771AWG/ASG */ | ||
767 | && (reg_config1 & 0x2A) == 0x00 | ||
768 | && reg_convrate <= 0x08) { | ||
769 | name = "w83l771"; | ||
770 | } | ||
761 | } | 771 | } |
762 | 772 | ||
763 | if (!name) { /* identification failed */ | 773 | if (!name) { /* identification failed */ |