hwmon: (pmbus/max16601) Add support for MAX16600
authorGuenter Roeck <linux@roeck-us.net>
Tue, 24 Jan 2023 16:15:08 +0000 (08:15 -0800)
committerGuenter Roeck <linux@roeck-us.net>
Fri, 3 Feb 2023 15:30:11 +0000 (07:30 -0800)
From programming perspective, MAX16600 is identical to MAX16601 and
MAX16602. Add support for it.

Cc: Steve Foreman <foremans@google.com>
Cc: Holly Barrett <holly.barrett@analog.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Documentation/hwmon/max16601.rst
drivers/hwmon/pmbus/Kconfig
drivers/hwmon/pmbus/max16601.c

index 6a4eef8..c8c63a0 100644 (file)
@@ -13,6 +13,14 @@ Supported chips:
 
     Datasheet: Not published
 
+  * Maxim MAX16600
+
+    Prefix: 'max16600'
+
+    Addresses scanned: -
+
+    Datasheet: Not published
+
   * Maxim MAX16601
 
     Prefix: 'max16601'
@@ -36,7 +44,8 @@ Description
 -----------
 
 This driver supports the MAX16508 VR13 Dual-Output Voltage Regulator
-as well as the MAX16601 VR13.HC Dual-Output Voltage Regulator chipsets.
+as well as the MAX16600, MAX16601, and MAX16602 VR13.HC Dual-Output
+Voltage Regulator chipsets.
 
 The driver is a client driver to the core PMBus driver.
 Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
index 9f4bbb9..59d9a74 100644 (file)
@@ -237,10 +237,10 @@ config SENSORS_MAX16064
          be called max16064.
 
 config SENSORS_MAX16601
-       tristate "Maxim MAX16508, MAX16601, MAX16602"
+       tristate "Maxim MAX16508, MAX16600, MAX16601, and MAX16602"
        help
          If you say yes here you get hardware monitoring support for Maxim
-         MAX16508, MAX16601 and MAX16602.
+         MAX16508, MAX16600, MAX16601, and MAX16602.
 
          This driver can also be built as a module. If so, the module will
          be called max16601.
index b628405..6724f72 100644 (file)
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Hardware monitoring driver for Maxim MAX16508, MAX16601 and MAX16602.
+ * Hardware monitoring driver for Maxim MAX16508, MAX16600, MAX16601,
+ * and MAX16602.
  *
  * Implementation notes:
  *
@@ -31,7 +32,7 @@
 
 #include "pmbus.h"
 
-enum chips { max16508, max16601, max16602 };
+enum chips { max16508, max16600, max16601, max16602 };
 
 #define REG_DEFAULT_NUM_POP    0xc4
 #define REG_SETPT_DVID         0xd1
@@ -202,7 +203,7 @@ static int max16601_identify(struct i2c_client *client,
        else
                info->vrm_version[0] = vr12;
 
-       if (data->id != max16601 && data->id != max16602)
+       if (data->id != max16600 && data->id != max16601 && data->id != max16602)
                return 0;
 
        reg = i2c_smbus_read_byte_data(client, REG_DEFAULT_NUM_POP);
@@ -263,6 +264,7 @@ static void max16601_remove(void *_data)
 
 static const struct i2c_device_id max16601_id[] = {
        {"max16508", max16508},
+       {"max16600", max16600},
        {"max16601", max16601},
        {"max16602", max16602},
        {}
@@ -281,11 +283,13 @@ static int max16601_get_id(struct i2c_client *client)
                return -ENODEV;
 
        /*
-        * PMBUS_IC_DEVICE_ID is expected to return "MAX16601y.xx" or
-        * MAX16602y.xx or "MAX16500y.xx".cdxxcccccccccc
+        * PMBUS_IC_DEVICE_ID is expected to return MAX1660[012]y.xx" or
+        * "MAX16500y.xx".cdxxcccccccccc
         */
        if (!strncmp(buf, "MAX16500", 8)) {
                id = max16508;
+       } else if (!strncmp(buf, "MAX16600", 8)) {
+               id = max16600;
        } else if (!strncmp(buf, "MAX16601", 8)) {
                id = max16601;
        } else if (!strncmp(buf, "MAX16602", 8)) {