* [PATCH v5 0/2] Add driver for Infineon TDA38740/TDA38725
@ 2026-09-17 11:33 Colin Huang
2026-09-17 11:33 ` [PATCH v5 1/2] dt-bindings: hwmon: pmbus: Add Infineon tda38740 and tda38725 Colin Huang
2026-09-17 11:33 ` [PATCH v5 2/2] hwmon: (pmbus/tda38740) Add driver for Infineon TDA38740/TDA38725 Colin Huang
0 siblings, 2 replies; 5+ messages in thread
From: Colin Huang @ 2026-09-17 11:33 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jonathan Corbet, Shuah Khan, Randy Dunlap
Cc: linux-hwmon, devicetree, linux-kernel, colin.huang2, linux-doc,
Colin Huang
Signed-off-by: Colin Huang <u8813345@gmail.com>
---
Changes in v5:
- Remove blank line in yaml header.
- Add interrupts property in yaml file.
- Uses a fallback compatible: infineon,tda38725 can be listed as a fallback for infineon,tda38740.
- Removed the driver-local identify callback and its duplicate VOUT_MODE check.
and set format[PSC_VOLTAGE_OUT] = linear in the static driver info.
- Dropped the per-device tda38740_data allocation/copy path, since there is no longer any runtime mutation of driver info.
Probe now passes the static tda38740_info directly to pmbus_do_probe().
- Link to v4: https://lore.kernel.org/r/20260910-add-tda38740-and-tda38725-v4-0-dbae7fabce09@gmail.com
Changes in v4:
- Fix the DT binding so that compatible only enumerates the valid
hardware variants and does not imply a preferred or fallback
selection policy.
- Remove the vout-scale-micro property and related code.
- Rename the example node to reflect the regulator function.
- Link to v3: https://lore.kernel.org/r/20260910-add-tda38740-and-tda38725-v3-0-3e87637da3d6@gmail.com
Changes in v3:
- Clarify that TDA38725 and TDA38740 share the same PMBus programming
model, with infineon,tda38740 as the preferred compatible string and
infineon,tda38725 as a compatibility alias.
- The optional VOUT scaling property with a documented default
value of 1.0 to support devices that require output-voltage scaling.
- Update the driver to apply the scaling for READ_VOUT.
- Link to v2: https://lore.kernel.org/r/20260907-add-tda38740-and-tda38725-v2-0-1d051d63aa01@gmail.com
Changes in v2:
- Use standard http:// URIs for $id and $schema
- Add maintainers section.
- Use C99 named initializers.
- Link to v1: https://lore.kernel.org/r/20260907-add-tda38740-and-tda38725-v1-0-e2db1b2566b1@gmail.com
---
Colin Huang (2):
dt-bindings: hwmon: pmbus: Add Infineon tda38740 and tda38725
hwmon: (pmbus/tda38740) Add driver for Infineon TDA38740/TDA38725
.../bindings/hwmon/pmbus/infineon,tda38740.yaml | 55 ++++++++++++++++++
Documentation/hwmon/index.rst | 1 +
Documentation/hwmon/tda38740.rst | 65 ++++++++++++++++++++++
drivers/hwmon/pmbus/Kconfig | 9 +++
drivers/hwmon/pmbus/Makefile | 1 +
drivers/hwmon/pmbus/tda38740.c | 64 +++++++++++++++++++++
6 files changed, 195 insertions(+)
---
base-commit: ba08432bda66a7889d8f3d1581dabf10f59b25eb
change-id: 20260903-add-tda38740-and-tda38725-32bbb097d41e
Best regards,
--
Colin Huang <u8813345@gmail.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v5 1/2] dt-bindings: hwmon: pmbus: Add Infineon tda38740 and tda38725
2026-09-17 11:33 [PATCH v5 0/2] Add driver for Infineon TDA38740/TDA38725 Colin Huang
@ 2026-09-17 11:33 ` Colin Huang
2026-09-17 11:38 ` sashiko-bot
2026-09-17 11:33 ` [PATCH v5 2/2] hwmon: (pmbus/tda38740) Add driver for Infineon TDA38740/TDA38725 Colin Huang
1 sibling, 1 reply; 5+ messages in thread
From: Colin Huang @ 2026-09-17 11:33 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jonathan Corbet, Shuah Khan, Randy Dunlap
Cc: linux-hwmon, devicetree, linux-kernel, colin.huang2, linux-doc,
Colin Huang
From: Colin Huang <u8813345@gmail.com>
Add devicetree bindings for the Infineon TDA38740 and TDA38725
single-voltage synchronous buck regulators with PMBus interface.
Signed-off-by: Colin Huang <u8813345@gmail.com>
---
.../bindings/hwmon/pmbus/infineon,tda38740.yaml | 55 ++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38740.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38740.yaml
new file mode 100644
index 000000000000..6733e44c37f6
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38740.yaml
@@ -0,0 +1,55 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,tda38740.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Infineon TDA38740 and TDA38725 PMBus Synchronous Buck Regulator
+
+maintainers:
+ - Colin Huang <u8813345@gmail.com>
+
+description: |
+ The Infineon TDA38740/TDA38725 is a 40A/25A single-voltage synchronous
+ buck regulator with a PMBus interface designed for industrial use.
+
+ Datasheet:
+ https://www.infineon.com/row/public/documents/24/49/infineon-tda38740-tda38725-datasheet-en.pdf
+
+properties:
+ compatible:
+ oneOf:
+ - const: infineon,tda38740
+ - items:
+ - const: infineon,tda38725
+ - const: infineon,tda38740
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ regulator@40 {
+ compatible = "infineon,tda38725",
+ "infineon,tda38740";
+ reg = <0x40>;
+
+ interrupt-parent = <&sgpiom0>;
+ interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
+ };
+ };
+
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v5 2/2] hwmon: (pmbus/tda38740) Add driver for Infineon TDA38740/TDA38725
2026-09-17 11:33 [PATCH v5 0/2] Add driver for Infineon TDA38740/TDA38725 Colin Huang
2026-09-17 11:33 ` [PATCH v5 1/2] dt-bindings: hwmon: pmbus: Add Infineon tda38740 and tda38725 Colin Huang
@ 2026-09-17 11:33 ` Colin Huang
2026-09-17 11:41 ` sashiko-bot
1 sibling, 1 reply; 5+ messages in thread
From: Colin Huang @ 2026-09-17 11:33 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jonathan Corbet, Shuah Khan, Randy Dunlap
Cc: linux-hwmon, devicetree, linux-kernel, colin.huang2, linux-doc,
Colin Huang
From: Colin Huang <u8813345@gmail.com>
Add a PMBus driver for Infineon TDA38740 and TDA38725
single-voltage synchronous buck regulators.
Signed-off-by: Colin Huang <u8813345@gmail.com>
---
Documentation/hwmon/index.rst | 1 +
Documentation/hwmon/tda38740.rst | 65 ++++++++++++++++++++++++++++++++++++++++
drivers/hwmon/pmbus/Kconfig | 9 ++++++
drivers/hwmon/pmbus/Makefile | 1 +
drivers/hwmon/pmbus/tda38740.c | 64 +++++++++++++++++++++++++++++++++++++++
5 files changed, 140 insertions(+)
diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
index f07977a20271..aeff87b3d46d 100644
--- a/Documentation/hwmon/index.rst
+++ b/Documentation/hwmon/index.rst
@@ -265,6 +265,7 @@ Hardware Monitoring Kernel Drivers
sy7636a-hwmon
tc654
tc74
+ tda38740
thmc50
tmp102
tmp103
diff --git a/Documentation/hwmon/tda38740.rst b/Documentation/hwmon/tda38740.rst
new file mode 100644
index 000000000000..55ce12f14914
--- /dev/null
+++ b/Documentation/hwmon/tda38740.rst
@@ -0,0 +1,65 @@
+.. SPDX-License-Identifier: GPL-2.0-only
+
+====================================
+Kernel driver tda38740
+====================================
+
+Supported chips:
+ * Infineon TDA38740
+ * Infineon TDA38725
+
+ Prefix: 'tda38740'
+
+ Addresses scanned: -
+
+ Datasheet:
+ https://www.infineon.com/row/public/documents/24/49/infineon-tda38740-tda38725-datasheet-en.pdf
+
+Author: Colin Huang <u8813345@gmail.com>
+
+Description
+-----------
+
+The TDA38740 and TDA38725 are single-output synchronous buck regulators with a
+PMBus interface. They expose basic voltage, current, power and temperature
+telemetry through the standard PMBus hwmon interfaces.
+
+Sysfs entries
+-------------
+
+======================= =======================================================
+curr1_alarm Input current alarm
+curr1_input Measured input current
+curr1_label "iin"
+
+curr2_crit Critical maximum output current
+curr2_crit_alarm Output current critical high alarm
+curr2_input Measured output current
+curr2_label "iout"
+
+in1_crit Critical maximum input voltage
+in1_crit_alarm Input voltage critical high alarm
+in1_input Measured input voltage
+in1_label "vin"
+
+in2_crit Critical maximum output voltage
+in2_crit_alarm Output voltage critical high alarm
+in2_input Measured output voltage
+in2_label "vout"
+in2_lcrit Critical minimum output voltage
+in2_lcrit_alarm Output voltage critical low alarm
+
+power1_alarm Input power alarm
+power1_input Measured input power
+power1_label "pin"
+
+power2_input Measured output power
+power2_label "pout"
+
+temp1_crit Critical high temperature
+temp1_crit_alarm Chip temperature critical high alarm
+temp1_input Measured temperature
+temp1_max Maximum temperature
+temp1_max_alarm Chip temperature high alarm
+======================= =======================================================
+
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index bcfdc4ce4c10..e4ca80dd0574 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -763,6 +763,15 @@ config SENSORS_TDA38640_REGULATOR
If you say yes here you get regulator support for Infineon
TDA38640 as regulator.
+config SENSORS_TDA38740
+ tristate "Infineon TDA38725/TDA38740"
+ help
+ If you say yes here you get hardware monitoring support for Infineon
+ TDA38725 and TDA38740.
+
+ This driver can also be built as a module. If so, the module will
+ be called tda38740.
+
config SENSORS_TPS25990
tristate "TI TPS25990"
help
diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
index e288fe72a437..eb06d47816fd 100644
--- a/drivers/hwmon/pmbus/Makefile
+++ b/drivers/hwmon/pmbus/Makefile
@@ -70,6 +70,7 @@ obj-$(CONFIG_SENSORS_STEF48H28) += stef48h28.o
obj-$(CONFIG_SENSORS_SQ24860) += sq24860.o
obj-$(CONFIG_SENSORS_STPDDC60) += stpddc60.o
obj-$(CONFIG_SENSORS_TDA38640) += tda38640.o
+obj-$(CONFIG_SENSORS_TDA38740) += tda38740.o
obj-$(CONFIG_SENSORS_TPS25990) += tps25990.o
obj-$(CONFIG_SENSORS_TPS40422) += tps40422.o
obj-$(CONFIG_SENSORS_TPS53679) += tps53679.o
diff --git a/drivers/hwmon/pmbus/tda38740.c b/drivers/hwmon/pmbus/tda38740.c
new file mode 100644
index 000000000000..1b981c768645
--- /dev/null
+++ b/drivers/hwmon/pmbus/tda38740.c
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Hardware monitoring driver for Infineon TDA38725/TDA38740
+ *
+ * Copyright (c) 2023 9elements GmbH
+ *
+ */
+
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include "pmbus.h"
+
+static struct pmbus_driver_info tda38740_info = {
+ .pages = 1,
+ .format[PSC_VOLTAGE_IN] = linear,
+ .format[PSC_VOLTAGE_OUT] = linear,
+ .format[PSC_CURRENT_OUT] = linear,
+ .format[PSC_CURRENT_IN] = linear,
+ .format[PSC_POWER] = linear,
+ .format[PSC_TEMPERATURE] = linear,
+ .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT
+ | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP
+ | PMBUS_HAVE_IIN
+ | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
+ | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
+ | PMBUS_HAVE_POUT | PMBUS_HAVE_PIN,
+};
+
+static int tda38740_probe(struct i2c_client *client)
+{
+ return pmbus_do_probe(client, &tda38740_info);
+}
+
+static const struct i2c_device_id tda38740_id[] = {
+ { .name = "tda38725"},
+ { .name = "tda38740"},
+ {}
+};
+MODULE_DEVICE_TABLE(i2c, tda38740_id);
+
+static const struct of_device_id __maybe_unused tda38740_of_match[] = {
+ { .compatible = "infineon,tda38725"},
+ { .compatible = "infineon,tda38740"},
+ {}
+};
+MODULE_DEVICE_TABLE(of, tda38740_of_match);
+
+static struct i2c_driver tda38740_driver = {
+ .driver = {
+ .name = "tda38740",
+ .of_match_table = of_match_ptr(tda38740_of_match),
+ },
+ .probe = tda38740_probe,
+ .id_table = tda38740_id,
+};
+
+module_i2c_driver(tda38740_driver);
+
+MODULE_DESCRIPTION("PMBus driver for Infineon TDA38725/TDA38740");
+MODULE_LICENSE("GPL");
+MODULE_IMPORT_NS("PMBUS");
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v5 1/2] dt-bindings: hwmon: pmbus: Add Infineon tda38740 and tda38725
2026-09-17 11:33 ` [PATCH v5 1/2] dt-bindings: hwmon: pmbus: Add Infineon tda38740 and tda38725 Colin Huang
@ 2026-09-17 11:38 ` sashiko-bot
0 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-09-17 11:38 UTC (permalink / raw)
To: Colin Huang; +Cc: linux-hwmon, conor+dt, devicetree, robh
> From: Colin Huang <u8813345@gmail.com>
>
> Add devicetree bindings for the Infineon TDA38740 and TDA38725
> single-voltage synchronous buck regulators with PMBus interface.
>
> Signed-off-by: Colin Huang <u8813345@gmail.com>
Sashiko has reviewed this patch and found no issues. It looks great!
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260917-add-tda38740-and-tda38725-v5-0-7fc19668ada4@gmail.com?part=1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 2/2] hwmon: (pmbus/tda38740) Add driver for Infineon TDA38740/TDA38725
2026-09-17 11:33 ` [PATCH v5 2/2] hwmon: (pmbus/tda38740) Add driver for Infineon TDA38740/TDA38725 Colin Huang
@ 2026-09-17 11:41 ` sashiko-bot
0 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-09-17 11:41 UTC (permalink / raw)
To: Colin Huang; +Cc: conor+dt, robh, linux-hwmon, devicetree
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] acpi: of_match_ptr() breaks PRP0001 ACPI matching without CONFIG_OF
--
commit 7b99b2a1da30b603fdd50ea7b04df230634e2572
Author: Colin Huang <u8813345@gmail.com>
hwmon: (pmbus/tda38740) Add driver for Infineon TDA38740/TDA38725
Add a PMBus driver for Infineon TDA38740 and TDA38725
single-voltage synchronous buck regulators.
> diff --git a/drivers/hwmon/pmbus/tda38740.c b/drivers/hwmon/pmbus/tda38740.c
> new file mode 100644
> index 0000000000000..1b981c7686453
> --- /dev/null
> +++ b/drivers/hwmon/pmbus/tda38740.c
[ ... ]
> +static const struct of_device_id __maybe_unused tda38740_of_match[] = {
^^^^^^^^^^^^^^
[Severity: Medium]
Could we drop this annotation? It appears it is only needed because of the
of_match_ptr() usage below.
> + { .compatible = "infineon,tda38725"},
> + { .compatible = "infineon,tda38740"},
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, tda38740_of_match);
> +
> +static struct i2c_driver tda38740_driver = {
> + .driver = {
> + .name = "tda38740",
> + .of_match_table = of_match_ptr(tda38740_of_match),
^^^^^^^^^^^^
[Severity: Medium]
Will this break device binding on ACPI-based systems?
When CONFIG_OF is disabled, the of_match_ptr() macro evaluates to NULL. This
strips the of_match_table from the device_driver struct, which prevents the
ACPI subsystem from using the PRP0001 compatible string mechanism to match
and bind the device.
Dropping of_match_ptr() would allow ACPI platforms without OF to still match
using these compatible strings.
> + },
> + .probe = tda38740_probe,
> + .id_table = tda38740_id,
> +};
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260917-add-tda38740-and-tda38725-v5-0-7fc19668ada4@gmail.com?part=2
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-09-17 11:41 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-17 11:33 [PATCH v5 0/2] Add driver for Infineon TDA38740/TDA38725 Colin Huang
2026-09-17 11:33 ` [PATCH v5 1/2] dt-bindings: hwmon: pmbus: Add Infineon tda38740 and tda38725 Colin Huang
2026-09-17 11:38 ` sashiko-bot
2026-09-17 11:33 ` [PATCH v5 2/2] hwmon: (pmbus/tda38740) Add driver for Infineon TDA38740/TDA38725 Colin Huang
2026-09-17 11:41 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox