Thread (11 messages) 11 messages, 3 authors, 2026-03-26

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.yaml
diff --git a/Documentation/devicetree/bindings/i3c/nxp,p3h2840.yaml
b/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
%7Clak
quoted
+shay.piplani%40nxp.com%7C41cb77ab9e1a4bd9525208de886bab1b%7C686
ea1d3b
quoted
+c2b4c6fa92cd99c5c301635%7C0%7C0%7C639098193138487662%7CUnknow
n%7CTWFp
quoted
+bGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4
zMiIsI
quoted
+kFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=ofJ5OTL%2Fn
kxuq1Ky
quoted
+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.pipla
quoted
+ni%40nxp.com%7C41cb77ab9e1a4bd9525208de886bab1b%7C686ea1d3bc2
b4c6fa92
quoted
+cd99c5c301635%7C0%7C0%7C639098193138518717%7CUnknown%7CTWFp
bGZsb3d8ey
quoted
+JFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoi
TWF
quoted
+pbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=Oy7On%2FMYpy93DRw
O243lEvJ%2F
quoted
+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 to
multiple
quoted
+     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 connect
to
quoted
+     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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help