devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Add support for MAX17616/MAX17616A hwmon device
@ 2025-09-30  5:02 Kim Seer Paller
  2025-09-30  5:02 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616 Kim Seer Paller
  2025-09-30  5:02 ` [PATCH 2/2] hwmon: (pmbus/max17616): add driver for max17616 Kim Seer Paller
  0 siblings, 2 replies; 9+ messages in thread
From: Kim Seer Paller @ 2025-09-30  5:02 UTC (permalink / raw)
  To: Kim Seer Paller, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jonathan Corbet
  Cc: linux-hwmon, devicetree, linux-kernel, linux-doc

The MAX17616/MAX17616A is a current-limiter with overvoltage/surge,
undervoltage, reverse polarity, loss of ground protection with PMBus
interface. The PMBus interface allows monitoring of input/output
voltages, output current and temperature.

More info: https://www.analog.com/media/en/technical-documentation/data-sheets/max17616-max17616a.pdf

Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>
---
Kim Seer Paller (2):
      dt-bindings: hwmon: pmbus: add max17616
      hwmon: (pmbus/max17616): add driver for max17616

 .../bindings/hwmon/pmbus/adi,max17616.yaml         | 48 ++++++++++++++
 Documentation/hwmon/index.rst                      |  1 +
 Documentation/hwmon/max17616.rst                   | 62 ++++++++++++++++++
 MAINTAINERS                                        |  9 +++
 drivers/hwmon/pmbus/Kconfig                        |  9 +++
 drivers/hwmon/pmbus/Makefile                       |  1 +
 drivers/hwmon/pmbus/max17616.c                     | 73 ++++++++++++++++++++++
 7 files changed, 203 insertions(+)
---
base-commit: 76bb6969a8cfc5e00ca142fdad86ffd0a6ed9ecd
change-id: 20250930-upstream-max17616-cd10988eb77a

Best regards,
-- 
Kim Seer Paller <kimseer.paller@analog.com>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616
  2025-09-30  5:02 [PATCH 0/2] Add support for MAX17616/MAX17616A hwmon device Kim Seer Paller
@ 2025-09-30  5:02 ` Kim Seer Paller
  2025-09-30 18:54   ` Conor Dooley
                     ` (2 more replies)
  2025-09-30  5:02 ` [PATCH 2/2] hwmon: (pmbus/max17616): add driver for max17616 Kim Seer Paller
  1 sibling, 3 replies; 9+ messages in thread
From: Kim Seer Paller @ 2025-09-30  5:02 UTC (permalink / raw)
  To: Kim Seer Paller, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jonathan Corbet
  Cc: linux-hwmon, devicetree, linux-kernel, linux-doc

Add device tree documentation for MAX17616/MAX17616A current-limiter
with overvoltage/surge, undervoltage, reverse polarity, loss of ground
protection with PMBus interface.

Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>
---
 .../bindings/hwmon/pmbus/adi,max17616.yaml         | 48 ++++++++++++++++++++++
 MAINTAINERS                                        |  7 ++++
 2 files changed, 55 insertions(+)

diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/adi,max17616.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/adi,max17616.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4680d354af0ef706bbd90d2546f5f25149654b6c
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/pmbus/adi,max17616.yaml
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/pmbus/adi,max17616.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices MAX17616/MAX17616A Current-Limiter with PMBus Interface
+
+maintainers:
+  - Kim Seer Paller <kimseer.paller@analog.com>
+
+description: |
+  The MAX17616/MAX17616A is a 3V to 80V, 7A current-limiter with overvoltage,
+  surge, undervoltage, reverse polarity, and loss of ground protection. It allows
+  monitoring of input/output voltage, output current and temperature through the
+  PMBus serial interface.
+  Datasheet:
+    https://www.analog.com/en/products/max17616.html
+
+properties:
+  compatible:
+    const: adi,max17616
+
+  reg:
+    maxItems: 1
+
+  vcc-supply: true
+
+required:
+  - compatible
+  - reg
+  - vcc-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        hwmon@16 {
+            compatible = "adi,max17616";
+            reg = <0x16>;
+            vcc-supply = <&vcc>;
+        };
+    };
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index 8e314837eaa4168a66b9077dd8293433a378abe5..89d35faf93c9d2e984b73f5c09d09044ee6eddb2 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14917,6 +14917,13 @@ S:	Maintained
 F:	Documentation/hwmon/max15301.rst
 F:	drivers/hwmon/pmbus/max15301.c
 
+MAX17616 HARDWARE MONITOR DRIVER
+M:	Kim Seer Paller <kimseer.paller@analog.com>
+L:	linux-hwmon@vger.kernel.org
+S:	Supported
+W:	https://ez.analog.com/linux-software-drivers
+F:	Documentation/devicetree/bindings/hwmon/pmbus/adi,max17616.yaml
+
 MAX2175 SDR TUNER DRIVER
 M:	Ramesh Shanmugasundaram <rashanmu@gmail.com>
 L:	linux-media@vger.kernel.org

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/2] hwmon: (pmbus/max17616): add driver for max17616
  2025-09-30  5:02 [PATCH 0/2] Add support for MAX17616/MAX17616A hwmon device Kim Seer Paller
  2025-09-30  5:02 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616 Kim Seer Paller
@ 2025-09-30  5:02 ` Kim Seer Paller
  2025-09-30 10:26   ` Guenter Roeck
  2025-10-02 20:55   ` Guenter Roeck
  1 sibling, 2 replies; 9+ messages in thread
From: Kim Seer Paller @ 2025-09-30  5:02 UTC (permalink / raw)
  To: Kim Seer Paller, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jonathan Corbet
  Cc: linux-hwmon, devicetree, linux-kernel, linux-doc

Add support for MAX17616/MAX17616A current-limiter with
overvoltage/surge, undervoltage, reverse polarity, loss of ground
protection with PMBus interface. The PMBus interface allows monitoring
of input/output voltages, output current and temperature.

Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>
---
 Documentation/hwmon/index.rst    |  1 +
 Documentation/hwmon/max17616.rst | 62 ++++++++++++++++++++++++++++++++++
 MAINTAINERS                      |  2 ++
 drivers/hwmon/pmbus/Kconfig      |  9 +++++
 drivers/hwmon/pmbus/Makefile     |  1 +
 drivers/hwmon/pmbus/max17616.c   | 73 ++++++++++++++++++++++++++++++++++++++++
 6 files changed, 148 insertions(+)

diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
index 51a5bdf75b08656ee6499c6b5c50a51fc4d7c210..62c5d10f16ae722dd2e6a4f8953ae24b5f541666 100644
--- a/Documentation/hwmon/index.rst
+++ b/Documentation/hwmon/index.rst
@@ -151,6 +151,7 @@ Hardware Monitoring Kernel Drivers
    max1619
    max16601
    max1668
+   max17616
    max197
    max20730
    max20751
diff --git a/Documentation/hwmon/max17616.rst b/Documentation/hwmon/max17616.rst
new file mode 100644
index 0000000000000000000000000000000000000000..936447159f87a9c6b270b903c46b43a90caddb23
--- /dev/null
+++ b/Documentation/hwmon/max17616.rst
@@ -0,0 +1,62 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+Kernel driver max17616
+====================
+
+Supported chips:
+
+  * Analog Devices MAX17616/MAX17616A
+
+    Prefix: 'max17616'
+
+    Addresses scanned: -
+
+    Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/max17616-max17616a.pdf
+
+Author:
+
+  - Kim Seer Paller <kimseer.paller@analog.com>
+
+
+Description
+-----------
+
+This driver supports hardware monitoring for Analog Devices MAX17616/MAX17616A
+Current-Limiter with OV/Surge, UV, Reverse Polarity, Loss of Ground Protection
+with PMBus Interface.
+
+The MAX17616/MAX17616A is a 3V to 80V, 7A current-limiter with overvoltage,
+surge, undervoltage, reverse polarity, and loss of ground protection. Through
+the PMBus interface, the device can monitor input/output voltages, output current
+and temperature.
+
+The driver is a client driver to the core PMBus driver. Please see
+Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
+
+Usage Notes
+-----------
+
+This driver does not auto-detect devices. You will have to instantiate
+the devices explicitly. Please see Documentation/i2c/instantiating-devices.rst
+for details.
+
+Platform data support
+---------------------
+
+The driver supports standard PMBus driver platform data.
+
+Sysfs entries
+-------------
+
+================= ========================================
+in1_label         "vin"
+in1_input         Measured input voltage
+in1_alarm	  Input voltage alarm
+in2_label	  "vout1"
+in2_input	  Measured output voltage
+curr1_label	  "iout1"
+curr1_input	  Measured output current.
+curr1_alarm	  Output current alarm
+temp1_input       Measured temperature
+temp1_alarm       Chip temperature alarm
+================= ========================================
diff --git a/MAINTAINERS b/MAINTAINERS
index 89d35faf93c9d2e984b73f5c09d09044ee6eddb2..267ab428260a29c38fa508190bdfa2677bba58c8 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14923,6 +14923,8 @@ L:	linux-hwmon@vger.kernel.org
 S:	Supported
 W:	https://ez.analog.com/linux-software-drivers
 F:	Documentation/devicetree/bindings/hwmon/pmbus/adi,max17616.yaml
+F:	Documentation/hwmon/max17616.rst
+F:	drivers/hwmon/pmbus/max17616.c
 
 MAX2175 SDR TUNER DRIVER
 M:	Ramesh Shanmugasundaram <rashanmu@gmail.com>
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index da04ff6df28bd12909c9140662d6b932a150bd97..def5faad8fdf56eb31fe216322ead57ee43a1ac5 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -320,6 +320,15 @@ config SENSORS_MAX16601
 	  This driver can also be built as a module. If so, the module will
 	  be called max16601.
 
+config SENSORS_MAX17616
+	tristate "Analog Devices MAX17616/MAX17616A"
+	help
+	  If you say yes here you get hardware monitoring support for Analog
+	  Devices MAX17616/MAX17616A.
+
+	  This driver can also be built as a module. If so, the module will
+	  be called max17616.
+
 config SENSORS_MAX20730
 	tristate "Maxim MAX20710, MAX20730, MAX20734, MAX20743"
 	help
diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
index 4c5ff3f32c5ecbea069dce8af3e3e8365892b278..9cebe488fdf18b2aa164c0fc2ac7d1d8ffd2b970 100644
--- a/drivers/hwmon/pmbus/Makefile
+++ b/drivers/hwmon/pmbus/Makefile
@@ -31,6 +31,7 @@ obj-$(CONFIG_SENSORS_LTC4286)	+= ltc4286.o
 obj-$(CONFIG_SENSORS_MAX15301)	+= max15301.o
 obj-$(CONFIG_SENSORS_MAX16064)	+= max16064.o
 obj-$(CONFIG_SENSORS_MAX16601)	+= max16601.o
+obj-$(CONFIG_SENSORS_MAX17616)	+= max17616.o
 obj-$(CONFIG_SENSORS_MAX20730)	+= max20730.o
 obj-$(CONFIG_SENSORS_MAX20751)	+= max20751.o
 obj-$(CONFIG_SENSORS_MAX31785)	+= max31785.o
diff --git a/drivers/hwmon/pmbus/max17616.c b/drivers/hwmon/pmbus/max17616.c
new file mode 100644
index 0000000000000000000000000000000000000000..1d4a0ddb95bb6e8349932062be0d918f935cd846
--- /dev/null
+++ b/drivers/hwmon/pmbus/max17616.c
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Hardware monitoring driver for Analog Devices MAX17616/MAX17616A
+ *
+ * Copyright (C) 2025 Analog Devices, Inc.
+ */
+
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+
+#include "pmbus.h"
+
+static struct pmbus_driver_info max17616_info = {
+	.pages = 1,
+	.format[PSC_VOLTAGE_IN] = direct,
+	.m[PSC_VOLTAGE_IN] = 512,
+	.b[PSC_VOLTAGE_IN] = -18,
+	.R[PSC_VOLTAGE_IN] = -1,
+
+	.format[PSC_VOLTAGE_OUT] = direct,
+	.m[PSC_VOLTAGE_OUT] = 512,
+	.b[PSC_VOLTAGE_OUT] = -18,
+	.R[PSC_VOLTAGE_OUT] = -1,
+
+	.format[PSC_CURRENT_OUT] = direct,
+	.m[PSC_CURRENT_OUT] = 5845,
+	.b[PSC_CURRENT_OUT] = 80,
+	.R[PSC_CURRENT_OUT] = -1,
+
+	.format[PSC_TEMPERATURE] = direct,
+	.m[PSC_TEMPERATURE] = 71,
+	.b[PSC_TEMPERATURE] = 19653,
+	.R[PSC_TEMPERATURE] = -1,
+
+	.func[0] =  PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_IOUT |
+		    PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_VOUT |
+		    PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_STATUS_INPUT |
+		    PMBUS_HAVE_STATUS_TEMP,
+};
+
+static int max17616_probe(struct i2c_client *client)
+{
+	return pmbus_do_probe(client, &max17616_info);
+}
+
+static const struct i2c_device_id max17616_id[] = {
+	{ "max17616" },
+	{ }
+};
+MODULE_DEVICE_TABLE(i2c, max17616_id);
+
+static const struct of_device_id max17616_of_match[] = {
+	{ .compatible = "adi,max17616" },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, max17616_of_match);
+
+static struct i2c_driver max17616_driver = {
+	.driver = {
+		.name = "max17616",
+		.of_match_table = max17616_of_match,
+	},
+	.probe = max17616_probe,
+	.id_table = max17616_id,
+};
+module_i2c_driver(max17616_driver);
+
+MODULE_AUTHOR("Kim Seer Paller <kimseer.paller@analog.com>");
+MODULE_DESCRIPTION("PMBus driver for Analog Devices MAX17616/MAX17616A");
+MODULE_LICENSE("GPL");
+MODULE_IMPORT_NS("PMBUS");

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] hwmon: (pmbus/max17616): add driver for max17616
  2025-09-30  5:02 ` [PATCH 2/2] hwmon: (pmbus/max17616): add driver for max17616 Kim Seer Paller
@ 2025-09-30 10:26   ` Guenter Roeck
  2025-10-01  8:17     ` Paller, Kim Seer
  2025-10-02 20:55   ` Guenter Roeck
  1 sibling, 1 reply; 9+ messages in thread
From: Guenter Roeck @ 2025-09-30 10:26 UTC (permalink / raw)
  To: Kim Seer Paller, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Jonathan Corbet
  Cc: linux-hwmon, devicetree, linux-kernel, linux-doc

On 9/29/25 22:02, Kim Seer Paller wrote:
> Add support for MAX17616/MAX17616A current-limiter with
> overvoltage/surge, undervoltage, reverse polarity, loss of ground
> protection with PMBus interface. The PMBus interface allows monitoring
> of input/output voltages, output current and temperature.
> 
> Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>

I am a bit concerned about VOUT_UV_FAULT_LIMIT which is completely non-standard.
Did you check with real hardware that in2_lcrit is not instantiated ?

Thanks,
Guenter

> ---
>   Documentation/hwmon/index.rst    |  1 +
>   Documentation/hwmon/max17616.rst | 62 ++++++++++++++++++++++++++++++++++
>   MAINTAINERS                      |  2 ++
>   drivers/hwmon/pmbus/Kconfig      |  9 +++++
>   drivers/hwmon/pmbus/Makefile     |  1 +
>   drivers/hwmon/pmbus/max17616.c   | 73 ++++++++++++++++++++++++++++++++++++++++
>   6 files changed, 148 insertions(+)
> 
> diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
> index 51a5bdf75b08656ee6499c6b5c50a51fc4d7c210..62c5d10f16ae722dd2e6a4f8953ae24b5f541666 100644
> --- a/Documentation/hwmon/index.rst
> +++ b/Documentation/hwmon/index.rst
> @@ -151,6 +151,7 @@ Hardware Monitoring Kernel Drivers
>      max1619
>      max16601
>      max1668
> +   max17616
>      max197
>      max20730
>      max20751
> diff --git a/Documentation/hwmon/max17616.rst b/Documentation/hwmon/max17616.rst
> new file mode 100644
> index 0000000000000000000000000000000000000000..936447159f87a9c6b270b903c46b43a90caddb23
> --- /dev/null
> +++ b/Documentation/hwmon/max17616.rst
> @@ -0,0 +1,62 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +Kernel driver max17616
> +====================
> +
> +Supported chips:
> +
> +  * Analog Devices MAX17616/MAX17616A
> +
> +    Prefix: 'max17616'
> +
> +    Addresses scanned: -
> +
> +    Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/max17616-max17616a.pdf
> +
> +Author:
> +
> +  - Kim Seer Paller <kimseer.paller@analog.com>
> +
> +
> +Description
> +-----------
> +
> +This driver supports hardware monitoring for Analog Devices MAX17616/MAX17616A
> +Current-Limiter with OV/Surge, UV, Reverse Polarity, Loss of Ground Protection
> +with PMBus Interface.
> +
> +The MAX17616/MAX17616A is a 3V to 80V, 7A current-limiter with overvoltage,
> +surge, undervoltage, reverse polarity, and loss of ground protection. Through
> +the PMBus interface, the device can monitor input/output voltages, output current
> +and temperature.
> +
> +The driver is a client driver to the core PMBus driver. Please see
> +Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
> +
> +Usage Notes
> +-----------
> +
> +This driver does not auto-detect devices. You will have to instantiate
> +the devices explicitly. Please see Documentation/i2c/instantiating-devices.rst
> +for details.
> +
> +Platform data support
> +---------------------
> +
> +The driver supports standard PMBus driver platform data.
> +
> +Sysfs entries
> +-------------
> +
> +================= ========================================
> +in1_label         "vin"
> +in1_input         Measured input voltage
> +in1_alarm	  Input voltage alarm
> +in2_label	  "vout1"
> +in2_input	  Measured output voltage
> +curr1_label	  "iout1"
> +curr1_input	  Measured output current.
> +curr1_alarm	  Output current alarm
> +temp1_input       Measured temperature
> +temp1_alarm       Chip temperature alarm
> +================= ========================================
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 89d35faf93c9d2e984b73f5c09d09044ee6eddb2..267ab428260a29c38fa508190bdfa2677bba58c8 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -14923,6 +14923,8 @@ L:	linux-hwmon@vger.kernel.org
>   S:	Supported
>   W:	https://ez.analog.com/linux-software-drivers
>   F:	Documentation/devicetree/bindings/hwmon/pmbus/adi,max17616.yaml
> +F:	Documentation/hwmon/max17616.rst
> +F:	drivers/hwmon/pmbus/max17616.c
>   
>   MAX2175 SDR TUNER DRIVER
>   M:	Ramesh Shanmugasundaram <rashanmu@gmail.com>
> diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
> index da04ff6df28bd12909c9140662d6b932a150bd97..def5faad8fdf56eb31fe216322ead57ee43a1ac5 100644
> --- a/drivers/hwmon/pmbus/Kconfig
> +++ b/drivers/hwmon/pmbus/Kconfig
> @@ -320,6 +320,15 @@ config SENSORS_MAX16601
>   	  This driver can also be built as a module. If so, the module will
>   	  be called max16601.
>   
> +config SENSORS_MAX17616
> +	tristate "Analog Devices MAX17616/MAX17616A"
> +	help
> +	  If you say yes here you get hardware monitoring support for Analog
> +	  Devices MAX17616/MAX17616A.
> +
> +	  This driver can also be built as a module. If so, the module will
> +	  be called max17616.
> +
>   config SENSORS_MAX20730
>   	tristate "Maxim MAX20710, MAX20730, MAX20734, MAX20743"
>   	help
> diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
> index 4c5ff3f32c5ecbea069dce8af3e3e8365892b278..9cebe488fdf18b2aa164c0fc2ac7d1d8ffd2b970 100644
> --- a/drivers/hwmon/pmbus/Makefile
> +++ b/drivers/hwmon/pmbus/Makefile
> @@ -31,6 +31,7 @@ obj-$(CONFIG_SENSORS_LTC4286)	+= ltc4286.o
>   obj-$(CONFIG_SENSORS_MAX15301)	+= max15301.o
>   obj-$(CONFIG_SENSORS_MAX16064)	+= max16064.o
>   obj-$(CONFIG_SENSORS_MAX16601)	+= max16601.o
> +obj-$(CONFIG_SENSORS_MAX17616)	+= max17616.o
>   obj-$(CONFIG_SENSORS_MAX20730)	+= max20730.o
>   obj-$(CONFIG_SENSORS_MAX20751)	+= max20751.o
>   obj-$(CONFIG_SENSORS_MAX31785)	+= max31785.o
> diff --git a/drivers/hwmon/pmbus/max17616.c b/drivers/hwmon/pmbus/max17616.c
> new file mode 100644
> index 0000000000000000000000000000000000000000..1d4a0ddb95bb6e8349932062be0d918f935cd846
> --- /dev/null
> +++ b/drivers/hwmon/pmbus/max17616.c
> @@ -0,0 +1,73 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Hardware monitoring driver for Analog Devices MAX17616/MAX17616A
> + *
> + * Copyright (C) 2025 Analog Devices, Inc.
> + */
> +
> +#include <linux/err.h>
> +#include <linux/i2c.h>
> +#include <linux/mod_devicetable.h>
> +#include <linux/module.h>
> +
> +#include "pmbus.h"
> +
> +static struct pmbus_driver_info max17616_info = {
> +	.pages = 1,
> +	.format[PSC_VOLTAGE_IN] = direct,
> +	.m[PSC_VOLTAGE_IN] = 512,
> +	.b[PSC_VOLTAGE_IN] = -18,
> +	.R[PSC_VOLTAGE_IN] = -1,
> +
> +	.format[PSC_VOLTAGE_OUT] = direct,
> +	.m[PSC_VOLTAGE_OUT] = 512,
> +	.b[PSC_VOLTAGE_OUT] = -18,
> +	.R[PSC_VOLTAGE_OUT] = -1,
> +
> +	.format[PSC_CURRENT_OUT] = direct,
> +	.m[PSC_CURRENT_OUT] = 5845,
> +	.b[PSC_CURRENT_OUT] = 80,
> +	.R[PSC_CURRENT_OUT] = -1,
> +
> +	.format[PSC_TEMPERATURE] = direct,
> +	.m[PSC_TEMPERATURE] = 71,
> +	.b[PSC_TEMPERATURE] = 19653,
> +	.R[PSC_TEMPERATURE] = -1,
> +
> +	.func[0] =  PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_IOUT |
> +		    PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_VOUT |
> +		    PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_STATUS_INPUT |
> +		    PMBUS_HAVE_STATUS_TEMP,
> +};
> +
> +static int max17616_probe(struct i2c_client *client)
> +{
> +	return pmbus_do_probe(client, &max17616_info);
> +}
> +
> +static const struct i2c_device_id max17616_id[] = {
> +	{ "max17616" },
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(i2c, max17616_id);
> +
> +static const struct of_device_id max17616_of_match[] = {
> +	{ .compatible = "adi,max17616" },
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(of, max17616_of_match);
> +
> +static struct i2c_driver max17616_driver = {
> +	.driver = {
> +		.name = "max17616",
> +		.of_match_table = max17616_of_match,
> +	},
> +	.probe = max17616_probe,
> +	.id_table = max17616_id,
> +};
> +module_i2c_driver(max17616_driver);
> +
> +MODULE_AUTHOR("Kim Seer Paller <kimseer.paller@analog.com>");
> +MODULE_DESCRIPTION("PMBus driver for Analog Devices MAX17616/MAX17616A");
> +MODULE_LICENSE("GPL");
> +MODULE_IMPORT_NS("PMBUS");
> 


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616
  2025-09-30  5:02 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616 Kim Seer Paller
@ 2025-09-30 18:54   ` Conor Dooley
  2025-10-02 20:55   ` Guenter Roeck
  2025-10-02 22:15   ` Marcelo Schmitt
  2 siblings, 0 replies; 9+ messages in thread
From: Conor Dooley @ 2025-09-30 18:54 UTC (permalink / raw)
  To: Kim Seer Paller
  Cc: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Jonathan Corbet, linux-hwmon, devicetree, linux-kernel, linux-doc

[-- Attachment #1: Type: text/plain, Size: 52 bytes --]

Acked-by: Conor Dooley <conor.dooley@microchip.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH 2/2] hwmon: (pmbus/max17616): add driver for max17616
  2025-09-30 10:26   ` Guenter Roeck
@ 2025-10-01  8:17     ` Paller, Kim Seer
  0 siblings, 0 replies; 9+ messages in thread
From: Paller, Kim Seer @ 2025-10-01  8:17 UTC (permalink / raw)
  To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Jonathan Corbet
  Cc: linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org

> -----Original Message-----
> From: Guenter Roeck <groeck7@gmail.com> On Behalf Of Guenter Roeck
> Sent: Tuesday, September 30, 2025 6:27 PM
> To: Paller, Kim Seer <KimSeer.Paller@analog.com>; Rob Herring
> <robh@kernel.org>; Krzysztof Kozlowski <krzk+dt@kernel.org>; Conor Dooley
> <conor+dt@kernel.org>; Jonathan Corbet <corbet@lwn.net>
> Cc: linux-hwmon@vger.kernel.org; devicetree@vger.kernel.org; linux-
> kernel@vger.kernel.org; linux-doc@vger.kernel.org
> Subject: Re: [PATCH 2/2] hwmon: (pmbus/max17616): add driver for
> max17616
> 
> [External]
> 
> On 9/29/25 22:02, Kim Seer Paller wrote:
> > Add support for MAX17616/MAX17616A current-limiter with
> > overvoltage/surge, undervoltage, reverse polarity, loss of ground
> > protection with PMBus interface. The PMBus interface allows monitoring
> > of input/output voltages, output current and temperature.
> >
> > Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>
> 
> I am a bit concerned about VOUT_UV_FAULT_LIMIT which is completely non-
> standard.
> Did you check with real hardware that in2_lcrit is not instantiated ?

Yes, checked on the hardware it is not instantiated.

> 
> Thanks,
> Guenter
> 
> > ---
> >   Documentation/hwmon/index.rst    |  1 +
> >   Documentation/hwmon/max17616.rst | 62
> ++++++++++++++++++++++++++++++++++
> >   MAINTAINERS                      |  2 ++
> >   drivers/hwmon/pmbus/Kconfig      |  9 +++++
> >   drivers/hwmon/pmbus/Makefile     |  1 +
> >   drivers/hwmon/pmbus/max17616.c   | 73
> ++++++++++++++++++++++++++++++++++++++++
> >   6 files changed, 148 insertions(+)
> >
> > diff --git a/Documentation/hwmon/index.rst
> > b/Documentation/hwmon/index.rst index
> >
> 51a5bdf75b08656ee6499c6b5c50a51fc4d7c210..62c5d10f16ae722dd2e6a4f8
> 953a
> > e24b5f541666 100644
> > --- a/Documentation/hwmon/index.rst
> > +++ b/Documentation/hwmon/index.rst
> > @@ -151,6 +151,7 @@ Hardware Monitoring Kernel Drivers
> >      max1619
> >      max16601
> >      max1668
> > +   max17616
> >      max197
> >      max20730
> >      max20751
> > diff --git a/Documentation/hwmon/max17616.rst
> > b/Documentation/hwmon/max17616.rst
> > new file mode 100644
> > index
> >
> 0000000000000000000000000000000000000000..936447159f87a9c6b270b9
> 03c46b
> > 43a90caddb23
> > --- /dev/null
> > +++ b/Documentation/hwmon/max17616.rst
> > @@ -0,0 +1,62 @@
> > +.. SPDX-License-Identifier: GPL-2.0
> > +
> > +Kernel driver max17616
> > +====================
> > +
> > +Supported chips:
> > +
> > +  * Analog Devices MAX17616/MAX17616A
> > +
> > +    Prefix: 'max17616'
> > +
> > +    Addresses scanned: -
> > +
> > +    Datasheet:
> > + https://www.analog.com/media/en/technical-documentation/data-sheets/
> > + max17616-max17616a.pdf
> > +
> > +Author:
> > +
> > +  - Kim Seer Paller <kimseer.paller@analog.com>
> > +
> > +
> > +Description
> > +-----------
> > +
> > +This driver supports hardware monitoring for Analog Devices
> > +MAX17616/MAX17616A Current-Limiter with OV/Surge, UV, Reverse
> > +Polarity, Loss of Ground Protection with PMBus Interface.
> > +
> > +The MAX17616/MAX17616A is a 3V to 80V, 7A current-limiter with
> > +overvoltage, surge, undervoltage, reverse polarity, and loss of
> > +ground protection. Through the PMBus interface, the device can
> > +monitor input/output voltages, output current and temperature.
> > +
> > +The driver is a client driver to the core PMBus driver. Please see
> > +Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
> > +
> > +Usage Notes
> > +-----------
> > +
> > +This driver does not auto-detect devices. You will have to
> > +instantiate the devices explicitly. Please see
> > +Documentation/i2c/instantiating-devices.rst
> > +for details.
> > +
> > +Platform data support
> > +---------------------
> > +
> > +The driver supports standard PMBus driver platform data.
> > +
> > +Sysfs entries
> > +-------------
> > +
> > +================= ========================================
> > +in1_label         "vin"
> > +in1_input         Measured input voltage
> > +in1_alarm	  Input voltage alarm
> > +in2_label	  "vout1"
> > +in2_input	  Measured output voltage
> > +curr1_label	  "iout1"
> > +curr1_input	  Measured output current.
> > +curr1_alarm	  Output current alarm
> > +temp1_input       Measured temperature
> > +temp1_alarm       Chip temperature alarm
> > +================= ========================================
> > diff --git a/MAINTAINERS b/MAINTAINERS index
> >
> 89d35faf93c9d2e984b73f5c09d09044ee6eddb2..267ab428260a29c38fa50819
> 0bdf
> > a2677bba58c8 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -14923,6 +14923,8 @@ L:	linux-hwmon@vger.kernel.org
> >   S:	Supported
> >   W:	https://ez.analog.com/linux-software-drivers
> >   F:
> 	Documentation/devicetree/bindings/hwmon/pmbus/adi,max17616.ya
> ml
> > +F:	Documentation/hwmon/max17616.rst
> > +F:	drivers/hwmon/pmbus/max17616.c
> >
> >   MAX2175 SDR TUNER DRIVER
> >   M:	Ramesh Shanmugasundaram <rashanmu@gmail.com>
> > diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
> > index
> >
> da04ff6df28bd12909c9140662d6b932a150bd97..def5faad8fdf56eb31fe21632
> 2ea
> > d57ee43a1ac5 100644
> > --- a/drivers/hwmon/pmbus/Kconfig
> > +++ b/drivers/hwmon/pmbus/Kconfig
> > @@ -320,6 +320,15 @@ config SENSORS_MAX16601
> >   	  This driver can also be built as a module. If so, the module will
> >   	  be called max16601.
> >
> > +config SENSORS_MAX17616
> > +	tristate "Analog Devices MAX17616/MAX17616A"
> > +	help
> > +	  If you say yes here you get hardware monitoring support for Analog
> > +	  Devices MAX17616/MAX17616A.
> > +
> > +	  This driver can also be built as a module. If so, the module will
> > +	  be called max17616.
> > +
> >   config SENSORS_MAX20730
> >   	tristate "Maxim MAX20710, MAX20730, MAX20734, MAX20743"
> >   	help
> > diff --git a/drivers/hwmon/pmbus/Makefile
> > b/drivers/hwmon/pmbus/Makefile index
> >
> 4c5ff3f32c5ecbea069dce8af3e3e8365892b278..9cebe488fdf18b2aa164c0fc2a
> c7
> > d1d8ffd2b970 100644
> > --- a/drivers/hwmon/pmbus/Makefile
> > +++ b/drivers/hwmon/pmbus/Makefile
> > @@ -31,6 +31,7 @@ obj-$(CONFIG_SENSORS_LTC4286)	+= ltc4286.o
> >   obj-$(CONFIG_SENSORS_MAX15301)	+= max15301.o
> >   obj-$(CONFIG_SENSORS_MAX16064)	+= max16064.o
> >   obj-$(CONFIG_SENSORS_MAX16601)	+= max16601.o
> > +obj-$(CONFIG_SENSORS_MAX17616)	+= max17616.o
> >   obj-$(CONFIG_SENSORS_MAX20730)	+= max20730.o
> >   obj-$(CONFIG_SENSORS_MAX20751)	+= max20751.o
> >   obj-$(CONFIG_SENSORS_MAX31785)	+= max31785.o
> > diff --git a/drivers/hwmon/pmbus/max17616.c
> > b/drivers/hwmon/pmbus/max17616.c new file mode 100644 index
> >
> 0000000000000000000000000000000000000000..1d4a0ddb95bb6e8349932
> 062be0d
> > 918f935cd846
> > --- /dev/null
> > +++ b/drivers/hwmon/pmbus/max17616.c
> > @@ -0,0 +1,73 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Hardware monitoring driver for Analog Devices MAX17616/MAX17616A
> > + *
> > + * Copyright (C) 2025 Analog Devices, Inc.
> > + */
> > +
> > +#include <linux/err.h>
> > +#include <linux/i2c.h>
> > +#include <linux/mod_devicetable.h>
> > +#include <linux/module.h>
> > +
> > +#include "pmbus.h"
> > +
> > +static struct pmbus_driver_info max17616_info = {
> > +	.pages = 1,
> > +	.format[PSC_VOLTAGE_IN] = direct,
> > +	.m[PSC_VOLTAGE_IN] = 512,
> > +	.b[PSC_VOLTAGE_IN] = -18,
> > +	.R[PSC_VOLTAGE_IN] = -1,
> > +
> > +	.format[PSC_VOLTAGE_OUT] = direct,
> > +	.m[PSC_VOLTAGE_OUT] = 512,
> > +	.b[PSC_VOLTAGE_OUT] = -18,
> > +	.R[PSC_VOLTAGE_OUT] = -1,
> > +
> > +	.format[PSC_CURRENT_OUT] = direct,
> > +	.m[PSC_CURRENT_OUT] = 5845,
> > +	.b[PSC_CURRENT_OUT] = 80,
> > +	.R[PSC_CURRENT_OUT] = -1,
> > +
> > +	.format[PSC_TEMPERATURE] = direct,
> > +	.m[PSC_TEMPERATURE] = 71,
> > +	.b[PSC_TEMPERATURE] = 19653,
> > +	.R[PSC_TEMPERATURE] = -1,
> > +
> > +	.func[0] =  PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT |
> PMBUS_HAVE_IOUT |
> > +		    PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_VOUT |
> > +		    PMBUS_HAVE_STATUS_IOUT |
> PMBUS_HAVE_STATUS_INPUT |
> > +		    PMBUS_HAVE_STATUS_TEMP,
> > +};
> > +
> > +static int max17616_probe(struct i2c_client *client) {
> > +	return pmbus_do_probe(client, &max17616_info); }
> > +
> > +static const struct i2c_device_id max17616_id[] = {
> > +	{ "max17616" },
> > +	{ }
> > +};
> > +MODULE_DEVICE_TABLE(i2c, max17616_id);
> > +
> > +static const struct of_device_id max17616_of_match[] = {
> > +	{ .compatible = "adi,max17616" },
> > +	{ }
> > +};
> > +MODULE_DEVICE_TABLE(of, max17616_of_match);
> > +
> > +static struct i2c_driver max17616_driver = {
> > +	.driver = {
> > +		.name = "max17616",
> > +		.of_match_table = max17616_of_match,
> > +	},
> > +	.probe = max17616_probe,
> > +	.id_table = max17616_id,
> > +};
> > +module_i2c_driver(max17616_driver);
> > +
> > +MODULE_AUTHOR("Kim Seer Paller <kimseer.paller@analog.com>");
> > +MODULE_DESCRIPTION("PMBus driver for Analog Devices
> > +MAX17616/MAX17616A"); MODULE_LICENSE("GPL");
> > +MODULE_IMPORT_NS("PMBUS");
> >


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616
  2025-09-30  5:02 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616 Kim Seer Paller
  2025-09-30 18:54   ` Conor Dooley
@ 2025-10-02 20:55   ` Guenter Roeck
  2025-10-02 22:15   ` Marcelo Schmitt
  2 siblings, 0 replies; 9+ messages in thread
From: Guenter Roeck @ 2025-10-02 20:55 UTC (permalink / raw)
  To: Kim Seer Paller
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet,
	linux-hwmon, devicetree, linux-kernel, linux-doc

On Tue, Sep 30, 2025 at 01:02:20PM +0800, Kim Seer Paller wrote:
> Add device tree documentation for MAX17616/MAX17616A current-limiter
> with overvoltage/surge, undervoltage, reverse polarity, loss of ground
> protection with PMBus interface.
> 
> Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>
> Acked-by: Conor Dooley <conor.dooley@microchip.com>

Applied to hwmon-next.

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] hwmon: (pmbus/max17616): add driver for max17616
  2025-09-30  5:02 ` [PATCH 2/2] hwmon: (pmbus/max17616): add driver for max17616 Kim Seer Paller
  2025-09-30 10:26   ` Guenter Roeck
@ 2025-10-02 20:55   ` Guenter Roeck
  1 sibling, 0 replies; 9+ messages in thread
From: Guenter Roeck @ 2025-10-02 20:55 UTC (permalink / raw)
  To: Kim Seer Paller
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet,
	linux-hwmon, devicetree, linux-kernel, linux-doc

On Tue, Sep 30, 2025 at 01:02:21PM +0800, Kim Seer Paller wrote:
> Add support for MAX17616/MAX17616A current-limiter with
> overvoltage/surge, undervoltage, reverse polarity, loss of ground
> protection with PMBus interface. The PMBus interface allows monitoring
> of input/output voltages, output current and temperature.
> 
> Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>

Applied to hwmon-next.

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616
  2025-09-30  5:02 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616 Kim Seer Paller
  2025-09-30 18:54   ` Conor Dooley
  2025-10-02 20:55   ` Guenter Roeck
@ 2025-10-02 22:15   ` Marcelo Schmitt
  2 siblings, 0 replies; 9+ messages in thread
From: Marcelo Schmitt @ 2025-10-02 22:15 UTC (permalink / raw)
  To: Kim Seer Paller
  Cc: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Jonathan Corbet, linux-hwmon, devicetree, linux-kernel, linux-doc

Hi Kim,

For completeness, the dt doc could also have the SMBALERT interrupt.
Though, I see the patch has been accepted and I don't want to make upstreaming
take longer than needed. Maybe the comment below can be taken as follow up 
patch suggestion. Though, if you end up doing a v2 for any reason, you can add
my review tag.

Reviewed-by: Marcelo Schmitt <marcelo.schmitt@analog.com>

On 09/30, Kim Seer Paller wrote:
> Add device tree documentation for MAX17616/MAX17616A current-limiter
> with overvoltage/surge, undervoltage, reverse polarity, loss of ground
> protection with PMBus interface.
>
> Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>
> ---
>  .../bindings/hwmon/pmbus/adi,max17616.yaml         | 48 ++++++++++++++++++++++
>  MAINTAINERS                                        |  7 ++++
...
> +properties:
> +  compatible:
> +    const: adi,max17616
> +
> +  reg:
> +    maxItems: 1
> +
> +  vcc-supply: true

  interrupts:
    description: Fault condition signal provided on SMBALERT pin.
    maxItems: 1

> +
> +required:
> +  - compatible
> +  - reg
> +  - vcc-supply
> +

Best regards,
Marcelo

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-10-02 22:14 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-30  5:02 [PATCH 0/2] Add support for MAX17616/MAX17616A hwmon device Kim Seer Paller
2025-09-30  5:02 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: add max17616 Kim Seer Paller
2025-09-30 18:54   ` Conor Dooley
2025-10-02 20:55   ` Guenter Roeck
2025-10-02 22:15   ` Marcelo Schmitt
2025-09-30  5:02 ` [PATCH 2/2] hwmon: (pmbus/max17616): add driver for max17616 Kim Seer Paller
2025-09-30 10:26   ` Guenter Roeck
2025-10-01  8:17     ` Paller, Kim Seer
2025-10-02 20:55   ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).