RE: [EXT] Re: [PATCH v7 3/7] dt-bindings: i3c: Add NXP P3H2x4x i3c-hub support
From: Lakshay Piplani <hidden>
Date: 2026-03-23 04:38:34
Also in:
linux-i3c, lkml
-----Original Message----- From: Rob Herring <robh@kernel.org> Sent: Monday, March 23, 2026 5:05 AM To: Lakshay Piplani <redacted> Cc: linux-kernel@vger.kernel.org; linux-i3c@lists.infradead.org; alexandre.belloni@bootlin.com; krzk+dt@kernel.org; conor+dt@kernel.org; devicetree@vger.kernel.org; broonie@kernel.org; lee@kernel.org; Frank Li [off-list ref]; lgirdwood@gmail.com; Vikash Bansal [off-list ref]; Priyanka Jain [off-list ref]; Aman Kumar Pandey [off-list ref] Subject: [EXT] Re: [PATCH v7 3/7] dt-bindings: i3c: Add NXP P3H2x4x i3c-hub support Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button On Thu, Mar 19, 2026 at 04:54:37PM +0530, Lakshay Piplani wrote:quoted
From: Aman Kumar Pandey <redacted> Add bindings for the NXP P3H2x4x (P3H2440/P3H2441/P3H2840/P3H2841) multiport I3C hub family. These devices connect to a host via I3C/I2C/SMBus and allow communication with multiple downstream peripherals. Signed-off-by: Aman Kumar Pandey <redacted> Signed-off-by: Vikash Bansal <redacted> --- Changes in v7: - Fix schema validation issues - Adjust required properties - Add I2C example Changes in v6: - Use a vendor prefix for the attributes Changes in v5: - Removed SW properties: cp0-ldo-microvolt,cp1-ldo-microvolt, tp0145-ldo-microvolt, tp2367-ldo-microvolt - Changed supply entries and its descriptions Changes in v4: - Fixed DT binding check warning - Removed SW properties: ibi-enable, local-dev, and always-enable Changes in v3: - Added MFD (Multi-Function Device) support for I3C hub and on-die regulator - Added Regulator supply node Changes in v2: - Fixed DT binding check warning - Revised logic for parsing DTS nodes --- --- .../devicetree/bindings/i3c/nxp,p3h2840.yaml | 303 ++++++++++++++++++ MAINTAINERS | 8 + 2 files changed, 311 insertions(+) create mode 100644 Documentation/devicetree/bindings/i3c/nxp,p3h2840.yamldiff --git a/Documentation/devicetree/bindings/i3c/nxp,p3h2840.yamlb/Documentation/devicetree/bindings/i3c/nxp,p3h2840.yaml new file mode 100644 index 000000000000..495e0e4c1ae1--- /dev/null +++ b/Documentation/devicetree/bindings/i3c/nxp,p3h2840.yaml@@ -0,0 +1,303 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) # Copyright +2025 NXP %YAML 1.2 +--- +$id: +https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdevi+cetree.org%2Fschemas%2Fi3c%2Fnxp%2Cp3h2840.yaml%23&data=05%7C02 %7Clakquoted
+shay.piplani%40nxp.com%7C41cb77ab9e1a4bd9525208de886bab1b%7C686 ea1d3bquoted
+c2b4c6fa92cd99c5c301635%7C0%7C0%7C639098193138487662%7CUnknow n%7CTWFpquoted
+bGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4 zMiIsIquoted
+kFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=ofJ5OTL%2Fn kxuq1Kyquoted
+bU5RTJtwo4yMNFHvObf2iTFnaSg%3D&reserved=0 +$schema: +https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdevi +cetree.org%2Fmeta-schemas%2Fcore.yaml%23&data=05%7C02%7Clakshay.piplaquoted
+ni%40nxp.com%7C41cb77ab9e1a4bd9525208de886bab1b%7C686ea1d3bc2 b4c6fa92quoted
+cd99c5c301635%7C0%7C0%7C639098193138518717%7CUnknown%7CTWFp bGZsb3d8eyquoted
+JFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoi TWFquoted
+pbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=Oy7On%2FMYpy93DRw O243lEvJ%2Fquoted
+oCfusLv0j2e0S93cNnk%3D&reserved=0 + +title: NXP P3H2X4X I3C HUB + +maintainers: + - Aman Kumar Pandey [off-list ref] + - Vikash Bansal [off-list ref] + +description: | + P3H2x4x (P3H2440/P3H2441/P3H2840/P3H2841) is a family of multiport +I3C + hub devices that connect to:- + 1. A host CPU via I3C/I2C/SMBus bus on upstream side and connect tomultiplequoted
+ peripheral devices on the downstream side. + 2. Have two Controller Ports which can support either + I2C/SMBus or I3C buses and connect to a CPU, BMC or SOC. + 3. P3H2840/ P3H2841 are 8 port I3C hub with eight I3C/I2C Target Port. + 4. P3H2440/ P3H2441 are 4 port I3C hub with four I3C/I2C Target Port. + Target ports can be configured as I2C/SMBus, I3C or GPIO and connecttoquoted
+ peripherals. + +properties: + compatible: + const: nxp,p3h2840 + + reg: + maxItems: 1 + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + assigned-address: + maximum: 0x7f + + nxp,tp0145-pullup-ohms: + description: + Selects the pull up resistance for target Port 0/1/4/5, in ohms. + enum: [250, 500, 1000, 2000] + default: 500 + + nxp,tp2367-pullup-ohms: + description: + Selects the pull up resistance for target Port 2/3/6/7, in ohms. + enum: [250, 500, 1000, 2000] + default: 500 + + nxp,cp0-io-strength-ohms: + description: + Selects the IO drive strength for controller Port 0, in ohms. + enum: [20, 30, 40, 50] + default: 20 + + nxp,cp1-io-strength-ohms: + description: + Selects the IO drive strength for controller Port 1, in ohms. + enum: [20, 30, 40, 50] + default: 20 + + nxp,tp0145-io-strength-ohms: + description: + Selects the IO drive strength for target port 0/1/4/5, in ohms. + enum: [20, 30, 40, 50] + default: 20 + + nxp,tp2367-io-strength-ohms: + description: + Selects the IO drive strength for target port 2/3/6/7, in ohms. + enum: [20, 30, 40, 50] + default: 20 + + vcc1-supply: + description: Controller port 0 power supply. + + vcc2-supply: + description: Controller port 1 power supply. + + vcc3-supply: + description: Target port 0/1/4/5 power supply. + + vcc4-supply: + description: Target port 2/3/6/7 power supply. + + regulators: + type: object + additionalProperties: false + + properties: + ldo-cp0: + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + + ldo-cp1: + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + + ldo-tpg0: + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + + ldo-tpg1: + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + +required: + - reg + +patternProperties: + "^i3c@[0-7]$": + type: object + unevaluatedProperties: false + + properties: + reg: + description: + The I3C HUB Target Port number. + maximum: 7 + + '#address-cells': + const: 3 + + '#size-cells': + const: 0 + + nxp,pullup-enable: + type: boolean + description: + Enables the on-die pull-up for Target Port. + + required: + - reg + - "#address-cells" + - "#size-cells" + + "^(i2c|smbus)@[0-7]$": + type: object + unevaluatedProperties: false + + properties: + reg: + description: + The I3C HUB Target Port number. + maximum: 7 + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + nxp,pullup-enable: + type: boolean + description: + Enables the on-die pull-up for Target Port. + + required: + - reg + - "#address-cells" + - "#size-cells" + +unevaluatedProperties: false + +examples: + - | + i3c { + #address-cells = <3>; + #size-cells = <0>; + + hub@70,236153000c2 { + reg = <0x70 0x236 0x3000c2>;Once again, you must have a compatible. "The device is discoverable" is not an argument. If it is discoverable, then don't put the device in DT in the first place. Rob
Hi Rob, Thanks for pointing it out. I've added the missing compatible in i3c example; will include it in v8. Regards Lakshay