* [PATCH v3 0/2] Add support for Infineon eFuse xdp730
@ 2026-06-01 9:09 ASHISH YADAV
2026-06-01 9:09 ` [PATCH v3 1/2] dt-bindings: hwmon/pmbus: Add Infineon xdp730 ASHISH YADAV
2026-06-01 9:09 ` [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730 ASHISH YADAV
0 siblings, 2 replies; 8+ messages in thread
From: ASHISH YADAV @ 2026-06-01 9:09 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: 2166 bytes --]
From: Ashish Yadav <ashish.yadav@infineon.com>
Hi,
These patches add support for the Infineon XDP730 Digital eFuse Controller
by updating the existing XDP720 driver.
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 v3:
- Link to v2:
https://lore.kernel.org/all/20260529054218.5184-1-Ashish.Yadav@infineon.com/
- Revert back the DT info file name to infineon,xdp720.yaml and added
xdp730 info
https://lore.kernel.org/all/20260529-partake-myself-baa76ed4e279@spud/
- Revert back the driver file name to xdp720.c and added xdp730 support
https://lore.kernel.org/all/20260529062937.646091F00893@smtp.kernel.org/
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 xdp730
hwmon:(pmbus/xdp720) Add support for efuse xdp730
.../bindings/hwmon/pmbus/infineon,xdp720.yaml | 41 +++--
drivers/hwmon/pmbus/Kconfig | 2 +-
drivers/hwmon/pmbus/xdp720.c | 167 +++++++++++-------
3 files changed, 131 insertions(+), 79 deletions(-)
--
2.39.5
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 1/2] dt-bindings: hwmon/pmbus: Add Infineon xdp730
2026-06-01 9:09 [PATCH v3 0/2] Add support for Infineon eFuse xdp730 ASHISH YADAV
@ 2026-06-01 9:09 ` ASHISH YADAV
2026-06-01 9:13 ` sashiko-bot
2026-06-01 11:58 ` Krzysztof Kozlowski
2026-06-01 9:09 ` [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730 ASHISH YADAV
1 sibling, 2 replies; 8+ messages in thread
From: ASHISH YADAV @ 2026-06-01 9:09 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 XDP730 eFuse.
Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com>
---
.../bindings/hwmon/pmbus/infineon,xdp720.yaml | 41 ++++++++++++++-----
1 file changed, 31 insertions(+), 10 deletions(-)
diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
index 72bc3a5e7139..27ec00a8a41d 100644
--- a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
+++ b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,xdp720.yaml
@@ -5,23 +5,31 @@
$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,xdp720.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
-title: Infineon XDP720 Digital eFuse Controller
+title: Infineon XDP720 / XDP730 Digital eFuse Controllers
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.
+ 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.
- Datasheet:
- https://www.infineon.com/assets/row/public/documents/24/49/infineon-xdp720-001-datasheet-en.pdf
+ 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
@@ -33,9 +41,9 @@ properties:
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.
+ 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
@@ -50,10 +58,23 @@ examples:
#address-cells = <1>;
#size-cells = <0>;
- hwmon@11 {
+ 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 related [flat|nested] 8+ messages in thread
* [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730
2026-06-01 9:09 [PATCH v3 0/2] Add support for Infineon eFuse xdp730 ASHISH YADAV
2026-06-01 9:09 ` [PATCH v3 1/2] dt-bindings: hwmon/pmbus: Add Infineon xdp730 ASHISH YADAV
@ 2026-06-01 9:09 ` ASHISH YADAV
2026-06-01 9:17 ` sashiko-bot
` (2 more replies)
1 sibling, 3 replies; 8+ messages in thread
From: ASHISH YADAV @ 2026-06-01 9:09 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>
Adds support for the Infineon XDP730 Digital eFuse Controller by
updating the existing XDP720 driver.
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.
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.
---
drivers/hwmon/pmbus/Kconfig | 2 +-
drivers/hwmon/pmbus/xdp720.c | 167 +++++++++++++++++++++--------------
2 files changed, 100 insertions(+), 69 deletions(-)
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index 8f4bff375ecb..a9e86d92b044 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -715,7 +715,7 @@ config SENSORS_XDP720
tristate "Infineon XDP720 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.
diff --git a/drivers/hwmon/pmbus/xdp720.c b/drivers/hwmon/pmbus/xdp720.c
index 8729a771f216..1a5eab09f2fd 100644
--- a/drivers/hwmon/pmbus/xdp720.c
+++ b/drivers/hwmon/pmbus/xdp720.c
@@ -1,128 +1,159 @@
// SPDX-License-Identifier: GPL-2.0+
/*
- * Hardware monitoring driver for Infineon XDP720 Digital eFuse Controller
+ * 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/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
-#include <linux/of_device.h>
-#include <linux/bitops.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: 2k Ohm
+ * The IMON resistor required to generate the system overcurrent
+ * protection. Arbitrary default Rimon value: 2 kOhm (in micro-ohms).
*/
-#define XDP720_DEFAULT_RIMON 2000000000 /* 2k ohm */
-#define XDP720_TELEMETRY_AVG 0xE9
+#define XDP720_DEFAULT_RIMON 2000000000U /* 2 kohm */
+#define XDP720_TELEMETRY_AVG 0xE9
+#define XDP720_TELEMETRY_AVG_GIMON BIT(10) /* high/low GIMON select */
+
+/* Chip identifiers carried in OF match-data and i2c_device_id->driver_data. */
+enum xdp720_chip_id {
+ CHIP_XDP720 = 0,
+ CHIP_XDP730,
+};
-static struct pmbus_driver_info xdp720_info = {
+struct xdp720_data {
+ enum xdp720_chip_id id;
+ struct pmbus_driver_info info;
+};
+
+static const 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,
+ .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.
+ * 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,
+ .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,
+ 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;
+ struct xdp720_data *data;
int ret;
- u32 rimon;
int gimon;
+ u32 rimon;
- info = devm_kmemdup(&client->dev, &xdp720_info, sizeof(*info),
- GFP_KERNEL);
- if (!info)
+ data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL);
+ if (!data)
return -ENOMEM;
+ data->id = (enum xdp720_chip_id)(uintptr_t)i2c_get_match_data(client);
+ data->info = xdp720_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");
+ "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;
+ 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 & XDP720_TELEMETRY_AVG_GIMON) ? 18200 : 9100;
+ dev_info(&client->dev, "Initialised XDP720 instance\n");
+ break;
+ case CHIP_XDP730:
+ gimon = (ret & XDP720_TELEMETRY_AVG_GIMON) ? 20000 : 10000;
+ dev_info(&client->dev, "Initialised XDP730 instance\n");
+ break;
+ default:
+ return -EINVAL;
}
- 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 (device_property_read_u32(&client->dev,
+ "infineon,rimon-micro-ohms", &rimon))
+ rimon = XDP720_DEFAULT_RIMON; /* Default if not in FW */
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);
+ /* 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, info);
+ return pmbus_do_probe(client, &data->info);
}
static const struct of_device_id xdp720_of_match[] = {
- { .compatible = "infineon,xdp720" },
- {}
+ { .compatible = "infineon,xdp720", .data = (void *)CHIP_XDP720 },
+ { .compatible = "infineon,xdp730", .data = (void *)CHIP_XDP730 },
+ { }
};
MODULE_DEVICE_TABLE(of, xdp720_of_match);
static const struct i2c_device_id xdp720_id[] = {
- { "xdp720" },
- {}
+ { "xdp720", CHIP_XDP720 },
+ { "xdp730", CHIP_XDP730 },
+ { }
};
MODULE_DEVICE_TABLE(i2c, xdp720_id);
static struct i2c_driver xdp720_driver = {
.driver = {
- .name = "xdp720",
- .of_match_table = xdp720_of_match,
+ .name = "xdp720",
+ .of_match_table = xdp720_of_match,
},
- .probe = xdp720_probe,
- .id_table = xdp720_id,
+ .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_DESCRIPTION("PMBus driver for Infineon XDP720/XDP730 Digital eFuse Controllers");
MODULE_LICENSE("GPL");
MODULE_IMPORT_NS("PMBUS");
--
2.39.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: hwmon/pmbus: Add Infineon xdp730
2026-06-01 9:09 ` [PATCH v3 1/2] dt-bindings: hwmon/pmbus: Add Infineon xdp730 ASHISH YADAV
@ 2026-06-01 9:13 ` sashiko-bot
2026-06-01 11:58 ` Krzysztof Kozlowski
1 sibling, 0 replies; 8+ messages in thread
From: sashiko-bot @ 2026-06-01 9:13 UTC (permalink / raw)
To: ASHISH YADAV; +Cc: linux-hwmon, robh, conor+dt, devicetree
> From: Ashish Yadav <ashish.yadav@infineon.com>
>
> Add documentation for the device tree binding of the XDP730 eFuse.
>
> Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com>
Sashiko has reviewed this patch and found no issues. It looks great!
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260601090925.3781-1-Ashish.Yadav@infineon.com?part=1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730
2026-06-01 9:09 ` [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730 ASHISH YADAV
@ 2026-06-01 9:17 ` sashiko-bot
2026-06-04 4:19 ` ashish yadav
2026-06-08 2:39 ` Guenter Roeck
2 siblings, 0 replies; 8+ messages in thread
From: sashiko-bot @ 2026-06-01 9:17 UTC (permalink / raw)
To: ASHISH YADAV; +Cc: devicetree, conor+dt, linux-hwmon, robh
> From: Ashish Yadav <ashish.yadav@infineon.com>
>
> Adds support for the Infineon XDP730 Digital eFuse Controller by
> updating the existing XDP720 driver.
>
> Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com>
Sashiko has reviewed this patch and found no issues. It looks great!
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260601090925.3781-1-Ashish.Yadav@infineon.com?part=2
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: hwmon/pmbus: Add Infineon xdp730
2026-06-01 9:09 ` [PATCH v3 1/2] dt-bindings: hwmon/pmbus: Add Infineon xdp730 ASHISH YADAV
2026-06-01 9:13 ` sashiko-bot
@ 2026-06-01 11:58 ` Krzysztof Kozlowski
1 sibling, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-06-01 11:58 UTC (permalink / raw)
To: ASHISH YADAV
Cc: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-hwmon, devicetree, linux-kernel, Ashish Yadav
On Mon, Jun 01, 2026 at 02:39:24PM +0530, ASHISH YADAV wrote:
> required:
> - compatible
> @@ -50,10 +58,23 @@ examples:
> #address-cells = <1>;
> #size-cells = <0>;
>
> - hwmon@11 {
> + efuse@11 {
Explain that in commit msg.
> 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 */
It's exactly the same as previous example, drop this hunk.
> + };
> + };
> --
> 2.39.5
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730
2026-06-01 9:09 ` [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730 ASHISH YADAV
2026-06-01 9:17 ` sashiko-bot
@ 2026-06-04 4:19 ` ashish yadav
2026-06-08 2:39 ` Guenter Roeck
2 siblings, 0 replies; 8+ messages in thread
From: ashish yadav @ 2026-06-04 4:19 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-hwmon, devicetree, linux-kernel, Ashish Yadav
Hi Guenter,
I hope you are doing well.
Could you please look into this patch and provide you feedback.
Thank you for your time and assistance.
With Best Regards,
Ashish Yadav
On Mon, Jun 1, 2026 at 2:40 PM ASHISH YADAV <ashishyadav78@gmail.com> wrote:
>
> From: Ashish Yadav <ashish.yadav@infineon.com>
>
> Adds support for the Infineon XDP730 Digital eFuse Controller by
> updating the existing XDP720 driver.
>
> 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.
>
> 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.
> ---
> drivers/hwmon/pmbus/Kconfig | 2 +-
> drivers/hwmon/pmbus/xdp720.c | 167 +++++++++++++++++++++--------------
> 2 files changed, 100 insertions(+), 69 deletions(-)
>
> diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
> index 8f4bff375ecb..a9e86d92b044 100644
> --- a/drivers/hwmon/pmbus/Kconfig
> +++ b/drivers/hwmon/pmbus/Kconfig
> @@ -715,7 +715,7 @@ config SENSORS_XDP720
> tristate "Infineon XDP720 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.
> diff --git a/drivers/hwmon/pmbus/xdp720.c b/drivers/hwmon/pmbus/xdp720.c
> index 8729a771f216..1a5eab09f2fd 100644
> --- a/drivers/hwmon/pmbus/xdp720.c
> +++ b/drivers/hwmon/pmbus/xdp720.c
> @@ -1,128 +1,159 @@
> // SPDX-License-Identifier: GPL-2.0+
> /*
> - * Hardware monitoring driver for Infineon XDP720 Digital eFuse Controller
> + * 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/module.h>
> #include <linux/init.h>
> #include <linux/kernel.h>
> -#include <linux/of_device.h>
> -#include <linux/bitops.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: 2k Ohm
> + * The IMON resistor required to generate the system overcurrent
> + * protection. Arbitrary default Rimon value: 2 kOhm (in micro-ohms).
> */
> -#define XDP720_DEFAULT_RIMON 2000000000 /* 2k ohm */
> -#define XDP720_TELEMETRY_AVG 0xE9
> +#define XDP720_DEFAULT_RIMON 2000000000U /* 2 kohm */
> +#define XDP720_TELEMETRY_AVG 0xE9
> +#define XDP720_TELEMETRY_AVG_GIMON BIT(10) /* high/low GIMON select */
> +
> +/* Chip identifiers carried in OF match-data and i2c_device_id->driver_data. */
> +enum xdp720_chip_id {
> + CHIP_XDP720 = 0,
> + CHIP_XDP730,
> +};
>
> -static struct pmbus_driver_info xdp720_info = {
> +struct xdp720_data {
> + enum xdp720_chip_id id;
> + struct pmbus_driver_info info;
> +};
> +
> +static const 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,
> + .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.
> + * 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,
> + .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,
> + 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;
> + struct xdp720_data *data;
> int ret;
> - u32 rimon;
> int gimon;
> + u32 rimon;
>
> - info = devm_kmemdup(&client->dev, &xdp720_info, sizeof(*info),
> - GFP_KERNEL);
> - if (!info)
> + data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL);
> + if (!data)
> return -ENOMEM;
>
> + data->id = (enum xdp720_chip_id)(uintptr_t)i2c_get_match_data(client);
> + data->info = xdp720_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");
> + "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;
> + 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 & XDP720_TELEMETRY_AVG_GIMON) ? 18200 : 9100;
> + dev_info(&client->dev, "Initialised XDP720 instance\n");
> + break;
> + case CHIP_XDP730:
> + gimon = (ret & XDP720_TELEMETRY_AVG_GIMON) ? 20000 : 10000;
> + dev_info(&client->dev, "Initialised XDP730 instance\n");
> + break;
> + default:
> + return -EINVAL;
> }
>
> - 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 (device_property_read_u32(&client->dev,
> + "infineon,rimon-micro-ohms", &rimon))
> + rimon = XDP720_DEFAULT_RIMON; /* Default if not in FW */
> 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);
> + /* 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, info);
> + return pmbus_do_probe(client, &data->info);
> }
>
> static const struct of_device_id xdp720_of_match[] = {
> - { .compatible = "infineon,xdp720" },
> - {}
> + { .compatible = "infineon,xdp720", .data = (void *)CHIP_XDP720 },
> + { .compatible = "infineon,xdp730", .data = (void *)CHIP_XDP730 },
> + { }
> };
> MODULE_DEVICE_TABLE(of, xdp720_of_match);
>
> static const struct i2c_device_id xdp720_id[] = {
> - { "xdp720" },
> - {}
> + { "xdp720", CHIP_XDP720 },
> + { "xdp730", CHIP_XDP730 },
> + { }
> };
> MODULE_DEVICE_TABLE(i2c, xdp720_id);
>
> static struct i2c_driver xdp720_driver = {
> .driver = {
> - .name = "xdp720",
> - .of_match_table = xdp720_of_match,
> + .name = "xdp720",
> + .of_match_table = xdp720_of_match,
> },
> - .probe = xdp720_probe,
> - .id_table = xdp720_id,
> + .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_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] 8+ messages in thread
* Re: [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730
2026-06-01 9:09 ` [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730 ASHISH YADAV
2026-06-01 9:17 ` sashiko-bot
2026-06-04 4:19 ` ashish yadav
@ 2026-06-08 2:39 ` Guenter Roeck
2 siblings, 0 replies; 8+ messages in thread
From: Guenter Roeck @ 2026-06-08 2:39 UTC (permalink / raw)
To: ASHISH YADAV
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-hwmon,
devicetree, linux-kernel, Ashish Yadav
On Mon, Jun 01, 2026 at 02:39:25PM +0530, ASHISH YADAV wrote:
> From: Ashish Yadav <ashish.yadav@infineon.com>
>
> Adds support for the Infineon XDP730 Digital eFuse Controller by
> updating the existing XDP720 driver.
>
> 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.
>
> 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.
> ---
> drivers/hwmon/pmbus/Kconfig | 2 +-
> drivers/hwmon/pmbus/xdp720.c | 167 +++++++++++++++++++++--------------
> 2 files changed, 100 insertions(+), 69 deletions(-)
>
> diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
> index 8f4bff375ecb..a9e86d92b044 100644
> --- a/drivers/hwmon/pmbus/Kconfig
> +++ b/drivers/hwmon/pmbus/Kconfig
> @@ -715,7 +715,7 @@ config SENSORS_XDP720
> tristate "Infineon XDP720 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.
> diff --git a/drivers/hwmon/pmbus/xdp720.c b/drivers/hwmon/pmbus/xdp720.c
> index 8729a771f216..1a5eab09f2fd 100644
> --- a/drivers/hwmon/pmbus/xdp720.c
> +++ b/drivers/hwmon/pmbus/xdp720.c
> @@ -1,128 +1,159 @@
> // SPDX-License-Identifier: GPL-2.0+
> /*
> - * Hardware monitoring driver for Infineon XDP720 Digital eFuse Controller
> + * 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/module.h>
> #include <linux/init.h>
> #include <linux/kernel.h>
> -#include <linux/of_device.h>
> -#include <linux/bitops.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: 2k Ohm
> + * The IMON resistor required to generate the system overcurrent
> + * protection. Arbitrary default Rimon value: 2 kOhm (in micro-ohms).
> */
> -#define XDP720_DEFAULT_RIMON 2000000000 /* 2k ohm */
> -#define XDP720_TELEMETRY_AVG 0xE9
> +#define XDP720_DEFAULT_RIMON 2000000000U /* 2 kohm */
> +#define XDP720_TELEMETRY_AVG 0xE9
> +#define XDP720_TELEMETRY_AVG_GIMON BIT(10) /* high/low GIMON select */
> +
> +/* Chip identifiers carried in OF match-data and i2c_device_id->driver_data. */
> +enum xdp720_chip_id {
> + CHIP_XDP720 = 0,
> + CHIP_XDP730,
> +};
>
> -static struct pmbus_driver_info xdp720_info = {
> +struct xdp720_data {
> + enum xdp720_chip_id id;
> + struct pmbus_driver_info info;
> +};
> +
> +static const 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,
> + .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,
Do not change patch formatting just because you prefer your own
format. This hides the actual changes for no purpose.
> /*
> - * Current and Power measurement depends on the RIMON (kOhm) and
> - * GIMON(microA/A) values.
> + * Current and Power measurement depend on the RIMON (micro-ohm)
> + * and GIMON (microA/A) values; scaled per-instance in probe().
Also, if you make changes like this, do it in a separate patch
or patch series. Again, this hides functional changes.
I am not going to review this patch any further.
Guenter
> */
> - .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,
> + .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,
> + 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;
> + struct xdp720_data *data;
> int ret;
> - u32 rimon;
> int gimon;
> + u32 rimon;
>
> - info = devm_kmemdup(&client->dev, &xdp720_info, sizeof(*info),
> - GFP_KERNEL);
> - if (!info)
> + data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL);
> + if (!data)
> return -ENOMEM;
>
> + data->id = (enum xdp720_chip_id)(uintptr_t)i2c_get_match_data(client);
> + data->info = xdp720_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");
> + "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;
> + 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 & XDP720_TELEMETRY_AVG_GIMON) ? 18200 : 9100;
> + dev_info(&client->dev, "Initialised XDP720 instance\n");
> + break;
> + case CHIP_XDP730:
> + gimon = (ret & XDP720_TELEMETRY_AVG_GIMON) ? 20000 : 10000;
> + dev_info(&client->dev, "Initialised XDP730 instance\n");
> + break;
> + default:
> + return -EINVAL;
> }
>
> - 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 (device_property_read_u32(&client->dev,
> + "infineon,rimon-micro-ohms", &rimon))
> + rimon = XDP720_DEFAULT_RIMON; /* Default if not in FW */
> 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);
> + /* 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, info);
> + return pmbus_do_probe(client, &data->info);
> }
>
> static const struct of_device_id xdp720_of_match[] = {
> - { .compatible = "infineon,xdp720" },
> - {}
> + { .compatible = "infineon,xdp720", .data = (void *)CHIP_XDP720 },
> + { .compatible = "infineon,xdp730", .data = (void *)CHIP_XDP730 },
> + { }
> };
> MODULE_DEVICE_TABLE(of, xdp720_of_match);
>
> static const struct i2c_device_id xdp720_id[] = {
> - { "xdp720" },
> - {}
> + { "xdp720", CHIP_XDP720 },
> + { "xdp730", CHIP_XDP730 },
> + { }
> };
> MODULE_DEVICE_TABLE(i2c, xdp720_id);
>
> static struct i2c_driver xdp720_driver = {
> .driver = {
> - .name = "xdp720",
> - .of_match_table = xdp720_of_match,
> + .name = "xdp720",
> + .of_match_table = xdp720_of_match,
> },
> - .probe = xdp720_probe,
> - .id_table = xdp720_id,
> + .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_DESCRIPTION("PMBus driver for Infineon XDP720/XDP730 Digital eFuse Controllers");
> MODULE_LICENSE("GPL");
> MODULE_IMPORT_NS("PMBUS");
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-06-08 2:39 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-01 9:09 [PATCH v3 0/2] Add support for Infineon eFuse xdp730 ASHISH YADAV
2026-06-01 9:09 ` [PATCH v3 1/2] dt-bindings: hwmon/pmbus: Add Infineon xdp730 ASHISH YADAV
2026-06-01 9:13 ` sashiko-bot
2026-06-01 11:58 ` Krzysztof Kozlowski
2026-06-01 9:09 ` [PATCH v3 2/2] hwmon:(pmbus/xdp720) Add support for efuse xdp730 ASHISH YADAV
2026-06-01 9:17 ` sashiko-bot
2026-06-04 4:19 ` ashish yadav
2026-06-08 2:39 ` Guenter Roeck
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox