hwmon: (ltc2978) Add support for LTM4675
authorGuenter Roeck <linux@roeck-us.net>
Tue, 18 Aug 2015 03:08:09 +0000 (20:08 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 19 Aug 2015 16:08:55 +0000 (09:08 -0700)
LTM2975 is a dual 9A or single 18A μModule regulator.
It is register compatible with LTM4676.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Documentation/hwmon/ltc2978
drivers/hwmon/pmbus/Kconfig
drivers/hwmon/pmbus/ltc2978.c

index f997aa53eb95c373872241c7ad8c8e238f049365..9a49d3c90cd1a7f2a28b19f0850cdc2bd00dbbae 100644 (file)
@@ -47,6 +47,10 @@ Supported chips:
     Prefix: 'ltm2987'
     Addresses scanned: -
     Datasheet: http://www.linear.com/product/ltm2987
+  * Linear Technology LTM4675
+    Prefix: 'ltm4675'
+    Addresses scanned: -
+    Datasheet: http://www.linear.com/product/ltm4675
   * Linear Technology LTM4676
     Prefix: 'ltm4676'
     Addresses scanned: -
@@ -70,6 +74,7 @@ LTC3883 is a single phase step-down DC/DC controller.
 LTM2987 is a 16-channel Power System Manager with two LTC2977 plus
 additional components on a single die. The chip is instantiated and reported
 as two separate chips on two different I2C bus addresses.
+LTM4675 is a dual 9A or single 18A μModule regulator
 LTM4676 is a dual 13A or single 26A uModule regulator.
 
 
@@ -117,7 +122,8 @@ in[N]_label         "vout[1-8]".
                        LTC2974, LTC2975: N=2-5
                        LTC2977, LTC2980, LTM2987: N=2-9
                        LTC2978: N=2-9
-                       LTC3880, LTC3882, LTC23886 LTC3887, LTM4676: N=2-3
+                       LTC3880, LTC3882, LTC23886 LTC3887, LTM4675, LTM4676:
+                               N=2-3
                        LTC3883: N=2
 in[N]_input            Measured output voltage.
 in[N]_min              Minimum output voltage.
@@ -139,9 +145,9 @@ temp[N]_input               Measured temperature.
                        On LTC2977, LTC2980, LTC2978, and LTM2987, only one
                        temperature measurement is supported and reports
                        the chip temperature.
-                       On LTC3880, LTC3882, LTC3887, and LTM4676, temp1 and
-                       temp2 report external temperatures, and temp3 reports
-                       the chip temperature.
+                       On LTC3880, LTC3882, LTC3887, LTM4675, and LTM4676,
+                       temp1 and temp2 report external temperatures, and temp3
+                       reports the chip temperature.
                        On LTC3883, temp1 reports an external temperature,
                        and temp2 reports the chip temperature.
 temp[N]_min            Mimimum temperature. LTC2974, LCT2977, LTM2980, LTC2978,
@@ -172,12 +178,13 @@ power[N]_label            "pout[1-4]".
                        LTC2974, LTC2975: N=1-4
                        LTC2977, LTC2980, LTM2987: Not supported
                        LTC2978: Not supported
-                       LTC3880, LTC3882, LTC3886, LTC3887, LTM4676: N=1-2
+                       LTC3880, LTC3882, LTC3886, LTC3887, LTM4675, LTM4676:
+                               N=1-2
                        LTC3883: N=2
 power[N]_input         Measured output power.
 
-curr1_label            "iin". LTC3880, LTC3883, LTC3886, LTC3887, and LTM4676
-                       only.
+curr1_label            "iin". LTC3880, LTC3883, LTC3886, LTC3887, LTM4675,
+                       and LTM4676 only.
 curr1_input            Measured input current.
 curr1_max              Maximum input current.
 curr1_max_alarm                Input current high alarm.
@@ -188,7 +195,8 @@ curr[N]_label               "iout[1-4]".
                        LTC2974, LTC2975: N=1-4
                        LTC2977, LTC2980, LTM2987: not supported
                        LTC2978: not supported
-                       LTC3880, LTC3882, LTC3886, LTC3887, LTM4676: N=2-3
+                       LTC3880, LTC3882, LTC3886, LTC3887, LTM4675, LTM4676:
+                               N=2-3
                        LTC3883: N=2
 curr[N]_input          Measured output current.
 curr[N]_max            Maximum output current.
index 5ebc36255c8897168f1fba509669c6d65aa4a933..df6ebb2b8f0f94e3eb82ccdb6b380674f50d3b20 100644 (file)
@@ -53,7 +53,7 @@ config SENSORS_LTC2978
        help
          If you say yes here you get hardware monitoring support for Linear
          Technology LTC2974, LTC2975, LTC2977, LTC2978, LTC2980, LTC3880,
-         LTC3883, LTC3886, LTC3887, LTCM2987, and LTM4676.
+         LTC3883, LTC3886, LTC3887, LTCM2987, LTM4675, and LTM4676.
 
          This driver can also be built as a module. If so, the module will
          be called ltc2978.
index f1c69c9de8498a6a9b03fcce181f099beec9ba6a..58b789c28b483f062b17822a32487be6bdba14ee 100644 (file)
@@ -28,7 +28,7 @@
 #include "pmbus.h"
 
 enum chips { ltc2974, ltc2975, ltc2977, ltc2978, ltc2980, ltc3880, ltc3882,
-       ltc3883, ltc3886, ltc3887, ltm2987, ltm4676 };
+       ltc3883, ltc3886, ltc3887, ltm2987, ltm4675, ltm4676 };
 
 /* Common for all chips */
 #define LTC2978_MFR_VOUT_PEAK          0xdd
@@ -46,7 +46,7 @@ enum chips { ltc2974, ltc2975, ltc2977, ltc2978, ltc2980, ltc3880, ltc3882,
 #define LTC2974_MFR_IOUT_PEAK          0xd7
 #define LTC2974_MFR_IOUT_MIN           0xd8
 
-/* LTC3880, LTC3882, LTC3883, LTC3887, and LTM4676 */
+/* LTC3880, LTC3882, LTC3883, LTC3887, LTM4675, and LTM4676 */
 #define LTC3880_MFR_IOUT_PEAK          0xd7
 #define LTC3880_MFR_CLEAR_PEAKS                0xe3
 #define LTC3880_MFR_TEMPERATURE2_PEAK  0xf4
@@ -77,6 +77,7 @@ enum chips { ltc2974, ltc2975, ltc2977, ltc2978, ltc2980, ltc3880, ltc3882,
 #define LTC3887_ID                     0x4700
 #define LTM2987_ID_A                   0x8010  /* A/B for two die IDs */
 #define LTM2987_ID_B                   0x8020
+#define LTM4675_ID                     0x47a0
 #define LTM4676_ID_REV1                        0x4400
 #define LTM4676_ID_REV2                        0x4480
 #define LTM4676A_ID                    0x47e0
@@ -509,6 +510,7 @@ static const struct i2c_device_id ltc2978_id[] = {
        {"ltc3886", ltc3886},
        {"ltc3887", ltc3887},
        {"ltm2987", ltm2987},
+       {"ltm4675", ltm4675},
        {"ltm4676", ltm4676},
        {}
 };
@@ -581,6 +583,8 @@ static int ltc2978_get_id(struct i2c_client *client)
                return ltc3887;
        else if (chip_id == LTM2987_ID_A || chip_id == LTM2987_ID_B)
                return ltm2987;
+       else if (chip_id == LTM4675_ID)
+               return ltm4675;
        else if (chip_id == LTM4676_ID_REV1 || chip_id == LTM4676_ID_REV2 ||
                 chip_id == LTM4676A_ID)
                return ltm4676;
@@ -678,6 +682,7 @@ static int ltc2978_probe(struct i2c_client *client,
                break;
        case ltc3880:
        case ltc3887:
+       case ltm4675:
        case ltm4676:
                data->features |= FEAT_CLEAR_PEAKS | FEAT_NEEDS_POLLING;
                info->read_word_data = ltc3880_read_word_data;
@@ -763,6 +768,7 @@ static const struct of_device_id ltc2978_of_match[] = {
        { .compatible = "lltc,ltc3886" },
        { .compatible = "lltc,ltc3887" },
        { .compatible = "lltc,ltm2987" },
+       { .compatible = "lltc,ltm4675" },
        { .compatible = "lltc,ltm4676" },
        { }
 };