mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Add support for Infineon eFuse XDP720/XDP730
@ 2026-05-29  5:42 ASHISH YADAV
  2026-05-29  5:42 ` [PATCH v2 1/2] dt-bindings: hwmon/pmbus: Add Infineon XDP720/XDP730 ASHISH YADAV
  2026-05-29  5:42 ` [PATCH v2 2/2] hwmon:(pmbus/xdp730) Add support for efuse xdp720/xdp730 ASHISH YADAV
  0 siblings, 2 replies; 5+ messages in thread
From: ASHISH YADAV @ 2026-05-29  5:42 UTC (permalink / raw)
  To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: linux-hwmon, devicetree, linux-kernel, Ashish Yadav

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 2197 bytes --]

From: Ashish Yadav <ashish.yadav@infineon.com>

Hi,

These patches add support for Infineon XDP720/XDP730 Digital eFuse
Controllers.
The XDP720 and XDP730 are PMBus-compliant digital eFuse controllers
with an integrated current sensor.They provide accurate system
telemetry (V, I, P, T) and report analog current at the IMON pin for
post-processing.

Both parts share the same PMBus register map and direct-format
coefficients; they differ in the GIMON gain step exposed via the
TELEMETRY_AVG register (bit 10) and in the VDD_VIN pin number
(XDP720: pin 9, XDP730: pin 20).

The Current and Power measurement depends on the RIMON and GIMON values.
The GIMON (microA/A) depends on the 10th bit of TELEMETRY_AVG PMBUS Register.
The value of RIMON (kohm) can be provided by the user through device tree using
infineon,rimon-micro-ohms  property.

Datasheets:
 - XDP720: https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp720-001-datasheet-en.pdf
 - XDP730: https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp730-001-datasheet-en.pdf

With Best Regards,
 Ashish Yadav
---
Changes in v2:
- Link to v1:
https://lore.kernel.org/all/20260519075558.91466-1-Ashish.Yadav@infineon.com/
- Integrated XDP720/XDP730 drivers into one driver.
https://lore.kernel.org/all/51133193-57fb-4a22-bf9e-9817f1f52ad5@roeck-us.net/

Ashish Yadav (2):
  dt-bindings: hwmon/pmbus: Add Infineon XDP720/XDP730
  hwmon:(pmbus/xdp730) Add support for efuse xdp720/xdp730

 .../bindings/hwmon/pmbus/infineon,xdp720.yaml |  59 -------
 .../bindings/hwmon/pmbus/infineon,xdp730.yaml |  80 +++++++++
 drivers/hwmon/pmbus/Kconfig                   |   8 +-
 drivers/hwmon/pmbus/Makefile                  |   2 +-
 drivers/hwmon/pmbus/xdp720.c                  | 128 --------------
 drivers/hwmon/pmbus/xdp730.c                  | 159 ++++++++++++++++++
 6 files changed, 244 insertions(+), 192 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
 create mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml
 delete mode 100644 drivers/hwmon/pmbus/xdp720.c
 create mode 100644 drivers/hwmon/pmbus/xdp730.c

-- 
2.39.5


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

* [PATCH v2 1/2] dt-bindings: hwmon/pmbus: Add Infineon XDP720/XDP730
  2026-05-29  5:42 [PATCH v2 0/2] Add support for Infineon eFuse XDP720/XDP730 ASHISH YADAV
@ 2026-05-29  5:42 ` ASHISH YADAV
  2026-05-29 16:41   ` Conor Dooley
  2026-05-29  5:42 ` [PATCH v2 2/2] hwmon:(pmbus/xdp730) Add support for efuse xdp720/xdp730 ASHISH YADAV
  1 sibling, 1 reply; 5+ messages in thread
From: ASHISH YADAV @ 2026-05-29  5:42 UTC (permalink / raw)
  To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: linux-hwmon, devicetree, linux-kernel, Ashish Yadav

From: Ashish Yadav <ashish.yadav@infineon.com>

Add documentation for the device tree binding of the XDP720/XDP730
eFuse Controllers.

Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com>
---
 .../bindings/hwmon/pmbus/infineon,xdp720.yaml | 59 --------------
 .../bindings/hwmon/pmbus/infineon,xdp730.yaml | 80 +++++++++++++++++++
 2 files changed, 80 insertions(+), 59 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
 create mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml

diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
deleted file mode 100644
index 72bc3a5e7139..000000000000
--- a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
-%YAML 1.2
----
-
-$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,xdp720.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Infineon XDP720 Digital eFuse Controller
-
-maintainers:
-  - Ashish Yadav <ashish.yadav@infineon.com>
-
-description: |
-  The XDP720 is an eFuse with integrated current sensor and digital
-  controller. It provides accurate system telemetry (V, I, P, T) and
-  reports analog current at the IMON pin for post-processing.
-
-  Datasheet:
-     https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp720-001-datasheet-en.pdf
-
-properties:
-  compatible:
-    enum:
-      - infineon,xdp720
-
-  reg:
-    maxItems: 1
-
-  infineon,rimon-micro-ohms:
-    description:
-      The value of the RIMON resistor, in micro ohms, required to enable
-      the system overcurrent protection.
-
-  vdd-vin-supply:
-    description:
-      Supply for the VDD_VIN pin (pin 9), the IC controller power supply.
-      Typically connected to the input bus (VIN) through a 100 ohm / 100 nF
-      RC filter.
-
-required:
-  - compatible
-  - reg
-  - vdd-vin-supply
-
-additionalProperties: false
-
-examples:
-  - |
-    i2c {
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        hwmon@11 {
-            compatible = "infineon,xdp720";
-            reg = <0x11>;
-            vdd-vin-supply = <&vdd_vin>;
-            infineon,rimon-micro-ohms = <1098000000>;  /* 1.098k ohm */
-        };
-    };
diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml
new file mode 100644
index 000000000000..fdbc577bccdd
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+
+$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,xdp730.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Infineon XDP720 / XDP730 Digital eFuse Controllers
+
+maintainers:
+  - Ashish Yadav <ashish.yadav@infineon.com>
+
+description: |
+  The XDP720 and XDP730 are PMBus-compliant digital eFuse controllers
+  with an integrated current sensor.  They provide accurate system
+  telemetry (V, I, P, T) and report analog current at the IMON pin for
+  post-processing.
+
+  Both parts share the same PMBus register map and direct-format
+  coefficients; they differ in the GIMON gain step exposed via the
+  TELEMETRY_AVG register (bit 10) and in the VDD_VIN pin number
+  (XDP720: pin 9, XDP730: pin 20).
+
+  Datasheets:
+    - XDP720: https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp720-001-datasheet-en.pdf
+    - XDP730: https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp730-001-datasheet-en.pdf
+
+properties:
+  compatible:
+    enum:
+      - infineon,xdp720
+      - infineon,xdp730
+
+  reg:
+    maxItems: 1
+
+  infineon,rimon-micro-ohms:
+    description:
+      The value of the RIMON resistor, in micro ohms, required to enable
+      the system overcurrent protection.
+
+  vdd-vin-supply:
+    description:
+      Supply for the VDD_VIN pin (XDP720 pin 9, XDP730 pin 20), the IC
+      controller power supply.  Typically connected to the input bus
+      (VIN) through a 100 ohm / 100 nF RC filter.
+
+required:
+  - compatible
+  - reg
+  - vdd-vin-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        efuse@11 {
+            compatible = "infineon,xdp720";
+            reg = <0x11>;
+            vdd-vin-supply = <&vdd_vin>;
+            infineon,rimon-micro-ohms = <1098000000>;  /* 1.098k ohm */
+        };
+    };
+
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        efuse@12 {
+            compatible = "infineon,xdp730";
+            reg = <0x12>;
+            vdd-vin-supply = <&vdd_vin>;
+            infineon,rimon-micro-ohms = <1098000000>;  /* 1.098k ohm */
+        };
+    };
-- 
2.39.5


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

* [PATCH v2 2/2] hwmon:(pmbus/xdp730) Add support for efuse xdp720/xdp730
  2026-05-29  5:42 [PATCH v2 0/2] Add support for Infineon eFuse XDP720/XDP730 ASHISH YADAV
  2026-05-29  5:42 ` [PATCH v2 1/2] dt-bindings: hwmon/pmbus: Add Infineon XDP720/XDP730 ASHISH YADAV
@ 2026-05-29  5:42 ` ASHISH YADAV
  1 sibling, 0 replies; 5+ messages in thread
From: ASHISH YADAV @ 2026-05-29  5:42 UTC (permalink / raw)
  To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: linux-hwmon, devicetree, linux-kernel, Ashish Yadav

From: Ashish Yadav <ashish.yadav@infineon.com>

Add the pmbus driver for Infineon XDP720/XDP730 Digital eFuse
Controllers.

Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com>
---
XDP720/XDP730 Digital eFuse Controllers provides accurate system telemetry
(V, I, P, T) and reports analog current at the IMON pin for post-processing.

The Current and Power measurement depends on the RIMON and GIMON values.
The GIMON (microA/A) depends on the 10th bit of TELEMETRY_AVG PMBUS Register.
The value of RIMON (kohm) can be provided by the user through device tree using
infineon,rimon-micro-ohms  property.
---
 drivers/hwmon/pmbus/Kconfig  |   8 +-
 drivers/hwmon/pmbus/Makefile |   2 +-
 drivers/hwmon/pmbus/xdp720.c | 128 ----------------------------
 drivers/hwmon/pmbus/xdp730.c | 159 +++++++++++++++++++++++++++++++++++
 4 files changed, 164 insertions(+), 133 deletions(-)
 delete mode 100644 drivers/hwmon/pmbus/xdp720.c
 create mode 100644 drivers/hwmon/pmbus/xdp730.c

diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index 8f4bff375ecb..eb3ed41c6fdc 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -711,14 +711,14 @@ config SENSORS_XDP710
 	  This driver can also be built as a module. If so, the module will
 	  be called xdp710.
 
-config SENSORS_XDP720
-	tristate "Infineon XDP720 family"
+config SENSORS_XDP730
+	tristate "Infineon XDP730 family"
 	help
 	  If you say yes here you get hardware monitoring support for Infineon
-	  XDP720.
+	  XDP720 and XDP730 Digital eFuse Controllers.
 
 	  This driver can also be built as a module. If so, the module will
-	  be called xdp720.
+	  be called xdp730.
 
 config SENSORS_XDPE152
 	tristate "Infineon XDPE152 family"
diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
index 7129b62bc00f..6d31082aa91f 100644
--- a/drivers/hwmon/pmbus/Makefile
+++ b/drivers/hwmon/pmbus/Makefile
@@ -69,7 +69,7 @@ obj-$(CONFIG_SENSORS_TPS546D24)	+= tps546d24.o
 obj-$(CONFIG_SENSORS_UCD9000)	+= ucd9000.o
 obj-$(CONFIG_SENSORS_UCD9200)	+= ucd9200.o
 obj-$(CONFIG_SENSORS_XDP710)	+= xdp710.o
-obj-$(CONFIG_SENSORS_XDP720)	+= xdp720.o
+obj-$(CONFIG_SENSORS_XDP730)	+= xdp730.o
 obj-$(CONFIG_SENSORS_XDPE122)	+= xdpe12284.o
 obj-$(CONFIG_SENSORS_XDPE152)	+= xdpe152c4.o
 obj-$(CONFIG_SENSORS_XDPE1A2G7B)	+= xdpe1a2g7b.o
diff --git a/drivers/hwmon/pmbus/xdp720.c b/drivers/hwmon/pmbus/xdp720.c
deleted file mode 100644
index 8729a771f216..000000000000
--- a/drivers/hwmon/pmbus/xdp720.c
+++ /dev/null
@@ -1,128 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Hardware monitoring driver for Infineon XDP720 Digital eFuse Controller
- *
- * Copyright (c) 2026 Infineon Technologies. All rights reserved.
- */
-
-#include <linux/i2c.h>
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/of_device.h>
-#include <linux/bitops.h>
-#include <linux/math64.h>
-#include "pmbus.h"
-
-/*
- * The IMON resistor required to generate the system overcurrent protection.
- * Arbitrary default Rimon value: 2k Ohm
- */
-#define XDP720_DEFAULT_RIMON 2000000000 /* 2k ohm */
-#define XDP720_TELEMETRY_AVG 0xE9
-
-static struct pmbus_driver_info xdp720_info = {
-	.pages = 1,
-	.format[PSC_VOLTAGE_IN] = direct,
-	.format[PSC_VOLTAGE_OUT] = direct,
-	.format[PSC_CURRENT_OUT] = direct,
-	.format[PSC_POWER] = direct,
-	.format[PSC_TEMPERATURE] = direct,
-
-	.m[PSC_VOLTAGE_IN] = 4653,
-	.b[PSC_VOLTAGE_IN] = 0,
-	.R[PSC_VOLTAGE_IN] = -2,
-	.m[PSC_VOLTAGE_OUT] = 4653,
-	.b[PSC_VOLTAGE_OUT] = 0,
-	.R[PSC_VOLTAGE_OUT] = -2,
-	/*
-	 * Current and Power measurement depends on the RIMON (kOhm) and
-	 * GIMON(microA/A) values.
-	 */
-	.m[PSC_CURRENT_OUT] = 24668,
-	.b[PSC_CURRENT_OUT] = 0,
-	.R[PSC_CURRENT_OUT] = -4,
-	.m[PSC_POWER] = 4486,
-	.b[PSC_POWER] = 0,
-	.R[PSC_POWER] = -1,
-	.m[PSC_TEMPERATURE] = 54,
-	.b[PSC_TEMPERATURE] = 22521,
-	.R[PSC_TEMPERATURE] = -1,
-
-	.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_PIN |
-		   PMBUS_HAVE_TEMP | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_INPUT |
-		   PMBUS_HAVE_STATUS_TEMP,
-};
-
-static int xdp720_probe(struct i2c_client *client)
-{
-	struct pmbus_driver_info *info;
-	int ret;
-	u32 rimon;
-	int gimon;
-
-	info = devm_kmemdup(&client->dev, &xdp720_info, sizeof(*info),
-			    GFP_KERNEL);
-	if (!info)
-		return -ENOMEM;
-
-	ret = devm_regulator_get_enable(&client->dev, "vdd-vin");
-	if (ret)
-		return dev_err_probe(&client->dev, ret,
-			"failed to enable vdd-vin supply\n");
-
-	ret = i2c_smbus_read_word_data(client, XDP720_TELEMETRY_AVG);
-	if (ret < 0) {
-		dev_err(&client->dev, "Can't get TELEMETRY_AVG\n");
-		return ret;
-	}
-
-	ret >>= 10; /* 10th bit of TELEMETRY_AVG REG for GIMON Value */
-	ret &= GENMASK(0, 0);
-	if (ret == 1)
-		gimon = 18200; /* output gain 18.2 microA/A */
-	else
-		gimon = 9100; /* output gain 9.1 microA/A */
-
-	if (of_property_read_u32(client->dev.of_node,
-				 "infineon,rimon-micro-ohms", &rimon))
-		rimon = XDP720_DEFAULT_RIMON; /* Default if not set via DT */
-	if (rimon == 0)
-		return -EINVAL;
-
-	/* Adapt the current and power scale for each instance */
-	info->m[PSC_CURRENT_OUT] = DIV64_U64_ROUND_CLOSEST((u64)
-		info->m[PSC_CURRENT_OUT] * rimon * gimon, 1000000000000ULL);
-	info->m[PSC_POWER] = DIV64_U64_ROUND_CLOSEST((u64)
-		info->m[PSC_POWER] * rimon * gimon, 1000000000000000ULL);
-
-	return pmbus_do_probe(client, info);
-}
-
-static const struct of_device_id xdp720_of_match[] = {
-	{ .compatible = "infineon,xdp720" },
-	{}
-};
-MODULE_DEVICE_TABLE(of, xdp720_of_match);
-
-static const struct i2c_device_id xdp720_id[] = {
-	{ "xdp720" },
-	{}
-};
-MODULE_DEVICE_TABLE(i2c, xdp720_id);
-
-static struct i2c_driver xdp720_driver = {
-	.driver = {
-		   .name = "xdp720",
-		   .of_match_table = xdp720_of_match,
-	},
-	.probe = xdp720_probe,
-	.id_table = xdp720_id,
-};
-
-module_i2c_driver(xdp720_driver);
-
-MODULE_AUTHOR("Ashish Yadav <ashish.yadav@infineon.com>");
-MODULE_DESCRIPTION("PMBus driver for Infineon XDP720 Digital eFuse Controller");
-MODULE_LICENSE("GPL");
-MODULE_IMPORT_NS("PMBUS");
diff --git a/drivers/hwmon/pmbus/xdp730.c b/drivers/hwmon/pmbus/xdp730.c
new file mode 100644
index 000000000000..3d6cb0614fe7
--- /dev/null
+++ b/drivers/hwmon/pmbus/xdp730.c
@@ -0,0 +1,159 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Hardware monitoring driver for Infineon XDP720 / XDP730 Digital
+ * eFuse Controllers.
+ *
+ * Both parts share the same PMBus register map and direct-format
+ * coefficients; they differ in the GIMON gain step exposed via
+ * the TELEMETRY_AVG register and in the VDD_VIN pin number.
+ *
+ * Copyright (c) 2026 Infineon Technologies. All rights reserved.
+ */
+
+#include <linux/bitops.h>
+#include <linux/i2c.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/math64.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/property.h>
+#include <linux/regulator/consumer.h>
+#include "pmbus.h"
+
+/*
+ * The IMON resistor required to generate the system overcurrent
+ * protection.  Arbitrary default Rimon value: 2 kOhm (in micro-ohms).
+ */
+#define XDP730_DEFAULT_RIMON		2000000000U	/* 2 kohm */
+#define XDP730_TELEMETRY_AVG		0xE9
+#define XDP730_TELEMETRY_AVG_GIMON	BIT(10)		/* high/low GIMON select */
+
+/* Chip identifiers carried in OF match-data and i2c_device_id->driver_data. */
+enum xdp730_chip_id {
+	CHIP_XDP720 = 0,
+	CHIP_XDP730,
+};
+
+struct xdp730_data {
+	enum xdp730_chip_id	 id;
+	struct pmbus_driver_info info;
+};
+
+static const struct pmbus_driver_info xdp730_info = {
+	.pages = 1,
+	.format[PSC_VOLTAGE_IN]		= direct,
+	.format[PSC_VOLTAGE_OUT]	= direct,
+	.format[PSC_CURRENT_OUT]	= direct,
+	.format[PSC_POWER]		= direct,
+	.format[PSC_TEMPERATURE]	= direct,
+
+	.m[PSC_VOLTAGE_IN]	= 4653,
+	.b[PSC_VOLTAGE_IN]	= 0,
+	.R[PSC_VOLTAGE_IN]	= -2,
+	.m[PSC_VOLTAGE_OUT]	= 4653,
+	.b[PSC_VOLTAGE_OUT]	= 0,
+	.R[PSC_VOLTAGE_OUT]	= -2,
+	/*
+	 * Current and Power measurement depend on the RIMON (micro-ohm)
+	 * and GIMON (microA/A) values; scaled per-instance in probe().
+	 */
+	.m[PSC_CURRENT_OUT]	= 24668,
+	.b[PSC_CURRENT_OUT]	= 0,
+	.R[PSC_CURRENT_OUT]	= -4,
+	.m[PSC_POWER]		= 4486,
+	.b[PSC_POWER]		= 0,
+	.R[PSC_POWER]		= -1,
+	.m[PSC_TEMPERATURE]	= 54,
+	.b[PSC_TEMPERATURE]	= 22521,
+	.R[PSC_TEMPERATURE]	= -1,
+
+	.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_PIN |
+		   PMBUS_HAVE_TEMP | PMBUS_HAVE_IOUT |
+		   PMBUS_HAVE_STATUS_INPUT | PMBUS_HAVE_STATUS_TEMP,
+};
+
+static int xdp730_probe(struct i2c_client *client)
+{
+	struct xdp730_data *data;
+	int ret;
+	int gimon;
+	u32 rimon;
+
+	data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL);
+	if (!data)
+		return -ENOMEM;
+
+	data->id = (enum xdp730_chip_id)(uintptr_t)i2c_get_match_data(client);
+	data->info = xdp730_info;
+
+	ret = devm_regulator_get_enable(&client->dev, "vdd-vin");
+	if (ret)
+		return dev_err_probe(&client->dev, ret,
+				     "failed to enable vdd-vin supply\n");
+
+	ret = i2c_smbus_read_word_data(client, XDP730_TELEMETRY_AVG);
+	if (ret < 0)
+		return dev_err_probe(&client->dev, ret,
+				     "failed to read TELEMETRY_AVG\n");
+
+	/* Bit 10 of TELEMETRY_AVG selects the GIMON gain step in microA/A */
+	switch (data->id) {
+	case CHIP_XDP720:
+		gimon = (ret & XDP730_TELEMETRY_AVG_GIMON) ? 18200 : 9100;
+		dev_info(&client->dev, "Initialised XDP720 instance\n");
+		break;
+	case CHIP_XDP730:
+		gimon = (ret & XDP730_TELEMETRY_AVG_GIMON) ? 20000 : 10000;
+		dev_info(&client->dev, "Initialised XDP730 instance\n");
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	if (device_property_read_u32(&client->dev,
+				     "infineon,rimon-micro-ohms", &rimon))
+		rimon = XDP730_DEFAULT_RIMON;	/* Default if not in FW */
+	if (rimon == 0)
+		return -EINVAL;
+
+	/* Adapt the current and power scale for each instance. */
+	data->info.m[PSC_CURRENT_OUT] = DIV64_U64_ROUND_CLOSEST((u64)
+		data->info.m[PSC_CURRENT_OUT] * rimon * gimon,
+		1000000000000ULL);
+	data->info.m[PSC_POWER] = DIV64_U64_ROUND_CLOSEST((u64)
+		data->info.m[PSC_POWER] * rimon * gimon,
+		1000000000000000ULL);
+
+	return pmbus_do_probe(client, &data->info);
+}
+
+static const struct of_device_id xdp730_of_match[] = {
+	{ .compatible = "infineon,xdp720", .data = (void *)CHIP_XDP720 },
+	{ .compatible = "infineon,xdp730", .data = (void *)CHIP_XDP730 },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, xdp730_of_match);
+
+static const struct i2c_device_id xdp730_id[] = {
+	{ "xdp720", CHIP_XDP720 },
+	{ "xdp730", CHIP_XDP730 },
+	{ }
+};
+MODULE_DEVICE_TABLE(i2c, xdp730_id);
+
+static struct i2c_driver xdp730_driver = {
+	.driver = {
+		.name		= "xdp730",
+		.of_match_table	= xdp730_of_match,
+	},
+	.probe		= xdp730_probe,
+	.id_table	= xdp730_id,
+};
+
+module_i2c_driver(xdp730_driver);
+
+MODULE_AUTHOR("Ashish Yadav <ashish.yadav@infineon.com>");
+MODULE_DESCRIPTION("PMBus driver for Infineon XDP720/XDP730 Digital eFuse Controllers");
+MODULE_LICENSE("GPL");
+MODULE_IMPORT_NS("PMBUS");
-- 
2.39.5


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

* Re: [PATCH v2 1/2] dt-bindings: hwmon/pmbus: Add Infineon XDP720/XDP730
  2026-05-29  5:42 ` [PATCH v2 1/2] dt-bindings: hwmon/pmbus: Add Infineon XDP720/XDP730 ASHISH YADAV
@ 2026-05-29 16:41   ` Conor Dooley
  2026-06-01  7:05     ` ashish yadav
  0 siblings, 1 reply; 5+ messages in thread
From: Conor Dooley @ 2026-05-29 16:41 UTC (permalink / raw)
  To: ASHISH YADAV
  Cc: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-hwmon, devicetree, linux-kernel, Ashish Yadav

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

On Fri, May 29, 2026 at 11:12:17AM +0530, ASHISH YADAV wrote:
> From: Ashish Yadav <ashish.yadav@infineon.com>
> 
> Add documentation for the device tree binding of the XDP720/XDP730
> eFuse Controllers.
> 
> Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com>
> ---
>  .../bindings/hwmon/pmbus/infineon,xdp720.yaml | 59 --------------
>  .../bindings/hwmon/pmbus/infineon,xdp730.yaml | 80 +++++++++++++++++++

This rename just bloats out the diff, no thanks. Please do not do this,
certainly not without a justification.
pw-bot: changes-requested

Thanks,
Conor.

>  2 files changed, 80 insertions(+), 59 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
>  create mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml
> 
> diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
> deleted file mode 100644
> index 72bc3a5e7139..000000000000
> --- a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
> +++ /dev/null
> @@ -1,59 +0,0 @@
> -# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> -%YAML 1.2
> ----
> -
> -$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,xdp720.yaml#
> -$schema: http://devicetree.org/meta-schemas/core.yaml#
> -
> -title: Infineon XDP720 Digital eFuse Controller
> -
> -maintainers:
> -  - Ashish Yadav <ashish.yadav@infineon.com>
> -
> -description: |
> -  The XDP720 is an eFuse with integrated current sensor and digital
> -  controller. It provides accurate system telemetry (V, I, P, T) and
> -  reports analog current at the IMON pin for post-processing.
> -
> -  Datasheet:
> -     https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp720-001-datasheet-en.pdf
> -
> -properties:
> -  compatible:
> -    enum:
> -      - infineon,xdp720
> -
> -  reg:
> -    maxItems: 1
> -
> -  infineon,rimon-micro-ohms:
> -    description:
> -      The value of the RIMON resistor, in micro ohms, required to enable
> -      the system overcurrent protection.
> -
> -  vdd-vin-supply:
> -    description:
> -      Supply for the VDD_VIN pin (pin 9), the IC controller power supply.
> -      Typically connected to the input bus (VIN) through a 100 ohm / 100 nF
> -      RC filter.
> -
> -required:
> -  - compatible
> -  - reg
> -  - vdd-vin-supply
> -
> -additionalProperties: false
> -
> -examples:
> -  - |
> -    i2c {
> -        #address-cells = <1>;
> -        #size-cells = <0>;
> -
> -        hwmon@11 {
> -            compatible = "infineon,xdp720";
> -            reg = <0x11>;
> -            vdd-vin-supply = <&vdd_vin>;
> -            infineon,rimon-micro-ohms = <1098000000>;  /* 1.098k ohm */
> -        };
> -    };
> diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml
> new file mode 100644
> index 000000000000..fdbc577bccdd
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml
> @@ -0,0 +1,80 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +
> +$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,xdp730.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Infineon XDP720 / XDP730 Digital eFuse Controllers
> +
> +maintainers:
> +  - Ashish Yadav <ashish.yadav@infineon.com>
> +
> +description: |
> +  The XDP720 and XDP730 are PMBus-compliant digital eFuse controllers
> +  with an integrated current sensor.  They provide accurate system
> +  telemetry (V, I, P, T) and report analog current at the IMON pin for
> +  post-processing.
> +
> +  Both parts share the same PMBus register map and direct-format
> +  coefficients; they differ in the GIMON gain step exposed via the
> +  TELEMETRY_AVG register (bit 10) and in the VDD_VIN pin number
> +  (XDP720: pin 9, XDP730: pin 20).
> +
> +  Datasheets:
> +    - XDP720: https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp720-001-datasheet-en.pdf
> +    - XDP730: https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp730-001-datasheet-en.pdf
> +
> +properties:
> +  compatible:
> +    enum:
> +      - infineon,xdp720
> +      - infineon,xdp730
> +
> +  reg:
> +    maxItems: 1
> +
> +  infineon,rimon-micro-ohms:
> +    description:
> +      The value of the RIMON resistor, in micro ohms, required to enable
> +      the system overcurrent protection.
> +
> +  vdd-vin-supply:
> +    description:
> +      Supply for the VDD_VIN pin (XDP720 pin 9, XDP730 pin 20), the IC
> +      controller power supply.  Typically connected to the input bus
> +      (VIN) through a 100 ohm / 100 nF RC filter.
> +
> +required:
> +  - compatible
> +  - reg
> +  - vdd-vin-supply
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        efuse@11 {
> +            compatible = "infineon,xdp720";
> +            reg = <0x11>;
> +            vdd-vin-supply = <&vdd_vin>;
> +            infineon,rimon-micro-ohms = <1098000000>;  /* 1.098k ohm */
> +        };
> +    };
> +
> +  - |
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        efuse@12 {
> +            compatible = "infineon,xdp730";
> +            reg = <0x12>;
> +            vdd-vin-supply = <&vdd_vin>;
> +            infineon,rimon-micro-ohms = <1098000000>;  /* 1.098k ohm */
> +        };
> +    };
> -- 
> 2.39.5
> 

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

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

* Re: [PATCH v2 1/2] dt-bindings: hwmon/pmbus: Add Infineon XDP720/XDP730
  2026-05-29 16:41   ` Conor Dooley
@ 2026-06-01  7:05     ` ashish yadav
  0 siblings, 0 replies; 5+ messages in thread
From: ashish yadav @ 2026-06-01  7:05 UTC (permalink / raw)
  To: Conor Dooley
  Cc: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-hwmon, devicetree, linux-kernel, Ashish Yadav

Hi Conor,

Thanks for your time & feedback.

I will revert back the file name to infineon,xdp720.yaml.
I hope it will resolve the issues.

With Best Regards
  Ashish Yadav


On Fri, May 29, 2026 at 10:11 PM Conor Dooley <conor@kernel.org> wrote:
>
> On Fri, May 29, 2026 at 11:12:17AM +0530, ASHISH YADAV wrote:
> > From: Ashish Yadav <ashish.yadav@infineon.com>
> >
> > Add documentation for the device tree binding of the XDP720/XDP730
> > eFuse Controllers.
> >
> > Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com>
> > ---
> >  .../bindings/hwmon/pmbus/infineon,xdp720.yaml | 59 --------------
> >  .../bindings/hwmon/pmbus/infineon,xdp730.yaml | 80 +++++++++++++++++++
>
> This rename just bloats out the diff, no thanks. Please do not do this,
> certainly not without a justification.
> pw-bot: changes-requested
>
> Thanks,
> Conor.
>
> >  2 files changed, 80 insertions(+), 59 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
> >  create mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
> > deleted file mode 100644
> > index 72bc3a5e7139..000000000000
> > --- a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
> > +++ /dev/null
> > @@ -1,59 +0,0 @@
> > -# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > -%YAML 1.2
> > ----
> > -
> > -$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,xdp720.yaml#
> > -$schema: http://devicetree.org/meta-schemas/core.yaml#
> > -
> > -title: Infineon XDP720 Digital eFuse Controller
> > -
> > -maintainers:
> > -  - Ashish Yadav <ashish.yadav@infineon.com>
> > -
> > -description: |
> > -  The XDP720 is an eFuse with integrated current sensor and digital
> > -  controller. It provides accurate system telemetry (V, I, P, T) and
> > -  reports analog current at the IMON pin for post-processing.
> > -
> > -  Datasheet:
> > -     https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp720-001-datasheet-en.pdf
> > -
> > -properties:
> > -  compatible:
> > -    enum:
> > -      - infineon,xdp720
> > -
> > -  reg:
> > -    maxItems: 1
> > -
> > -  infineon,rimon-micro-ohms:
> > -    description:
> > -      The value of the RIMON resistor, in micro ohms, required to enable
> > -      the system overcurrent protection.
> > -
> > -  vdd-vin-supply:
> > -    description:
> > -      Supply for the VDD_VIN pin (pin 9), the IC controller power supply.
> > -      Typically connected to the input bus (VIN) through a 100 ohm / 100 nF
> > -      RC filter.
> > -
> > -required:
> > -  - compatible
> > -  - reg
> > -  - vdd-vin-supply
> > -
> > -additionalProperties: false
> > -
> > -examples:
> > -  - |
> > -    i2c {
> > -        #address-cells = <1>;
> > -        #size-cells = <0>;
> > -
> > -        hwmon@11 {
> > -            compatible = "infineon,xdp720";
> > -            reg = <0x11>;
> > -            vdd-vin-supply = <&vdd_vin>;
> > -            infineon,rimon-micro-ohms = <1098000000>;  /* 1.098k ohm */
> > -        };
> > -    };
> > diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml
> > new file mode 100644
> > index 000000000000..fdbc577bccdd
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp730.yaml
> > @@ -0,0 +1,80 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +
> > +$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,xdp730.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Infineon XDP720 / XDP730 Digital eFuse Controllers
> > +
> > +maintainers:
> > +  - Ashish Yadav <ashish.yadav@infineon.com>
> > +
> > +description: |
> > +  The XDP720 and XDP730 are PMBus-compliant digital eFuse controllers
> > +  with an integrated current sensor.  They provide accurate system
> > +  telemetry (V, I, P, T) and report analog current at the IMON pin for
> > +  post-processing.
> > +
> > +  Both parts share the same PMBus register map and direct-format
> > +  coefficients; they differ in the GIMON gain step exposed via the
> > +  TELEMETRY_AVG register (bit 10) and in the VDD_VIN pin number
> > +  (XDP720: pin 9, XDP730: pin 20).
> > +
> > +  Datasheets:
> > +    - XDP720: https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp720-001-datasheet-en.pdf
> > +    - XDP730: https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp730-001-datasheet-en.pdf
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - infineon,xdp720
> > +      - infineon,xdp730
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  infineon,rimon-micro-ohms:
> > +    description:
> > +      The value of the RIMON resistor, in micro ohms, required to enable
> > +      the system overcurrent protection.
> > +
> > +  vdd-vin-supply:
> > +    description:
> > +      Supply for the VDD_VIN pin (XDP720 pin 9, XDP730 pin 20), the IC
> > +      controller power supply.  Typically connected to the input bus
> > +      (VIN) through a 100 ohm / 100 nF RC filter.
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - vdd-vin-supply
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    i2c {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        efuse@11 {
> > +            compatible = "infineon,xdp720";
> > +            reg = <0x11>;
> > +            vdd-vin-supply = <&vdd_vin>;
> > +            infineon,rimon-micro-ohms = <1098000000>;  /* 1.098k ohm */
> > +        };
> > +    };
> > +
> > +  - |
> > +    i2c {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        efuse@12 {
> > +            compatible = "infineon,xdp730";
> > +            reg = <0x12>;
> > +            vdd-vin-supply = <&vdd_vin>;
> > +            infineon,rimon-micro-ohms = <1098000000>;  /* 1.098k ohm */
> > +        };
> > +    };
> > --
> > 2.39.5
> >

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

end of thread, other threads:[~2026-06-01  7:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-29  5:42 [PATCH v2 0/2] Add support for Infineon eFuse XDP720/XDP730 ASHISH YADAV
2026-05-29  5:42 ` [PATCH v2 1/2] dt-bindings: hwmon/pmbus: Add Infineon XDP720/XDP730 ASHISH YADAV
2026-05-29 16:41   ` Conor Dooley
2026-06-01  7:05     ` ashish yadav
2026-05-29  5:42 ` [PATCH v2 2/2] hwmon:(pmbus/xdp730) Add support for efuse xdp720/xdp730 ASHISH YADAV

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

all inboxes | Powered by JetHome®