Re: [PATCH v4 2/2] hwmon: (pmbus/d1u74t) Add Murata D1U74T PSU driver
From: Guenter Roeck
Date: Sat May 16 2026 - 11:13:58 EST
On Thu, May 14, 2026 at 08:03:26PM -0700, Abdurrahman Hussain wrote:
> Add PMBUS driver for Murata D1U74T power supplies.
>
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Closes: https://lore.kernel.org/oe-kbuild-all/202605122253.zInzmUeX-lkp@xxxxxxxxx/
> Signed-off-by: Abdurrahman Hussain <abdurrahman@xxxxxxxxxx>
Applied, after dropping the above Reported-by: and Closes: tags.
Those are inappropriate for new drivers.
I also added the missing include files.
Guenter
> ---
> Documentation/hwmon/d1u74t.rst | 81 +++++++++++++++++++++++++++++++++++++++
> Documentation/hwmon/index.rst | 1 +
> MAINTAINERS | 7 ++++
> drivers/hwmon/pmbus/Kconfig | 9 +++++
> drivers/hwmon/pmbus/Makefile | 1 +
> drivers/hwmon/pmbus/d1u74t.c | 86 ++++++++++++++++++++++++++++++++++++++++++
> 6 files changed, 185 insertions(+)
>
> diff --git a/Documentation/hwmon/d1u74t.rst b/Documentation/hwmon/d1u74t.rst
> new file mode 100644
> index 000000000000..3a9eedbda483
> --- /dev/null
> +++ b/Documentation/hwmon/d1u74t.rst
> @@ -0,0 +1,81 @@
> +.. SPDX-License-Identifier: GPL-2.0-or-later
> +
> +Kernel driver d1u74t
> +====================
> +
> +Supported chips:
> +
> + * Murata D1U74T
> +
> + Prefix: 'd1u74t'
> +
> + Addresses scanned: -
> +
> + Datasheet: Publicly available at the Murata website
> +
> +Authors:
> + Abdurrahman Hussain <abdurrahman@xxxxxxxxxx>
> +
> +
> +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_alarm Input current 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 current high alarm
> +curr2_crit Critical high output current
> +curr2_crit_alarm Output current critical high alarm
> +curr2_rated_max Maximum rated output current
> +
> +in1_label "vin"
> +in1_input Measured input voltage
> +in1_alarm Input voltage alarm
> +in1_rated_min Minimum rated input voltage
> +in1_rated_max Maximum rated input voltage
> +
> +in2_label "vout1"
> +in2_input Measured output voltage
> +in2_alarm Output voltage alarm
> +in2_rated_min Minimum rated output voltage
> +in2_rated_max Maximum rated output voltage
> +
> +power1_label "pin"
> +power1_input Measured input power
> +power1_alarm Input power alarm
> +power1_rated_max Maximum rated input power
> +
> +temp[1-3]_input Measured temperature
> +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 b2040011a386..3106cf725dfc 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -18249,6 +18249,13 @@ F: drivers/mux/
> F: include/dt-bindings/mux/
> F: include/linux/mux/
>
> +MURATA D1U74T PSU DRIVER
> +M: Abdurrahman Hussain <abdurrahman@xxxxxxxxxx>
> +L: linux-hwmon@xxxxxxxxxxxxxxx
> +S: Maintained
> +F: Documentation/hwmon/d1u74t.rst
> +F: drivers/hwmon/pmbus/d1u74t.c
> +
> MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
> M: Bin Liu <b-liu@xxxxxx>
> L: linux-usb@xxxxxxxxxxxxxxx
> 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..286ba492e336
> --- /dev/null
> +++ b/drivers/hwmon/pmbus/d1u74t.c
> @@ -0,0 +1,86 @@
> +// 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';
> + return dev_err_probe(dev, -ENODEV,
> + "Unsupported Manufacturer ID '%s'\n",
> + buf);
> + }
> +
> + 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 (rc < 8 || 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");