Linux Hardware Monitor development
 help / color / mirror / Atom feed
* [PATCH 0/2] hwmon: Add support for Analog Devices MAX20912 and MAX20916
@ 2026-07-07 12:26 Fred Chen
  2026-07-07 12:26 ` [PATCH 1/2] dt-bindings: trivial-devices: Add adi max20912 and max20916 Fred Chen
  2026-07-07 12:26 ` [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916 Fred Chen
  0 siblings, 2 replies; 7+ messages in thread
From: Fred Chen @ 2026-07-07 12:26 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Guenter Roeck,
	Jonathan Corbet, Shuah Khan, Jonathan Cameron, Frank Li,
	Wensheng Wang, Colin Huang, Brian Chiang, Eddie James,
	Antoni Pokusinski, Dixit Parmar, Thorsten Blum, Ashish Yadav,
	Alexis Czezar Torreno, Syed Arif, ChiShih Tsai, Cosmo Chou,
	Vasileios Amoiridis, Yuxi Wang, devicetree, linux-kernel,
	linux-hwmon, linux-doc

Add PMBus hardware monitoring support for the Analog Devices MAX20912
and MAX20916 dual-output multiphase voltage regulators.

Both devices expose two independently regulated output voltage rails,
Rail A and Rail B, using the VR12 VID interface. Each rail reports input
current, output current, temperature, input power, and output power.
Input voltage is reported on Rail A only.

Fred Chen (2):
  dt-bindings: trivial-devices: Add adi max20912 and max20916
  hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916

 .../devicetree/bindings/trivial-devices.yaml  |   4 +
 Documentation/hwmon/index.rst                 |   1 +
 Documentation/hwmon/max20912.rst              | 156 ++++++++++++++++++
 MAINTAINERS                                   |   7 +
 drivers/hwmon/pmbus/Kconfig                   |   9 +
 drivers/hwmon/pmbus/Makefile                  |   1 +
 drivers/hwmon/pmbus/max20912.c                |  70 ++++++++
 7 files changed, 248 insertions(+)
 create mode 100644 Documentation/hwmon/max20912.rst
 create mode 100644 drivers/hwmon/pmbus/max20912.c

-- 
2.52.0


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

* [PATCH 1/2] dt-bindings: trivial-devices: Add adi max20912 and max20916
  2026-07-07 12:26 [PATCH 0/2] hwmon: Add support for Analog Devices MAX20912 and MAX20916 Fred Chen
@ 2026-07-07 12:26 ` Fred Chen
  2026-07-07 12:32   ` sashiko-bot
  2026-07-07 12:26 ` [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916 Fred Chen
  1 sibling, 1 reply; 7+ messages in thread
From: Fred Chen @ 2026-07-07 12:26 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Guenter Roeck,
	Jonathan Corbet, Shuah Khan, Jonathan Cameron, Wensheng Wang,
	Frank Li, Cosmo Chou, Brian Chiang, Antoni Pokusinski,
	Dixit Parmar, Eddie James, Thorsten Blum, Ashish Yadav,
	Alexis Czezar Torreno, Syed Arif, ChiShih Tsai, Sanman Pradhan,
	Kim Seer Paller, Abdurrahman Hussain, Vasileios Amoiridis,
	Colin Huang, devicetree, linux-kernel, linux-hwmon, linux-doc

Add device tree bindings for Analog Devices MAX20912 and MAX20916
Dual-Output Voltage Regulator.

Signed-off-by: Fred Chen <fredchen.openbmc@gmail.com>
---
 Documentation/devicetree/bindings/trivial-devices.yaml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
index 435c4baab436..5e7fb4edb82a 100644
--- a/Documentation/devicetree/bindings/trivial-devices.yaml
+++ b/Documentation/devicetree/bindings/trivial-devices.yaml
@@ -57,6 +57,10 @@ properties:
           - adi,adt7468
             # Analog Devices LT7182S Dual Channel 6A, 20V PolyPhase Step-Down Silent Switcher
           - adi,lt7182s
+            # Analog Devices MAX20912 Dual-Output Voltage Regulator
+          - adi,max20912
+            # Analog Devices MAX20916 Dual-Output Voltage Regulator
+          - adi,max20916
             # AMS iAQ-Core VOC Sensor
           - ams,iaq-core
             # Aosong temperature & humidity sensors with I2C interface
-- 
2.52.0


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

* [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916
  2026-07-07 12:26 [PATCH 0/2] hwmon: Add support for Analog Devices MAX20912 and MAX20916 Fred Chen
  2026-07-07 12:26 ` [PATCH 1/2] dt-bindings: trivial-devices: Add adi max20912 and max20916 Fred Chen
@ 2026-07-07 12:26 ` Fred Chen
  2026-07-07 12:33   ` Krzysztof Kozlowski
                     ` (2 more replies)
  1 sibling, 3 replies; 7+ messages in thread
From: Fred Chen @ 2026-07-07 12:26 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Guenter Roeck,
	Jonathan Corbet, Shuah Khan, Jonathan Cameron, Wensheng Wang,
	Frank Li, Brian Chiang, Cosmo Chou, Dixit Parmar, Eddie James,
	Antoni Pokusinski, Thorsten Blum, Ashish Yadav,
	Alexis Czezar Torreno, Syed Arif, ChiShih Tsai,
	Abdurrahman Hussain, Kim Seer Paller, Colin Huang, Yuxi Wang,
	devicetree, linux-kernel, linux-hwmon, linux-doc

Add support for the Analog Devices MAX20912 and MAX20916 dual-output
multiphase voltage regulators with PMBus interfaces.

Signed-off-by: Fred Chen <fredchen.openbmc@gmail.com>
---
 Documentation/hwmon/index.rst    |   1 +
 Documentation/hwmon/max20912.rst | 156 +++++++++++++++++++++++++++++++
 MAINTAINERS                      |   7 ++
 drivers/hwmon/pmbus/Kconfig      |   9 ++
 drivers/hwmon/pmbus/Makefile     |   1 +
 drivers/hwmon/pmbus/max20912.c   |  70 ++++++++++++++
 6 files changed, 244 insertions(+)
 create mode 100644 Documentation/hwmon/max20912.rst
 create mode 100644 drivers/hwmon/pmbus/max20912.c

diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
index 29130df44d12..4fadb7e961b2 100644
--- a/Documentation/hwmon/index.rst
+++ b/Documentation/hwmon/index.rst
@@ -166,6 +166,7 @@ Hardware Monitoring Kernel Drivers
    max20751
    max20830
    max20860a
+   max20912
    max31722
    max31730
    max31760
diff --git a/Documentation/hwmon/max20912.rst b/Documentation/hwmon/max20912.rst
new file mode 100644
index 000000000000..da1430751e93
--- /dev/null
+++ b/Documentation/hwmon/max20912.rst
@@ -0,0 +1,156 @@
+.. SPDX-License-Identifier: GPL-2.0-or-later
+
+Kernel driver max20912
+======================
+
+Supported chips:
+
+  * Analog Devices MAX20912
+
+    Prefix: 'max20912'
+
+    Datasheet: Not publicly available
+
+  * Analog Devices MAX20916
+
+    Prefix: 'max20916'
+
+    Datasheet: Not publicly available
+
+Author:
+
+	Fred Chen <fredchen.openbmc@gmail.com>
+
+Description
+-----------
+
+This driver implements support for the Analog Devices MAX20912 and MAX20916
+high-density, flexible, and scalable dual-output multiphase voltage regulators.
+
+The MAX20912 supports up to 12 phases in total, configurable from 12+0 to
+6+6 phases between Rail A and Rail B.
+
+The MAX20916 supports up to 16 phases in total, configurable from 16+0 to
+8+8 phases between Rail A and Rail B.
+
+Device compliant with:
+
+- PMBus rev 1.3 interface.
+
+Both devices expose two independently regulated output voltage rails,
+Rail A and Rail B, using the VR12 VID interface. Each rail reports input
+current, output current, temperature, input power, and output power.
+Input voltage is reported on Rail A only.
+
+The driver exports the following attributes via the 'sysfs' files
+for input voltage:
+
+**in1_input**
+
+**in1_label**
+
+**in1_alarm**
+
+The driver provides the following attributes for output voltage:
+
+**in2_input**
+
+**in2_label**
+
+**in2_alarm**
+
+**in3_input**
+
+**in3_label**
+
+**in3_alarm**
+
+The driver provides the following attributes for input current:
+
+**curr1_input**
+
+**curr1_label**
+
+**curr1_max**
+
+**curr1_max_alarm**
+
+**curr2_input**
+
+**curr2_label**
+
+**curr2_max**
+
+**curr2_max_alarm**
+
+The driver provides the following attributes for output current:
+
+**curr3_input**
+
+**curr3_label**
+
+**curr3_max**
+
+**curr3_max_alarm**
+
+**curr3_crit**
+
+**curr3_crit_alarm**
+
+**curr4_input**
+
+**curr4_label**
+
+**curr4_max**
+
+**curr4_max_alarm**
+
+**curr4_crit**
+
+**curr4_crit_alarm**
+
+The driver provides the following attributes for temperature:
+
+**temp1_input**
+
+**temp1_max**
+
+**temp1_max_alarm**
+
+**temp1_crit**
+
+**temp1_crit_alarm**
+
+**temp2_input**
+
+**temp2_max**
+
+**temp2_max_alarm**
+
+**temp2_crit**
+
+**temp2_crit_alarm**
+
+The driver provides the following attributes for input power:
+
+**power1_input**
+
+**power1_label**
+
+**power1_alarm**
+
+**power2_input**
+
+**power2_label**
+
+**power2_alarm**
+
+The driver provides the following attributes for output power:
+
+**power3_input**
+
+**power3_label**
+
+**power4_input**
+
+**power4_label**
diff --git a/MAINTAINERS b/MAINTAINERS
index 4a8b0fd665ce..a301af7ff6fd 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15851,6 +15851,13 @@ F:	Documentation/devicetree/bindings/hwmon/pmbus/adi,max20860a.yaml
 F:	Documentation/hwmon/max20860a.rst
 F:	drivers/hwmon/pmbus/max20860a.c
 
+MAX20912 HARDWARE MONITOR DRIVER
+M:	Fred Chen <fredchen.openbmc@gmail.com>
+L:	linux-hwmon@vger.kernel.org
+S:	Maintained
+F:	Documentation/hwmon/max20912.rst
+F:	drivers/hwmon/pmbus/max20912.c
+
 MAX2175 SDR TUNER DRIVER
 M:	Ramesh Shanmugasundaram <rashanmu@gmail.com>
 L:	linux-media@vger.kernel.org
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index c8cda160b5f8..442c3538bf7c 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -421,6 +421,15 @@ config SENSORS_MAX20860A_REGULATOR
 	  This enables the MAX20860A to be used as a regulator device,
 	  providing voltage control through the regulator framework.
 
+config SENSORS_MAX20912
+	tristate "Analog Devices MAX20912 and MAX20916"
+	help
+	  If you say yes here you get hardware monitoring support for Analog
+	  Devices MAX20912 and MAX20916 dual-output voltage regulators.
+
+	  This driver can also be built as a module. If so, the module will
+	  be called max20912.
+
 config SENSORS_MAX31785
 	tristate "Maxim MAX31785 and compatibles"
 	help
diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
index ffc05f493213..2fa74f0caf18 100644
--- a/drivers/hwmon/pmbus/Makefile
+++ b/drivers/hwmon/pmbus/Makefile
@@ -40,6 +40,7 @@ obj-$(CONFIG_SENSORS_MAX20730)	+= max20730.o
 obj-$(CONFIG_SENSORS_MAX20751)	+= max20751.o
 obj-$(CONFIG_SENSORS_MAX20830)	+= max20830.o
 obj-$(CONFIG_SENSORS_MAX20860A)	+= max20860a.o
+obj-$(CONFIG_SENSORS_MAX20912)	+= max20912.o
 obj-$(CONFIG_SENSORS_MAX31785)	+= max31785.o
 obj-$(CONFIG_SENSORS_MAX34440)	+= max34440.o
 obj-$(CONFIG_SENSORS_MAX8688)	+= max8688.o
diff --git a/drivers/hwmon/pmbus/max20912.c b/drivers/hwmon/pmbus/max20912.c
new file mode 100644
index 000000000000..3d028a619678
--- /dev/null
+++ b/drivers/hwmon/pmbus/max20912.c
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Hardware monitoring driver for Analog Devices MAX20912 and MAX20916
+ * Dual-Output Voltage Regulator
+ *
+ * Copyright (c) 2026 Quanta Computer Inc.
+ */
+
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/of.h>
+#include "pmbus.h"
+
+static struct pmbus_driver_info max20912_info = {
+	.pages = 2,
+	.format[PSC_VOLTAGE_IN] = linear,
+	.format[PSC_VOLTAGE_OUT] = vid,
+	.vrm_version[0] = vr12,
+	.vrm_version[1] = vr12,
+	.format[PSC_TEMPERATURE] = linear,
+	.format[PSC_CURRENT_IN] = linear,
+	.format[PSC_CURRENT_OUT] = linear,
+	.format[PSC_POWER] = linear,
+	.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT |
+		PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
+		PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
+		PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP |
+		PMBUS_HAVE_PIN | PMBUS_HAVE_POUT,
+	.func[1] = PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT |
+		PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
+		PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
+		PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP |
+		PMBUS_HAVE_PIN | PMBUS_HAVE_POUT,
+};
+
+static int max20912_probe(struct i2c_client *client)
+{
+	return pmbus_do_probe(client, &max20912_info);
+}
+
+static const struct of_device_id max20912_of_match[] = {
+	{ .compatible = "adi,max20912" },
+	{ .compatible = "adi,max20916" },
+	{}
+};
+MODULE_DEVICE_TABLE(of, max20912_of_match);
+
+static const struct i2c_device_id max20912_id[] = {
+	{"max20912"},
+	{"max20916"},
+	{}
+};
+
+MODULE_DEVICE_TABLE(i2c, max20912_id);
+
+static struct i2c_driver max20912_driver = {
+	.driver = {
+		.name = "max20912",
+		.of_match_table = max20912_of_match,
+	},
+	.probe = max20912_probe,
+	.id_table = max20912_id,
+};
+
+module_i2c_driver(max20912_driver);
+
+MODULE_AUTHOR("Fred Chen <fredchen.openbmc@gmail.com>");
+MODULE_DESCRIPTION("PMBus driver for Analog Devices MAX20912 and MAX20916");
+MODULE_LICENSE("GPL");
+MODULE_IMPORT_NS("PMBUS");
-- 
2.52.0


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

* Re: [PATCH 1/2] dt-bindings: trivial-devices: Add adi max20912 and max20916
  2026-07-07 12:26 ` [PATCH 1/2] dt-bindings: trivial-devices: Add adi max20912 and max20916 Fred Chen
@ 2026-07-07 12:32   ` sashiko-bot
  0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-07-07 12:32 UTC (permalink / raw)
  To: Fred Chen; +Cc: robh, linux-hwmon, devicetree, conor+dt

> Add device tree bindings for Analog Devices MAX20912 and MAX20916
> Dual-Output Voltage Regulator.
> 
> Signed-off-by: Fred Chen <fredchen.openbmc@gmail.com>

Sashiko has reviewed this patch and found no issues. It looks great!

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260707122701.751878-1-fredchen.openbmc@gmail.com?part=1


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

* Re: [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916
  2026-07-07 12:26 ` [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916 Fred Chen
@ 2026-07-07 12:33   ` Krzysztof Kozlowski
  2026-07-07 12:36   ` sashiko-bot
  2026-07-07 13:52   ` Guenter Roeck
  2 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2026-07-07 12:33 UTC (permalink / raw)
  To: Fred Chen, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Guenter Roeck, Jonathan Corbet, Shuah Khan, Jonathan Cameron,
	Wensheng Wang, Frank Li, Brian Chiang, Cosmo Chou, Dixit Parmar,
	Eddie James, Antoni Pokusinski, Thorsten Blum, Ashish Yadav,
	Alexis Czezar Torreno, Syed Arif, ChiShih Tsai,
	Abdurrahman Hussain, Kim Seer Paller, Colin Huang, Yuxi Wang,
	devicetree, linux-kernel, linux-hwmon, linux-doc

On 07/07/2026 14:26, Fred Chen wrote:
> +
> +static const struct of_device_id max20912_of_match[] = {
> +	{ .compatible = "adi,max20912" },
> +	{ .compatible = "adi,max20916" },
> +	{}
> +};
> +MODULE_DEVICE_TABLE(of, max20912_of_match);
> +
> +static const struct i2c_device_id max20912_id[] = {
> +	{"max20912"},
> +	{"max20916"},

Please use named initializers (see recent code).

Best regards,
Krzysztof

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

* Re: [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916
  2026-07-07 12:26 ` [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916 Fred Chen
  2026-07-07 12:33   ` Krzysztof Kozlowski
@ 2026-07-07 12:36   ` sashiko-bot
  2026-07-07 13:52   ` Guenter Roeck
  2 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-07-07 12:36 UTC (permalink / raw)
  To: Fred Chen; +Cc: robh, conor+dt, linux-hwmon, devicetree

> Add support for the Analog Devices MAX20912 and MAX20916 dual-output
> multiphase voltage regulators with PMBus interfaces.
> 
> Signed-off-by: Fred Chen <fredchen.openbmc@gmail.com>

Sashiko has reviewed this patch and found no issues. It looks great!

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260707122701.751878-1-fredchen.openbmc@gmail.com?part=2


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

* Re: [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916
  2026-07-07 12:26 ` [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916 Fred Chen
  2026-07-07 12:33   ` Krzysztof Kozlowski
  2026-07-07 12:36   ` sashiko-bot
@ 2026-07-07 13:52   ` Guenter Roeck
  2 siblings, 0 replies; 7+ messages in thread
From: Guenter Roeck @ 2026-07-07 13:52 UTC (permalink / raw)
  To: Fred Chen, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Jonathan Corbet, Shuah Khan, Jonathan Cameron, Wensheng Wang,
	Frank Li, Brian Chiang, Cosmo Chou, Dixit Parmar, Eddie James,
	Antoni Pokusinski, Thorsten Blum, Ashish Yadav,
	Alexis Czezar Torreno, Syed Arif, ChiShih Tsai,
	Abdurrahman Hussain, Kim Seer Paller, Colin Huang, Yuxi Wang,
	devicetree, linux-kernel, linux-hwmon, linux-doc

On 7/7/26 05:26, Fred Chen wrote:
> Add support for the Analog Devices MAX20912 and MAX20916 dual-output
> multiphase voltage regulators with PMBus interfaces.
> 
> Signed-off-by: Fred Chen <fredchen.openbmc@gmail.com>

Please provide evidence that those chips actually exist.
Internet search comes up blank. I'll need confirmation
from someone at Analog.

Thanks,
Guenter


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

end of thread, other threads:[~2026-07-07 13:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-07 12:26 [PATCH 0/2] hwmon: Add support for Analog Devices MAX20912 and MAX20916 Fred Chen
2026-07-07 12:26 ` [PATCH 1/2] dt-bindings: trivial-devices: Add adi max20912 and max20916 Fred Chen
2026-07-07 12:32   ` sashiko-bot
2026-07-07 12:26 ` [PATCH 2/2] hwmon: (pmbus) Add driver for Analog Devices MAX20912 and MAX20916 Fred Chen
2026-07-07 12:33   ` Krzysztof Kozlowski
2026-07-07 12:36   ` sashiko-bot
2026-07-07 13:52   ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox