summaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/pmbus
diff options
context:
space:
mode:
authorGuenter Roeck <linux@roeck-us.net>2015-08-17 09:27:56 -0400
committerGuenter Roeck <linux@roeck-us.net>2015-08-17 19:35:13 -0400
commitacb092cdf9a285fd4706bc6ffd5f99840d53bba5 (patch)
tree5505a01c4f0842e70cef36c0b8054cccabad352f /drivers/hwmon/pmbus
parent00c83371911836c47654e1de5b4706a0e578922a (diff)
hwmon: (ltc2978) Add missing chip IDs for LTC2978 and LTC3882
Add additional chip ID for an older revision of LTC2978, as well as two chip IDs for LTC3882. Turns out the LTC3882 does support the LTC2978_MFR_SPECIAL_ID register, and reading it returns its chip ID, but the register is undocumented. Suggested-by: Michael Jones <mike@proclivis.com> Tested-by: Michael Jones <mike@proclivis.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Diffstat (limited to 'drivers/hwmon/pmbus')
-rw-r--r--drivers/hwmon/pmbus/ltc2978.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/hwmon/pmbus/ltc2978.c b/drivers/hwmon/pmbus/ltc2978.c
index cc84ef514b8d..e9d3f828fe46 100644
--- a/drivers/hwmon/pmbus/ltc2978.c
+++ b/drivers/hwmon/pmbus/ltc2978.c
@@ -31,7 +31,7 @@ enum chips { ltc2974, ltc2975, ltc2977, ltc2978, ltc3880, ltc3882, ltc3883,
31#define LTC2978_MFR_VOUT_PEAK 0xdd 31#define LTC2978_MFR_VOUT_PEAK 0xdd
32#define LTC2978_MFR_VIN_PEAK 0xde 32#define LTC2978_MFR_VIN_PEAK 0xde
33#define LTC2978_MFR_TEMPERATURE_PEAK 0xdf 33#define LTC2978_MFR_TEMPERATURE_PEAK 0xdf
34#define LTC2978_MFR_SPECIAL_ID 0xe7 /* Not on LTC3882 */ 34#define LTC2978_MFR_SPECIAL_ID 0xe7 /* Undocumented on LTC3882 */
35 35
36/* LTC2974, LTC2975, LCT2977, and LTC2978 */ 36/* LTC2974, LTC2975, LCT2977, and LTC2978 */
37#define LTC2978_MFR_VOUT_MIN 0xfb 37#define LTC2978_MFR_VOUT_MIN 0xfb
@@ -61,8 +61,11 @@ enum chips { ltc2974, ltc2975, ltc2977, ltc2978, ltc3880, ltc3882, ltc3883,
61#define LTC2974_ID 0x0210 61#define LTC2974_ID 0x0210
62#define LTC2975_ID 0x0220 62#define LTC2975_ID 0x0220
63#define LTC2977_ID 0x0130 63#define LTC2977_ID 0x0130
64#define LTC2978_ID 0x0120 64#define LTC2978_ID_REV1 0x0110 /* Early revision */
65#define LTC2978_ID_REV2 0x0120
65#define LTC3880_ID 0x4020 66#define LTC3880_ID 0x4020
67#define LTC3882_ID 0x4200
68#define LTC3882_ID_D1 0x4240 /* Dash 1 */
66#define LTC3883_ID 0x4300 69#define LTC3883_ID 0x4300
67#define LTC3887_ID 0x4700 70#define LTC3887_ID 0x4700
68#define LTM4676_ID_REV1 0x4400 71#define LTM4676_ID_REV1 0x4400
@@ -466,10 +469,12 @@ static int ltc2978_get_id(struct i2c_client *client)
466 return ltc2975; 469 return ltc2975;
467 else if (chip_id == LTC2977_ID) 470 else if (chip_id == LTC2977_ID)
468 return ltc2977; 471 return ltc2977;
469 else if (chip_id == LTC2978_ID) 472 else if (chip_id == LTC2978_ID_REV1 || chip_id == LTC2978_ID_REV2)
470 return ltc2978; 473 return ltc2978;
471 else if (chip_id == LTC3880_ID) 474 else if (chip_id == LTC3880_ID)
472 return ltc3880; 475 return ltc3880;
476 else if (chip_id == LTC3882_ID || chip_id == LTC3882_ID_D1)
477 return ltc3882;
473 else if (chip_id == LTC3883_ID) 478 else if (chip_id == LTC3883_ID)
474 return ltc3883; 479 return ltc3883;
475 else if (chip_id == LTC3887_ID) 480 else if (chip_id == LTC3887_ID)