Re: [PATCH v20 4/8] mfd: p3h2x4x: Add driver for NXP P3H2x4x i3c hub and on-die regulator

From: Lee Jones

Date: Mon Oct 26 2026 - 11:11:37 EST


On Fri, 23 Oct 2026, Lakshay Piplani wrote:

>
> NXP Confidential

Really?

> > -----Original Message-----
> > From: Lakshay Piplani <lakshay.piplani@xxxxxxx>
> > Sent: Tuesday, September 22, 2026 4:06 PM
> > To: linux-kernel@xxxxxxxxxxxxxxx; linux-i3c@xxxxxxxxxxxxxxxxxxx;
> > alexandre.belloni@xxxxxxxxxxx; krzk+dt@xxxxxxxxxx; robh@xxxxxxxxxx;
> > conor+dt@xxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; broonie@xxxxxxxxxx;
> > mfd@xxxxxxxxxxxxxxx; lee@xxxxxxxxxx; Frank Li <frank.li@xxxxxxx>;
> > lgirdwood@xxxxxxxxx
> > Cc: Vikash Bansal <vikash.bansal@xxxxxxx>; Priyanka Jain
> > <priyanka.jain@xxxxxxx>; Aman Kumar Pandey
> > <aman.kumarpandey@xxxxxxx>; Lakshay Piplani
> > <lakshay.piplani@xxxxxxx>
> > Subject: [PATCH v20 4/8] mfd: p3h2x4x: Add driver for NXP P3H2x4x i3c hub
> > and on-die regulator

Why is your mailer adding headers? Please configure it properly.

> > From: Aman Kumar Pandey <aman.kumarpandey@xxxxxxx>
> >
> > Add core MFD support for the NXP P3H2x4x
> > (P3H2440/P3H2441/P3H2840/P3H2841) family of multiport I3C hub devices.
> > These devices connect to a host via I3C/I2C/SMBus and expose multiple
> > downstream target ports.
> >
> > All variants share the same register interface. Read the implemented target-
> > port count from DEV_CAPAB, so no per-compatible driver data is required.
> >
> > Signed-off-by: Aman Kumar Pandey <aman.kumarpandey@xxxxxxx>
> > Signed-off-by: Vikash Bansal <vikash.bansal@xxxxxxx>
> > Signed-off-by: Lakshay Piplani <lakshay.piplani@xxxxxxx>
> > Reviewed-by: Frank Li <Frank.Li@xxxxxxx>
> >
> > ---
> > Changes in v20:
> > - No change
> >
> > Changes in v19:
> > - Retain only nxp,p3h2840 in the OF match table because the other
> > variants use it as their fallback compatible
> >
> > Changes in v18:
> > - Rebased onto v7.3-rc1; no intended driver behaviour changes
> >
> > Changes in v17:
> > - No change
> >
> > Changes in v16:
> > - Use a named initializer for struct i2c_device_id
> > ({ .name = "nxp-i3c-hub" })
> > - Keep the shared header in include/linux/mfd/ (struct p3h2x4x is shared by
> > the mfd parent and its regulator/i3c-hub children). The i3c_hub_priv
> > back-pointer is retained for IBI routing, with documented publish/clear
> > ordering
> >
> > Changes in v15:
> > - Read the device capability register to determine whether the device has
> > four or eight target ports
> > - Store the detected target-port count in the shared MFD data
> > - Add OF match entries for all P3H2440, P3H2441, P3H2840 and P3H2841
> > variants
> > - Add a shared hub-context pointer for use by the IBI handler without
> > overwriting the MFD parent's driver data
> >
> > Changes in v14:
> > - Clean up MFD driver comments, formatting, variable names and author
> > information
> > - Define and document the I3C hub DCR value in hexadecimal form
> > - Use direct regmap bit-width values instead of local macros
> > - Add a shared protected_reg_lock for protected register accesses across
> > P3H2X4X child drivers
> >
> > Changes in v13:
> > - Use i3c_device helpers (i3cdev_to_dev()) instead of direct struct access
> > to maintain API abstraction
> > - Avoid including internal I3C headers and use public device headers instead
> > - Ensure proper device matching by relying on manufacturer ID checks in
> > probe
> >
> > Changes in v12:
> > - No change, added Reviewed-By tag
> >
> > Changes in v11:
> > - Use MFD_CELL_NAME() for child device registration
> > - Rename local variables for consistency
> > - Rename driver names to follow subsystem conventions:
> > - Use '-' instead of '_' in driver names
> > - Drop the "_drv" suffix from driver names
> >
> > Changes in v10:
> > - Drop redundant is_p3h2x4x_in_i3c flag
> >
> > Changes in v9:
> > - Renamed macros to follow consistent uppercase naming conventions
> > - Made REGMAP selects in the P3H2X4X MFD Kconfig conditional,
> > to avoid I3C/I2C dependency issues
> >
> > Changes in v8:
> > - No change
> >
> > Changes in v7:
> > - Use new config I3C_OR_I2C
> >
> > Changes in v6:
> > - No change
> >
> > Changes in v5:
> > - Corrected the ordering in the Makefile and Kconfig for MFD_P3H2X4X
> > - Updated dev_err_probe() for regmap_init failure.
> > - Updated module description
> >
> > Changes in v4:
> > - Split the driver into three separate patches(mfd, regulator and I3C hub)
> > - Added support for NXP P3H2x4x MFD functionality
> > ---
> > ---
> > MAINTAINERS | 2 +
> > drivers/mfd/Kconfig | 13 +++
> > drivers/mfd/Makefile | 1 +
> > drivers/mfd/p3h2840.c | 164 ++++++++++++++++++++++++++++++++++++
> > include/linux/i3c/device.h | 2 +
> > include/linux/mfd/p3h2840.h | 41 +++++++++
> > 6 files changed, 223 insertions(+)
> > create mode 100644 drivers/mfd/p3h2840.c create mode 100644
> > include/linux/mfd/p3h2840.h
> >
>
> Hi Lee,
>
> Alexandre has already applied patches 1/8, 2/8, 3/8 and 6/8 from the v20 series.
>
> Patches 4/8, 5/8, 7/8 and 8/8 remain outstanding, with patch 4/8 providing the MFD core required by the remaining patches.
>
> Do you plan to pick patch 4/8 through the MFD tree, or would you prefer it to go through the I3C tree with your Reviewed-by?

I'd be happy to apply the MFD patch and the dependents.

However, right now it looks like you have a bunch of Sahiko issues
pending. Is that the case?

--
Lee Jones