diff options
author | Guenter Roeck <linux@roeck-us.net> | 2013-09-23 13:56:48 -0400 |
---|---|---|
committer | Guenter Roeck <linux@roeck-us.net> | 2013-10-18 12:12:03 -0400 |
commit | c24c407e963e73d3ad18b9bc0af32cf23f37a7b0 (patch) | |
tree | c9c9be213ffdc875f9db74d9371c53c96dec9b23 /drivers/hwmon | |
parent | c8ccab7ab5c71b4fab274bfd18425503a4dcc288 (diff) |
hwmon: (pmbus/ltc2978): Add support for LTC2977
LTC2977 is a pin compatible replacement for LTC2978.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/pmbus/ltc2978.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/hwmon/pmbus/ltc2978.c b/drivers/hwmon/pmbus/ltc2978.c index 586a89ef9e0f..e05ff565ef61 100644 --- a/drivers/hwmon/pmbus/ltc2978.c +++ b/drivers/hwmon/pmbus/ltc2978.c | |||
@@ -1,5 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Hardware monitoring driver for LTC2974, LTC2978, LTC3880, and LTC3883 | 2 | * Hardware monitoring driver for LTC2974, LTC2977, LTC2978, LTC3880, |
3 | * and LTC3883 | ||
3 | * | 4 | * |
4 | * Copyright (c) 2011 Ericsson AB. | 5 | * Copyright (c) 2011 Ericsson AB. |
5 | * Copyright (c) 2013 Guenter Roeck | 6 | * Copyright (c) 2013 Guenter Roeck |
@@ -27,7 +28,7 @@ | |||
27 | #include <linux/i2c.h> | 28 | #include <linux/i2c.h> |
28 | #include "pmbus.h" | 29 | #include "pmbus.h" |
29 | 30 | ||
30 | enum chips { ltc2974, ltc2978, ltc3880, ltc3883 }; | 31 | enum chips { ltc2974, ltc2977, ltc2978, ltc3880, ltc3883 }; |
31 | 32 | ||
32 | /* Common for all chips */ | 33 | /* Common for all chips */ |
33 | #define LTC2978_MFR_VOUT_PEAK 0xdd | 34 | #define LTC2978_MFR_VOUT_PEAK 0xdd |
@@ -35,7 +36,7 @@ enum chips { ltc2974, ltc2978, ltc3880, ltc3883 }; | |||
35 | #define LTC2978_MFR_TEMPERATURE_PEAK 0xdf | 36 | #define LTC2978_MFR_TEMPERATURE_PEAK 0xdf |
36 | #define LTC2978_MFR_SPECIAL_ID 0xe7 | 37 | #define LTC2978_MFR_SPECIAL_ID 0xe7 |
37 | 38 | ||
38 | /* LTC2974 and LTC2978 */ | 39 | /* LTC2974, LCT2977, and LTC2978 */ |
39 | #define LTC2978_MFR_VOUT_MIN 0xfb | 40 | #define LTC2978_MFR_VOUT_MIN 0xfb |
40 | #define LTC2978_MFR_VIN_MIN 0xfc | 41 | #define LTC2978_MFR_VIN_MIN 0xfc |
41 | #define LTC2978_MFR_TEMPERATURE_MIN 0xfd | 42 | #define LTC2978_MFR_TEMPERATURE_MIN 0xfd |
@@ -53,6 +54,7 @@ enum chips { ltc2974, ltc2978, ltc3880, ltc3883 }; | |||
53 | #define LTC3883_MFR_IIN_PEAK 0xe1 | 54 | #define LTC3883_MFR_IIN_PEAK 0xe1 |
54 | 55 | ||
55 | #define LTC2974_ID 0x0212 | 56 | #define LTC2974_ID 0x0212 |
57 | #define LTC2977_ID 0x0130 | ||
56 | #define LTC2978_ID_REV1 0x0121 | 58 | #define LTC2978_ID_REV1 0x0121 |
57 | #define LTC2978_ID_REV2 0x0122 | 59 | #define LTC2978_ID_REV2 0x0122 |
58 | #define LTC3880_ID 0x4000 | 60 | #define LTC3880_ID 0x4000 |
@@ -363,6 +365,7 @@ static int ltc2978_write_word_data(struct i2c_client *client, int page, | |||
363 | 365 | ||
364 | static const struct i2c_device_id ltc2978_id[] = { | 366 | static const struct i2c_device_id ltc2978_id[] = { |
365 | {"ltc2974", ltc2974}, | 367 | {"ltc2974", ltc2974}, |
368 | {"ltc2977", ltc2977}, | ||
366 | {"ltc2978", ltc2978}, | 369 | {"ltc2978", ltc2978}, |
367 | {"ltc3880", ltc3880}, | 370 | {"ltc3880", ltc3880}, |
368 | {"ltc3883", ltc3883}, | 371 | {"ltc3883", ltc3883}, |
@@ -392,6 +395,8 @@ static int ltc2978_probe(struct i2c_client *client, | |||
392 | 395 | ||
393 | if (chip_id == LTC2974_ID) { | 396 | if (chip_id == LTC2974_ID) { |
394 | data->id = ltc2974; | 397 | data->id = ltc2974; |
398 | } else if (chip_id == LTC2977_ID) { | ||
399 | data->id = ltc2977; | ||
395 | } else if (chip_id == LTC2978_ID_REV1 || chip_id == LTC2978_ID_REV2) { | 400 | } else if (chip_id == LTC2978_ID_REV1 || chip_id == LTC2978_ID_REV2) { |
396 | data->id = ltc2978; | 401 | data->id = ltc2978; |
397 | } else if ((chip_id & LTC3880_ID_MASK) == LTC3880_ID) { | 402 | } else if ((chip_id & LTC3880_ID_MASK) == LTC3880_ID) { |
@@ -438,6 +443,7 @@ static int ltc2978_probe(struct i2c_client *client, | |||
438 | | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT; | 443 | | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT; |
439 | } | 444 | } |
440 | break; | 445 | break; |
446 | case ltc2977: | ||
441 | case ltc2978: | 447 | case ltc2978: |
442 | info->read_word_data = ltc2978_read_word_data; | 448 | info->read_word_data = ltc2978_read_word_data; |
443 | info->pages = LTC2978_NUM_PAGES; | 449 | info->pages = LTC2978_NUM_PAGES; |