diff options
author | Jean Delvare <khali@linux-fr.org> | 2010-03-05 16:17:13 -0500 |
---|---|---|
committer | Jean Delvare <khali@linux-fr.org> | 2010-03-05 16:17:13 -0500 |
commit | 6771ea1fff988651593f78c122bc02e80f5100a0 (patch) | |
tree | a7583f89769b553d7d8bbba42d30687043cd4a35 /drivers | |
parent | 64ba9926759792cf7b95f823402e2781edd1b5d4 (diff) |
hwmon: (lm90) Add support for the Winbond/Nuvoton W83L771AWG/ASG
This chips is found on several Zotac Ion ITX boards, amongst others.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: MC Matti <mcmatti17@googlemail.com>
Cc: Manuel Lamotte-Schubert <mls@pronego.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/hwmon/Kconfig | 5 | ||||
-rw-r--r-- | drivers/hwmon/lm90.c | 12 |
2 files changed, 14 insertions, 3 deletions
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 */ |