Re: [PATCH v3] hwmon: pmbus: mpq8785: fix VOUT_MODE mismatch during identification
From: Guenter Roeck
Date: Tue Feb 10 2026 - 10:13:09 EST
On Tue, Feb 10, 2026 at 03:26:34PM +0800, Carl Lee wrote:
> From: Carl Lee <carl.lee@xxxxxxx>
>
> When MPQ8785 reports VOUT_MODE as VID mode, mpq8785_identify()
> configures the driver for direct mode. The subsequent
> pmbus_identify_common() check then fails due to a mismatch
> between the reported mode and the configured mode, causing
> device initialization to fail.
>
> Override the reported VOUT_MODE to direct mode to keep the
> driver configuration consistent with the reported mode and
> allow successful device initialization.
>
> This does not change how voltages are interpreted, but avoids
> a false identification failure caused by mismatched mode
> handling.
>
> Signed-off-by: Carl Lee <carl.lee@xxxxxxx>
Applied.
Thanks,
Guenter
> ---
> This series fixes a device identification failure on MPQ8785 caused by
> a mismatch between the reported VOUT_MODE and the driver-configured mode.
>
> When the chip reports VOUT_MODE as VID, the driver already treats it as
> direct mode, but the mismatch causes the common identification code to
> fail. The patch ensures the reported mode is consistent with the driver
> configuration so the device can initialize successfully.
> ---
> Changes in v3:
> - Drop patches 1/3 and 2/3 from the series.
> - Pass through non-VID modes unchanged
> - Add clarify code comments
> - Link to v2: https://lore.kernel.org/r/20260205-dt-bindings-hwmon-pmbus-mpq8785-add-mpq8786-support-v2-0-3744cd9b2850@xxxxxxx
>
> Changes in v2:
> - Combine DT binding and driver changes into a single series
> - Fix VOUT reporting by forcing direct mode for VID VOUT
> - Link to v1: https://lore.kernel.org/r/20260203-dt-bindings-hwmon-pmbus-mpq8785-add-mpq8786-support-v1-1-67b041e2f762@xxxxxxx
> ---
> drivers/hwmon/pmbus/mpq8785.c | 28 ++++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
>
> ---
> base-commit: 4c87cdd0328495759f6e9f9f4e1e53ef8032a76f
> change-id: 20260203-dt-bindings-hwmon-pmbus-mpq8785-add-mpq8786-support-f48049e8411e
>
> Best regards,
>
> diff --git a/drivers/hwmon/pmbus/mpq8785.c b/drivers/hwmon/pmbus/mpq8785.c
> index 1f56aaf4dde8..87bd039c77b9 100644
> --- a/drivers/hwmon/pmbus/mpq8785.c
> +++ b/drivers/hwmon/pmbus/mpq8785.c
> @@ -47,6 +47,33 @@ static int mpq8785_identify(struct i2c_client *client,
> return 0;
> };
>
> +static int mpq8785_read_byte_data(struct i2c_client *client, int page, int reg)
> +{
> + int ret;
> +
> + switch (reg) {
> + case PMBUS_VOUT_MODE:
> + ret = pmbus_read_byte_data(client, page, reg);
> + if (ret < 0)
> + return ret;
> +
> + if ((ret >> 5) == 1) {
> + /*
> + * The MPQ8785 chip reports VOUT_MODE as VID mode, but the driver
> + * treats VID as direct mode. Without this, identification would fail
> + * due to mode mismatch.
> + * This override ensures the reported mode matches the driver
> + * configuration, allowing successful initialization.
> + */
> + return PB_VOUT_MODE_DIRECT;
> + }
> +
> + return ret;
> + default:
> + return -ENODATA;
> + }
> +}
> +
> static int mpm82504_read_word_data(struct i2c_client *client, int page,
> int phase, int reg)
> {
> @@ -129,6 +156,7 @@ static int mpq8785_probe(struct i2c_client *client)
> break;
> case mpq8785:
> info->identify = mpq8785_identify;
> + info->read_byte_data = mpq8785_read_byte_data;
> break;
> default:
> return -ENODEV;