Commit 00c83371 authored by Guenter Roeck's avatar Guenter Roeck

hwmon: (ltc2978) Use correct ID mask to detect all chips

Per information from Linear Technologies, the ID mask is 12 bit
for all chips of this series. Use this mask to detect chips to ensure
that all chip revisions are detected.
Suggested-by: default avatarMichael Jones <mike@proclivis.com>
Tested-by: default avatarMichael Jones <mike@proclivis.com>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent ee847a25
...@@ -56,23 +56,18 @@ enum chips { ltc2974, ltc2975, ltc2977, ltc2978, ltc3880, ltc3882, ltc3883, ...@@ -56,23 +56,18 @@ enum chips { ltc2974, ltc2975, ltc2977, ltc2978, ltc3880, ltc3882, ltc3883,
#define LTC2975_MFR_PIN_PEAK 0xc6 #define LTC2975_MFR_PIN_PEAK 0xc6
#define LTC2975_MFR_PIN_MIN 0xc7 #define LTC2975_MFR_PIN_MIN 0xc7
#define LTC2974_ID_REV1 0x0212 #define LTC2978_ID_MASK 0xfff0
#define LTC2974_ID_REV2 0x0213
#define LTC2975_ID 0x0223 #define LTC2974_ID 0x0210
#define LTC2975_ID 0x0220
#define LTC2977_ID 0x0130 #define LTC2977_ID 0x0130
#define LTC2978_ID_REV1 0x0121 #define LTC2978_ID 0x0120
#define LTC2978_ID_REV2 0x0122 #define LTC3880_ID 0x4020
#define LTC2978A_ID 0x0124
#define LTC3880_ID 0x4000
#define LTC3880_ID_MASK 0xff00
#define LTC3883_ID 0x4300 #define LTC3883_ID 0x4300
#define LTC3883_ID_MASK 0xff00
#define LTC3887_ID 0x4700 #define LTC3887_ID 0x4700
#define LTC3887_ID_MASK 0xff00 #define LTM4676_ID_REV1 0x4400
#define LTM4676_ID 0x4400 #define LTM4676_ID_REV2 0x4480
#define LTM4676_ID_2 0x4480
#define LTM4676A_ID 0x47e0 #define LTM4676A_ID 0x47e0
#define LTM4676_ID_MASK 0xfff0
#define LTC2974_NUM_PAGES 4 #define LTC2974_NUM_PAGES 4
#define LTC2978_NUM_PAGES 8 #define LTC2978_NUM_PAGES 8
...@@ -463,24 +458,24 @@ static int ltc2978_get_id(struct i2c_client *client) ...@@ -463,24 +458,24 @@ static int ltc2978_get_id(struct i2c_client *client)
return -ENODEV; return -ENODEV;
} }
if (chip_id == LTC2974_ID_REV1 || chip_id == LTC2974_ID_REV2) chip_id &= LTC2978_ID_MASK;
if (chip_id == LTC2974_ID)
return ltc2974; return ltc2974;
else if (chip_id == LTC2975_ID) else if (chip_id == LTC2975_ID)
return ltc2975; return ltc2975;
else if (chip_id == LTC2977_ID) else if (chip_id == LTC2977_ID)
return ltc2977; return ltc2977;
else if (chip_id == LTC2978_ID_REV1 || chip_id == LTC2978_ID_REV2 || else if (chip_id == LTC2978_ID)
chip_id == LTC2978A_ID)
return ltc2978; return ltc2978;
else if ((chip_id & LTC3880_ID_MASK) == LTC3880_ID) else if (chip_id == LTC3880_ID)
return ltc3880; return ltc3880;
else if ((chip_id & LTC3883_ID_MASK) == LTC3883_ID) else if (chip_id == LTC3883_ID)
return ltc3883; return ltc3883;
else if ((chip_id & LTC3887_ID_MASK) == LTC3887_ID) else if (chip_id == LTC3887_ID)
return ltc3887; return ltc3887;
else if ((chip_id & LTM4676_ID_MASK) == LTM4676_ID || else if (chip_id == LTM4676_ID_REV1 || chip_id == LTM4676_ID_REV2 ||
(chip_id & LTM4676_ID_MASK) == LTM4676_ID_2 || chip_id == LTM4676A_ID)
(chip_id & LTM4676_ID_MASK) == LTM4676A_ID)
return ltm4676; return ltm4676;
dev_err(&client->dev, "Unsupported chip ID 0x%x\n", chip_id); dev_err(&client->dev, "Unsupported chip ID 0x%x\n", chip_id);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment