* [PATCH 0/2] hwmon: Add Murata D1U74T-W PSU driver
@ 2026-05-12 1:44 Abdurrahman Hussain
2026-05-12 1:44 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU Abdurrahman Hussain
2026-05-12 1:44 ` [PATCH 2/2] hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver Abdurrahman Hussain
0 siblings, 2 replies; 7+ messages in thread
From: Abdurrahman Hussain @ 2026-05-12 1:44 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jonathan Corbet, Shuah Khan
Cc: linux-hwmon, devicetree, linux-kernel, linux-doc,
Abdurrahman Hussain
This series adds a PMBus driver for the Murata D1U74T-W AC/DC power
supply unit, used in some Open Compute Project platforms.
The PSU is PMBus-compliant and uses the linear data format. The driver
exposes:
- input/output voltage, current and power telemetry,
- three temperature sensors,
- dual fan tachometer monitoring,
through the standard hwmon/pmbus sysfs interface. Probe verifies the
PMBUS_MFR_ID and PMBUS_MFR_MODEL fields before binding so the driver
only attaches to actual D1U74T-W hardware.
Patch 1 adds the devicetree binding.
Patch 2 adds the driver, hwmon documentation, Kconfig/Makefile entries
and MAINTAINERS section.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
Abdurrahman Hussain (2):
dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU
hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver
.../bindings/hwmon/pmbus/murata,d1u74t.yaml | 41 +++++++++
Documentation/hwmon/d1u74t.rst | 97 ++++++++++++++++++++++
Documentation/hwmon/index.rst | 1 +
MAINTAINERS | 8 ++
drivers/hwmon/pmbus/Kconfig | 9 ++
drivers/hwmon/pmbus/Makefile | 1 +
drivers/hwmon/pmbus/d1u74t.c | 85 +++++++++++++++++++
7 files changed, 242 insertions(+)
---
base-commit: 5d6919055dec134de3c40167a490f33c74c12581
change-id: 20260511-d1u74t-c0cba8f1c344
Best regards,
--
Abdurrahman Hussain <abdurrahman@nexthop.ai>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU
2026-05-12 1:44 [PATCH 0/2] hwmon: Add Murata D1U74T-W PSU driver Abdurrahman Hussain
@ 2026-05-12 1:44 ` Abdurrahman Hussain
2026-05-12 16:41 ` Conor Dooley
2026-05-13 2:24 ` sashiko-bot
2026-05-12 1:44 ` [PATCH 2/2] hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver Abdurrahman Hussain
1 sibling, 2 replies; 7+ messages in thread
From: Abdurrahman Hussain @ 2026-05-12 1:44 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jonathan Corbet, Shuah Khan
Cc: linux-hwmon, devicetree, linux-kernel, linux-doc,
Abdurrahman Hussain
Add devicetree binding for the Murata D1U74T-W PMBus power supply
unit.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
.../bindings/hwmon/pmbus/murata,d1u74t.yaml | 41 ++++++++++++++++++++++
MAINTAINERS | 6 ++++
2 files changed, 47 insertions(+)
diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
new file mode 100644
index 000000000000..ef080283bf79
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/pmbus/murata,d1u74t.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Murata D1U74T-W power supply unit
+
+maintainers:
+ - Abdurrahman Hussain <abdurrahman@nexthop.ai>
+
+description:
+ The Murata D1U74T-W is a PMBus-compliant AC/DC power supply unit that
+ exposes input/output voltage, current and power telemetry, three
+ temperature sensors and dual fan monitoring over an I2C interface.
+
+properties:
+ compatible:
+ enum:
+ - murata,d1u74t
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ psu@58 {
+ compatible = "murata,d1u74t";
+ reg = <0x58>;
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index b2040011a386..b6a055fbb870 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6803,6 +6803,12 @@ S: Maintained
F: Documentation/hwmon/crps.rst
F: drivers/hwmon/pmbus/crps.c
+MURATA D1U74T PSU DRIVER
+M: Abdurrahman Hussain <abdurrahman@nexthop.ai>
+L: linux-hwmon@vger.kernel.org
+S: Maintained
+F: Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
+
CRYPTO API
M: Herbert Xu <herbert@gondor.apana.org.au>
M: "David S. Miller" <davem@davemloft.net>
--
2.53.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver
2026-05-12 1:44 [PATCH 0/2] hwmon: Add Murata D1U74T-W PSU driver Abdurrahman Hussain
2026-05-12 1:44 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU Abdurrahman Hussain
@ 2026-05-12 1:44 ` Abdurrahman Hussain
2026-05-13 3:15 ` sashiko-bot
1 sibling, 1 reply; 7+ messages in thread
From: Abdurrahman Hussain @ 2026-05-12 1:44 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jonathan Corbet, Shuah Khan
Cc: linux-hwmon, devicetree, linux-kernel, linux-doc,
Abdurrahman Hussain
Add PMBUS driver for Murata D1U74T power supplies.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
Documentation/hwmon/d1u74t.rst | 97 ++++++++++++++++++++++++++++++++++++++++++
Documentation/hwmon/index.rst | 1 +
MAINTAINERS | 2 +
drivers/hwmon/pmbus/Kconfig | 9 ++++
drivers/hwmon/pmbus/Makefile | 1 +
drivers/hwmon/pmbus/d1u74t.c | 85 ++++++++++++++++++++++++++++++++++++
6 files changed, 195 insertions(+)
diff --git a/Documentation/hwmon/d1u74t.rst b/Documentation/hwmon/d1u74t.rst
new file mode 100644
index 000000000000..f7786ebba0b4
--- /dev/null
+++ b/Documentation/hwmon/d1u74t.rst
@@ -0,0 +1,97 @@
+.. SPDX-License-Identifier: GPL-2.0-or-later
+
+Kernel driver d1u74t
+==================
+
+Supported chips:
+
+ * Murata D1U74T
+
+ Prefix: 'd1u74t'
+
+ Addresses scanned: -
+
+ Datasheet: Only available under NDA.
+
+Authors:
+ Abdurrahman Hussain <abdurrahman@nexthop.ai>
+
+
+Description
+-----------
+
+This driver implements support for Murata D1U74T Power Supply with
+PMBus support.
+
+The driver is a client driver to the core PMBus driver.
+Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
+
+
+Usage Notes
+-----------
+
+This driver does not auto-detect devices. You will have to instantiate the
+devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
+details.
+
+
+Sysfs entries
+-------------
+
+======================= ======================================================
+curr1_label "iin"
+curr1_input Measured input current
+curr1_max Maximum input current
+curr1_max_alarm Input maximum current high alarm
+curr1_crit Critical high input current
+curr1_crit_alarm Input critical current high alarm
+curr1_rated_max Maximum rated input current
+
+curr2_label "iout1"
+curr2_input Measured output current
+curr2_max Maximum output current
+curr2_max_alarm Output maximum current high alarm
+curr2_crit Critical high output current
+curr2_crit_alarm Output critical current high alarm
+curr2_rated_max Maximum rated output current
+
+in1_label "vin"
+in1_input Measured input voltage
+in1_crit Critical input over voltage
+in1_crit_alarm Critical input over voltage alarm
+in1_max Maximum input over voltage
+in1_max_alarm Maximum input over voltage alarm
+in1_rated_min Minimum rated input voltage
+in1_rated_max Maximum rated input voltage
+
+in2_label "vout1"
+in2_input Measured input voltage
+in2_crit Critical input over voltage
+in2_crit_alarm Critical input over voltage alarm
+in2_lcrit Critical input under voltage fault
+in2_lcrit_alarm Critical input under voltage fault alarm
+in2_max Maximum input over voltage
+in2_max_alarm Maximum input over voltage alarm
+in2_min Minimum input under voltage warning
+in2_min_alarm Minimum input under voltage warning alarm
+in2_rated_min Minimum rated input voltage
+in2_rated_max Maximum rated input voltage
+
+power1_label "pin"
+power1_input Measured input power
+power1_alarm Input power high alarm
+power1_max Maximum input power
+power1_rated_max Maximum rated input power
+
+temp[1-3]_input Measured temperature
+temp[1-3]_crit Critical temperature
+temp[1-3]_crit_alarm Critical temperature alarm
+temp[1-3]_max Maximum temperature
+temp[1-3]_max_alarm Maximum temperature alarm
+temp[1-3]_rated_max Maximum rated temperature
+
+fan1_alarm Fan 1 warning.
+fan1_fault Fan 1 fault.
+fan1_input Fan 1 speed in RPM.
+fan1_target Fan 1 target.
+======================= ======================================================
diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
index 8b655e5d6b68..97b1ef65b1c1 100644
--- a/Documentation/hwmon/index.rst
+++ b/Documentation/hwmon/index.rst
@@ -60,6 +60,7 @@ Hardware Monitoring Kernel Drivers
corsair-psu
cros_ec_hwmon
crps
+ d1u74t
da9052
da9055
dell-smm-hwmon
diff --git a/MAINTAINERS b/MAINTAINERS
index b6a055fbb870..8f443a2f0e45 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6808,6 +6808,8 @@ M: Abdurrahman Hussain <abdurrahman@nexthop.ai>
L: linux-hwmon@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
+F: Documentation/hwmon/d1u74t.rst
+F: drivers/hwmon/pmbus/d1u74t.c
CRYPTO API
M: Herbert Xu <herbert@gondor.apana.org.au>
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index 8f4bff375ecb..ee93b22d2887 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -113,6 +113,15 @@ config SENSORS_CRPS
This driver can also be built as a module. If so, the module will
be called crps.
+config SENSORS_D1U74T
+ tristate "Murata D1U74T Power Supply"
+ help
+ If you say yes here you get hardware monitoring support for the Murata
+ D1U74T Power Supply.
+
+ This driver can also be built as a module. If so, the module will
+ be called d1u74t.
+
config SENSORS_DELTA_AHE50DC_FAN
tristate "Delta AHE-50DC fan control module"
help
diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
index 7129b62bc00f..8cf7d3075371 100644
--- a/drivers/hwmon/pmbus/Makefile
+++ b/drivers/hwmon/pmbus/Makefile
@@ -76,3 +76,4 @@ obj-$(CONFIG_SENSORS_XDPE1A2G7B) += xdpe1a2g7b.o
obj-$(CONFIG_SENSORS_ZL6100) += zl6100.o
obj-$(CONFIG_SENSORS_PIM4328) += pim4328.o
obj-$(CONFIG_SENSORS_CRPS) += crps.o
+obj-$(CONFIG_SENSORS_D1U74T) += d1u74t.o
diff --git a/drivers/hwmon/pmbus/d1u74t.c b/drivers/hwmon/pmbus/d1u74t.c
new file mode 100644
index 000000000000..3127e0e5a23d
--- /dev/null
+++ b/drivers/hwmon/pmbus/d1u74t.c
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright 2026 Nexthop Systems.
+ */
+
+#include <linux/i2c.h>
+#include <linux/of.h>
+#include <linux/pmbus.h>
+
+#include "pmbus.h"
+
+static const struct i2c_device_id d1u74t_id[] = {
+ { "d1u74t" },
+ {},
+};
+MODULE_DEVICE_TABLE(i2c, d1u74t_id);
+
+static struct pmbus_driver_info d1u74t_info = {
+ .pages = 1,
+ /* PSU uses default linear data format. */
+ .func[0] = PMBUS_HAVE_PIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
+ PMBUS_HAVE_IIN | PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT |
+ PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_TEMP |
+ PMBUS_HAVE_TEMP2 | PMBUS_HAVE_TEMP3 |
+ PMBUS_HAVE_STATUS_TEMP | PMBUS_HAVE_FAN12 |
+ PMBUS_HAVE_STATUS_FAN12,
+};
+
+static int d1u74t_probe(struct i2c_client *client)
+{
+ char buf[I2C_SMBUS_BLOCK_MAX + 2] = { 0 };
+ struct device *dev = &client->dev;
+ int rc;
+
+ rc = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, buf);
+ if (rc < 0)
+ return dev_err_probe(dev, rc, "Failed to read PMBUS_MFR_ID\n");
+
+ if (rc != 9 || strncmp(buf, "Murata-PS", 9)) {
+ buf[rc] = '\0';
+ dev_err(dev, "Unsupported Manufacturer ID '%s'\n", buf);
+ return -ENODEV;
+ }
+
+ rc = i2c_smbus_read_block_data(client, PMBUS_MFR_MODEL, buf);
+ if (rc < 0)
+ return dev_err_probe(dev, rc,
+ "Failed to read PMBUS_MFR_MODEL\n");
+
+ if (strncmp(buf, "D1U74T-W", 8)) {
+ buf[rc] = '\0';
+ return dev_err_probe(dev, -ENODEV, "Model '%s' not supported\n",
+ buf);
+ }
+
+ rc = pmbus_do_probe(client, &d1u74t_info);
+ if (rc)
+ return dev_err_probe(dev, rc, "Failed to probe\n");
+
+ return 0;
+}
+
+static const struct of_device_id d1u74t_of_match[] = {
+ {
+ .compatible = "murata,d1u74t",
+ },
+ {},
+};
+MODULE_DEVICE_TABLE(of, d1u74t_of_match);
+
+static struct i2c_driver d1u74t_driver = {
+ .driver = {
+ .name = "d1u74t",
+ .of_match_table = d1u74t_of_match,
+ },
+ .probe = d1u74t_probe,
+ .id_table = d1u74t_id,
+};
+
+module_i2c_driver(d1u74t_driver);
+
+MODULE_AUTHOR("Abdurrahman Hussain");
+MODULE_DESCRIPTION("PMBus driver for Murata D1U74T-W power supplies");
+MODULE_LICENSE("GPL");
+MODULE_IMPORT_NS("PMBUS");
--
2.53.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU
2026-05-12 1:44 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU Abdurrahman Hussain
@ 2026-05-12 16:41 ` Conor Dooley
2026-05-13 2:24 ` sashiko-bot
1 sibling, 0 replies; 7+ messages in thread
From: Conor Dooley @ 2026-05-12 16:41 UTC (permalink / raw)
To: Abdurrahman Hussain
Cc: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jonathan Corbet, Shuah Khan, linux-hwmon, devicetree,
linux-kernel, linux-doc
[-- Attachment #1: Type: text/plain, Size: 2482 bytes --]
On Mon, May 11, 2026 at 06:44:27PM -0700, Abdurrahman Hussain wrote:
> Add devicetree binding for the Murata D1U74T-W PMBus power supply
> unit.
>
> Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
If you're not adding regulators/supplies, this looks like a candidate
for trivial-devices.yaml.
pw-bot: changes-requested
Thanks
Conor.
> ---
> .../bindings/hwmon/pmbus/murata,d1u74t.yaml | 41 ++++++++++++++++++++++
> MAINTAINERS | 6 ++++
> 2 files changed, 47 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
> new file mode 100644
> index 000000000000..ef080283bf79
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
> @@ -0,0 +1,41 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/hwmon/pmbus/murata,d1u74t.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Murata D1U74T-W power supply unit
> +
> +maintainers:
> + - Abdurrahman Hussain <abdurrahman@nexthop.ai>
> +
> +description:
> + The Murata D1U74T-W is a PMBus-compliant AC/DC power supply unit that
> + exposes input/output voltage, current and power telemetry, three
> + temperature sensors and dual fan monitoring over an I2C interface.
> +
> +properties:
> + compatible:
> + enum:
> + - murata,d1u74t
> +
> + reg:
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + psu@58 {
> + compatible = "murata,d1u74t";
> + reg = <0x58>;
> + };
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index b2040011a386..b6a055fbb870 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -6803,6 +6803,12 @@ S: Maintained
> F: Documentation/hwmon/crps.rst
> F: drivers/hwmon/pmbus/crps.c
>
> +MURATA D1U74T PSU DRIVER
> +M: Abdurrahman Hussain <abdurrahman@nexthop.ai>
> +L: linux-hwmon@vger.kernel.org
> +S: Maintained
> +F: Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
> +
> CRYPTO API
> M: Herbert Xu <herbert@gondor.apana.org.au>
> M: "David S. Miller" <davem@davemloft.net>
>
> --
> 2.53.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU
2026-05-12 1:44 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU Abdurrahman Hussain
2026-05-12 16:41 ` Conor Dooley
@ 2026-05-13 2:24 ` sashiko-bot
1 sibling, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-05-13 2:24 UTC (permalink / raw)
To: Abdurrahman Hussain; +Cc: devicetree, krzk+dt, robh, conor+dt, linux-hwmon
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Low] The 'MURATA D1U74T PSU DRIVER' MAINTAINERS entry breaks alphabetical sorting.
- [Low] The devicetree example uses a non-standard node name 'psu@58'.
--
commit ff01149325e7be87488c4a95814dc42ab054bb39
Author: Abdurrahman Hussain <abdurrahman@nexthop.ai>
dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU
This commit adds the devicetree binding documentation and MAINTAINERS entry
for the Murata D1U74T-W PMBus power supply unit.
> diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
[ ... ]
> +examples:
> + - |
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + psu@58 {
Does this node name follow the standard devicetree specification? The
standard generic name for this class of device is typically "power-supply".
Should this be updated to "power-supply@58" rather than "psu@58" to better
reflect the generic function of the device?
> diff --git a/MAINTAINERS b/MAINTAINERS
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -6803,6 +6803,12 @@ S: Maintained
> F: Documentation/hwmon/crps.rst
> F: drivers/hwmon/pmbus/crps.c
>
> +MURATA D1U74T PSU DRIVER
> +M: Abdurrahman Hussain <abdurrahman@nexthop.ai>
> +L: linux-hwmon@vger.kernel.org
> +S: Maintained
> +F: Documentation/devicetree/bindings/hwmon/pmbus/murata,d1u74t.yaml
> +
> CRYPTO API
This isn't a bug, but it appears this entry was inserted out of alphabetical
order. Since "MURATA D1U74T PSU DRIVER" is currently placed just before
"CRYPTO API", should it be relocated further down the file into its proper
alphabetical position in the "M" section?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260511-d1u74t-v1-0-623c2bc1532a@nexthop.ai?part=1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver
2026-05-12 1:44 ` [PATCH 2/2] hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver Abdurrahman Hussain
@ 2026-05-13 3:15 ` sashiko-bot
2026-05-13 4:56 ` Guenter Roeck
0 siblings, 1 reply; 7+ messages in thread
From: sashiko-bot @ 2026-05-13 3:15 UTC (permalink / raw)
To: Abdurrahman Hussain; +Cc: robh, krzk+dt, devicetree, conor+dt, linux-hwmon
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [Medium] The driver fails to verify the number of bytes read (`rc`) from `PMBUS_MFR_MODEL` before calling `strncmp(buf, "D1U74T-W", 8)`.
- [Low] Copy-paste errors in `Documentation/hwmon/d1u74t.rst` for `in2_*` attributes.
- [Low] Inconsistent error handling styles for failure modes returning `-ENODEV` in the probe function.
--
commit a76e770177dc6ee5472b638d5e12f032fd0a5cd5
Author: Abdurrahman Hussain <abdurrahman@nexthop.ai>
hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver
This commit introduces a new PMBus driver for Murata D1U74T power supplies.
It relies on the core PMBus framework and checks the manufacturer ID and
model string during probe.
> diff --git a/Documentation/hwmon/d1u74t.rst b/Documentation/hwmon/d1u74t.rst
> new file mode 100644
> index 0000000000000..f7786ebba0b47
> --- /dev/null
> +++ b/Documentation/hwmon/d1u74t.rst
> @@ -0,0 +1,97 @@
[ ... ]
> +in2_label "vout1"
> +in2_input Measured input voltage
> +in2_crit Critical input over voltage
> +in2_crit_alarm Critical input over voltage alarm
> +in2_lcrit Critical input under voltage fault
> +in2_lcrit_alarm Critical input under voltage fault alarm
> +in2_max Maximum input over voltage
> +in2_max_alarm Maximum input over voltage alarm
> +in2_min Minimum input under voltage warning
> +in2_min_alarm Minimum input under voltage warning alarm
> +in2_rated_min Minimum rated input voltage
> +in2_rated_max Maximum rated input voltage
This isn't a bug, but should these descriptions refer to output voltage
instead of input voltage, since the label is vout1?
[ ... ]
> diff --git a/drivers/hwmon/pmbus/d1u74t.c b/drivers/hwmon/pmbus/d1u74t.c
> new file mode 100644
> index 0000000000000..3127e0e5a23de
> --- /dev/null
> +++ b/drivers/hwmon/pmbus/d1u74t.c
> @@ -0,0 +1,85 @@
[ ... ]
> +static int d1u74t_probe(struct i2c_client *client)
> +{
> + char buf[I2C_SMBUS_BLOCK_MAX + 2] = { 0 };
> + struct device *dev = &client->dev;
> + int rc;
> +
> + rc = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, buf);
> + if (rc < 0)
> + return dev_err_probe(dev, rc, "Failed to read PMBUS_MFR_ID\n");
> +
> + if (rc != 9 || strncmp(buf, "Murata-PS", 9)) {
> + buf[rc] = '\0';
> + dev_err(dev, "Unsupported Manufacturer ID '%s'\n", buf);
> + return -ENODEV;
> + }
This isn't a bug, but could dev_err_probe() be used here for consistency
with the other error paths in this function?
> +
> + rc = i2c_smbus_read_block_data(client, PMBUS_MFR_MODEL, buf);
> + if (rc < 0)
> + return dev_err_probe(dev, rc,
> + "Failed to read PMBUS_MFR_MODEL\n");
> +
> + if (strncmp(buf, "D1U74T-W", 8)) {
> + buf[rc] = '\0';
> + return dev_err_probe(dev, -ENODEV, "Model '%s' not supported\n",
> + buf);
> + }
Does this code evaluate stale data in the buffer if the model read returns
fewer than 8 bytes?
The buf array isn't cleared between the manufacturer and model reads. If
i2c_smbus_read_block_data() successfully returns a length smaller than 8,
strncmp() could end up comparing against leftover characters from the
previous Murata-PS string since rc isn't verified before the comparison.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260511-d1u74t-v1-0-623c2bc1532a@nexthop.ai?part=2
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver
2026-05-13 3:15 ` sashiko-bot
@ 2026-05-13 4:56 ` Guenter Roeck
0 siblings, 0 replies; 7+ messages in thread
From: Guenter Roeck @ 2026-05-13 4:56 UTC (permalink / raw)
To: sashiko-reviews, Abdurrahman Hussain
Cc: robh, krzk+dt, devicetree, conor+dt, linux-hwmon
Hi,
On 5/12/26 20:15, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
> - [Medium] The driver fails to verify the number of bytes read (`rc`) from `PMBUS_MFR_MODEL` before calling `strncmp(buf, "D1U74T-W", 8)`.
> - [Low] Copy-paste errors in `Documentation/hwmon/d1u74t.rst` for `in2_*` attributes.
> - [Low] Inconsistent error handling styles for failure modes returning `-ENODEV` in the probe function.
> --
>
> commit a76e770177dc6ee5472b638d5e12f032fd0a5cd5
> Author: Abdurrahman Hussain <abdurrahman@nexthop.ai>
>
> hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver
>
> This commit introduces a new PMBus driver for Murata D1U74T power supplies.
> It relies on the core PMBus framework and checks the manufacturer ID and
> model string during probe.
>
>> diff --git a/Documentation/hwmon/d1u74t.rst b/Documentation/hwmon/d1u74t.rst
>> new file mode 100644
>> index 0000000000000..f7786ebba0b47
>> --- /dev/null
>> +++ b/Documentation/hwmon/d1u74t.rst
>> @@ -0,0 +1,97 @@
> [ ... ]
>> +in2_label "vout1"
>> +in2_input Measured input voltage
>> +in2_crit Critical input over voltage
>> +in2_crit_alarm Critical input over voltage alarm
>> +in2_lcrit Critical input under voltage fault
>> +in2_lcrit_alarm Critical input under voltage fault alarm
>> +in2_max Maximum input over voltage
>> +in2_max_alarm Maximum input over voltage alarm
>> +in2_min Minimum input under voltage warning
>> +in2_min_alarm Minimum input under voltage warning alarm
>> +in2_rated_min Minimum rated input voltage
>> +in2_rated_max Maximum rated input voltage
>
> This isn't a bug, but should these descriptions refer to output voltage
> instead of input voltage, since the label is vout1?
>
> [ ... ]
>> diff --git a/drivers/hwmon/pmbus/d1u74t.c b/drivers/hwmon/pmbus/d1u74t.c
>> new file mode 100644
>> index 0000000000000..3127e0e5a23de
>> --- /dev/null
>> +++ b/drivers/hwmon/pmbus/d1u74t.c
>> @@ -0,0 +1,85 @@
> [ ... ]
>> +static int d1u74t_probe(struct i2c_client *client)
>> +{
>> + char buf[I2C_SMBUS_BLOCK_MAX + 2] = { 0 };
>> + struct device *dev = &client->dev;
>> + int rc;
>> +
>> + rc = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, buf);
>> + if (rc < 0)
>> + return dev_err_probe(dev, rc, "Failed to read PMBUS_MFR_ID\n");
>> +
>> + if (rc != 9 || strncmp(buf, "Murata-PS", 9)) {
>> + buf[rc] = '\0';
>> + dev_err(dev, "Unsupported Manufacturer ID '%s'\n", buf);
>> + return -ENODEV;
>> + }
>
> This isn't a bug, but could dev_err_probe() be used here for consistency
> with the other error paths in this function?
>
>> +
>> + rc = i2c_smbus_read_block_data(client, PMBUS_MFR_MODEL, buf);
>> + if (rc < 0)
>> + return dev_err_probe(dev, rc,
>> + "Failed to read PMBUS_MFR_MODEL\n");
>> +
>> + if (strncmp(buf, "D1U74T-W", 8)) {
>> + buf[rc] = '\0';
>> + return dev_err_probe(dev, -ENODEV, "Model '%s' not supported\n",
>> + buf);
>> + }
>
> Does this code evaluate stale data in the buffer if the model read returns
> fewer than 8 bytes?
>
> The buf array isn't cleared between the manufacturer and model reads. If
> i2c_smbus_read_block_data() successfully returns a length smaller than 8,
> strncmp() could end up comparing against leftover characters from the
> previous Murata-PS string since rc isn't verified before the comparison.
>
I think those are all valid issues. Please fix.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-13 4:56 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-12 1:44 [PATCH 0/2] hwmon: Add Murata D1U74T-W PSU driver Abdurrahman Hussain
2026-05-12 1:44 ` [PATCH 1/2] dt-bindings: hwmon: pmbus: Add Murata D1U74T PSU Abdurrahman Hussain
2026-05-12 16:41 ` Conor Dooley
2026-05-13 2:24 ` sashiko-bot
2026-05-12 1:44 ` [PATCH 2/2] hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver Abdurrahman Hussain
2026-05-13 3:15 ` sashiko-bot
2026-05-13 4:56 ` Guenter Roeck
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox