[PATCH 1/2] dt-bindings: i3c: add binding for Realtek RTS490x I3C HUB
zain_zhou at realsil.com.cn
zain_zhou at realsil.com.cn
Thu Apr 30 05:13:53 PDT 2026
From: zain_zhou <zain_zhou at realsil.com.cn>
Add DT binding schema for Realtek RTS490x series I3C HUB devices.
The binding describes configuration properties for:
- LDO enable/disable and voltage level per port group
- Pull-up resistance per port group
- IO driver strength per port
- Per target-port mode (I3C/SMBus/GPIO/disabled), pull-up,
IO mode, SMBus clock frequency and polling interval
- Hub network always-I3C mode
- Hardware identification via CSEL pin (id) and CP1 pins (id-cp1)
Signed-off-by: zain_zhou <zain_zhou at realsil.com.cn>
---
.../bindings/i3c/realtek,rts490x-i3c-hub.yaml | 410 ++++++++++++++++++
MAINTAINERS | 6 +
2 files changed, 416 insertions(+)
create mode 100644 Documentation/devicetree/bindings/i3c/realtek,rts490x-i3c-hub.yaml
diff --git a/Documentation/devicetree/bindings/i3c/realtek,rts490x-i3c-hub.yaml b/Documentation/devicetree/bindings/i3c/realtek,rts490x-i3c-hub.yaml
new file mode 100644
index 000000000000..30295eefee89
--- /dev/null
+++ b/Documentation/devicetree/bindings/i3c/realtek,rts490x-i3c-hub.yaml
@@ -0,0 +1,410 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i3c/realtek,rts490x-i3c-hub.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: I3C HUB
+
+maintainers:
+ - zain_zhou <zain_zhou at realsil.com.cn>
+
+description: |
+ I3C HUB is smart device which provides multiple functionality:
+ * enabling voltage compatibility across I3C Controller and Target devices,
+ * bus capacitance isolation
+ * address conflict isolation
+ * I3C port expansion
+ * two controllers in a single I3C bus
+ * I3C and SMBus device compatibility
+ * GPIO expansion
+
+ Having such big number of features, there is a need to have some DT knobs to tell the I3C HUB
+ driver which features shall be enabled and how they shall be configured. I3C HUB driver read,
+ validate DT knobs and set corresponding registers with the right way to satisfy user requests from
+ DT.
+
+ All the DT properties for I3C HUB are located under dedicated (for I3C HUB) DT entry. I3C HUB DT
+ entry structure is aligned with regular I3C device DT entry described in i3c.yaml.
+
+allOf:
+ - $ref: i3c.yaml#
+
+properties:
+ $nodename:
+ pattern: "^hub at 0,0$"
+
+ cp0-ldo-en:
+ enum:
+ - disabled
+ - enabled
+ description: |
+ I3C HUB Controller Port 0 LDO disabling/enabling setting. If enabled, voltage produced by
+ on-die LDO will be available externally on dedicated pin. This option could be used to supply
+ external pull-up resistors or for any other purpose which does not cross LDO capabilities.
+
+ This property is optional. If not provided, LDO will be disabled.
+
+ cp1-ldo-en:
+ enum:
+ - disabled
+ - enabled
+ description: |
+ I3C HUB Controller Port 1 LDO disabling/enabling setting. If enabled, voltage produced by
+ on-die LDO will be available externally on dedicated pin. This option could be used to supply
+ external pull-up resistors or for any other purpose which does not cross LDO capabilities.
+
+ This property is optional. If not provided, LDO will be disabled.
+
+ tp0145-ldo-en:
+ enum:
+ - disabled
+ - enabled
+ description: |
+ I3C HUB Target Ports 0/1/4/5 LDO disabling/enabling setting. If enabled, voltage produced by
+ on-die LDO will be available externally on dedicated pin. This option could be used to supply
+ external pull-up resistors or for any other purpose which does not cross LDO capabilities.
+
+ This property is optional. If not provided, LDO will be disabled.
+
+ tp2367-ldo-en:
+ enum:
+ - disabled
+ - enabled
+ description: |
+ I3C HUB Target Ports 2/3/6/7 LDO disabling/enabling setting. If enabled, voltage produced by
+ on-die LDO will be available externally on dedicated pin. This option could be used to supply
+ external pull-up resistors or for any other purpose which does not cross LDO capabilities.
+
+ This property is optional. If not provided, LDO will be disabled.
+
+ cp0-ldo-volt:
+ enum:
+ - 1.0V
+ - 1.1V
+ - 1.2V
+ - 1.8V
+ description: |
+ I3C HUB Controller Port 0 LDO setting to control the Controller Port 1 voltage level. This
+ property is optional.
+
+ If not provided, LDO configuration is not modified in I3C HUB.
+
+ cp1-ldo-volt:
+ enum:
+ - 1.0V
+ - 1.1V
+ - 1.2V
+ - 1.8V
+ description: |
+ I3C HUB Controller Port 1 LDO setting to control the Controller Port 1 voltage level. This
+ property is optional.
+
+ If not provided, LDO configuration is not modified in I3C HUB.
+
+ tp0145-ldo-volt:
+ enum:
+ - disabled
+ - 1.0V
+ - 1.1V
+ - 1.2V
+ - 1.8V
+ description: |
+ I3C HUB Target Ports 0/1/4/5 LDO setting to control the Target Ports 0/1/4/5 voltage level.
+
+ If not provided, LDO configuration is not modified in I3C HUB.
+
+ tp2367-ldo-volt:
+ enum:
+ - disabled
+ - 1.0V
+ - 1.1V
+ - 1.2V
+ - 1.8V
+ description: |
+ I3C HUB Target Ports 2/3/6/7 LDO setting to control the Target Ports 2/3/6/7 voltage level.
+
+ If not provided, LDO configuration is not modified in I3C HUB.
+
+ tp0145-pullup:
+ enum:
+ - disabled
+ - 250R
+ - 500R
+ - 1k
+ - 2k
+ description: |
+ I3C HUB Target Ports 0/1/4/5 pull-up setting to control the Target Ports 0/1/4/5 pull-up
+ resistance level.
+
+ This property is optional. If not provided, pull-up configuration is not modified in I3C HUB.
+
+ tp2367-pullup:
+ enum:
+ - disabled
+ - 250R
+ - 500R
+ - 1k
+ - 2k
+ description: |
+ I3C HUB Target Ports 2/3/6/7 pull-up setting to control the Target Ports 2/3/6/7 pull-up
+ resistance level.
+
+ This property is optional. If not provided, pull-up configuration is not modified in I3C HUB.
+
+ cp0-io-strength:
+ enum:
+ - 20Ohms
+ - 30Ohms
+ - 40Ohms
+ - 50Ohms
+ description: |
+ I3C HUB Controller Port 0 IO strength setting to control the Controller Port 0 output driver
+ strength.
+
+ This property is optional. If not provided, IO strength configuration is not modified in I3C
+ HUB.
+
+ cp1-io-strength:
+ enum:
+ - 20Ohms
+ - 30Ohms
+ - 40Ohms
+ - 50Ohms
+ description: |
+ I3C HUB Controller Port 1 IO strength setting to control the Controller Port 1 output driver
+ strength.
+
+ This property is optional. If not provided, IO strength configuration is not modified in I3C
+ HUB.
+
+ tp0145-io-strength:
+ enum:
+ - 20Ohms
+ - 30Ohms
+ - 40Ohms
+ - 50Ohms
+ description: |
+ I3C HUB Target Ports 0/1/4/5 IO strength setting to control the Target Ports 0/1/4/5 output
+ driver strength.
+
+ This property is optional. If not provided, IO strength configuration is not modified in I3C
+ HUB.
+
+ tp2367-io-strength:
+ enum:
+ - 20Ohms
+ - 30Ohms
+ - 40Ohms
+ - 50Ohms
+ description: |
+ I3C HUB Target Ports 2/3/6/7 IO strength setting to control the Target Ports 2/3/6/7 output
+ driver strength.
+
+ This property is optional. If not provided, IO strength configuration is not modified in I3C
+ HUB.
+
+ id:
+ enum:
+ - 0
+ - 1
+ - 3
+ description: |
+ I3C HUB ID based on CSEL pin. There are three possible values:
+ 0 - CP0 is selected as primary Controller Port
+ 1 - Primary Controller Port is selected by software by writing the REG#56
+ 3 - CP1 is selected as primary Controller Port
+
+ I3C HUB driver reads CSEL pin status (REG#121[5:4]) and tries to find DT node with matching
+ value in 'id' property.
+
+ This property is optional. If not provided, DT node can only be used by the I3C HUB driver if
+ there is no others with matching 'id' or 'id-cp1'. If there is a multiple DT nodes with no
+ 'id' property - the first one will be chosen by I3C HUB driver. If there is a multiple DT
+ nodes with matching 'id' property - the first one will be chosen by I3C HUB driver.
+
+ If both 'id' and 'id-cp1' are available, DT node will chosen only when both values match those
+ read from I3C HUB.
+
+ id-cp1:
+ enum:
+ - 0
+ - 1
+ - 2
+ - 3
+ description: |
+ I3C HUB ID based on CP1 SDA and SCL pins state probed during power on.
+
+ I3C HUB driver reads CP1 SDA and SCL pin status and tries to find DT node with matching value
+ in 'id-cp1' property.
+
+ This property is optional. If not provided, DT node can only be used by the I3C HUB
+ driver if there is no others with matching 'id' or 'id-cp1'. If there is a multiple DT nodes
+ with no 'id-cp1' property - the first one will be chosen by I3C HUB driver. If there is a
+ multiple DT nodes with matching 'id-cp1' property - the first one will be chosen by I3C HUB
+ driver.
+
+ If both 'id' and 'id-cp1' are available, DT node will chosen only when both values match those
+ read from I3C HUB.
+
+patternProperties:
+ "@[0-9]$":
+ type: object
+ description: |
+ I3C HUB Target Port child, should be named: target-port@<target-port-id>
+
+ properties:
+ mode:
+ enum:
+ - disabled
+ - i3c
+ - smbus
+ - gpio
+ description: |
+ I3C HUB Target Port mode setting to control Target Port functionality.
+
+ This property is optional. If not provided, Target Port mode configuration is not modified
+ in I3C HUB.
+
+ pullup:
+ enum:
+ - disabled
+ - enabled
+ description: |
+ I3C HUB Target Port pull-up setting to disable/enable Target Port pull-up.
+
+ This property is optional. If not provided, Target Port pull-up configuration is not
+ modified in I3C HUB.
+
+ always-enable:
+ type: boolean
+ description: |
+ I3C HUB Target Port settings to control the port enable/disable policy.
+
+ This property is optional. If not provided, Target Port is enabled only on accessing to
+ the devices connected to it and the port is disabled automatically after the accessing
+ is done. If provided, the Target Port is always enabled.
+
+ polling-interval-ms:
+ type: uint32
+ description: |
+ I3C HUB Target Port SMBus polling interval in milliseconds.
+
+ This property is optional. If not provided or set to 0, polling is disabled and the driver
+ uses IBI (In-Band Interrupts). If provided with a positive value, polling is enabled for
+ this Target Port with the given period.Note: this positive value only affects the SMBus
+ target agent polling. The SMBus controller agent polling interval is computed dynamically
+ from clock and data length.
+
+ clock-frequency:
+ type: uint32
+ enum:
+ - 100000
+ - 200000
+ - 400000
+ - 1000000
+ description: |
+ I3C HUB Target Port SMBus clock frequency in Hz.
+
+ This property follows the standard I2C 'clock-frequency' semantics.
+ Applies only when the Target Port mode is set to "smbus".
+ Optional; if not provided, the driver uses 400000 Hz by default.
+
+additionalProperties: true
+
+examples:
+ - |
+ i3c-master at d040000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ hub at 0,0 {
+ cp0-ldo-en = "disabled";
+ cp1-ldo-en = "enabled";
+ cp0-ldo-volt = "1.0V";
+ cp1-ldo-volt = "1.1V";
+ tp0145-ldo-en = "enabled";
+ tp2367-ldo-en = "disabled";
+ tp0145-ldo-volt = "1.2V";
+ tp2367-ldo-volt = "1.8V";
+ tp0145-pullup = "2k";
+ tp2367-pullup = "500R";
+ tp0145-io-strength = "50Ohms";
+ tp2367-io-strength = "30Ohms";
+ cp0-io-strength = "20Ohms";
+ cp1-io-strength = "40Ohms";
+
+ target-port at 0 {
+ mode = "i3c";
+ pullup = "enabled";
+ always_enable;
+ };
+ target-port at 1 {
+ mode = "smbus";
+ pullup = "enabled";
+ clock-frequency = <1000000>;
+ polling-interval-ms = <10>;
+ backend at 10{
+ compatible = "i2c-slave-mqueue";
+ reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
+ };
+ };
+ target-port at 2 {
+ mode = "gpio";
+ pullup = "disabled";
+ };
+ target-port at 3 {
+ mode = "disabled";
+ pullup = "disabled";
+ };
+ };
+ };
+
+ - |
+ i3c-master at d040000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ hub at 70,3C000000100 {
+ reg = <0x70 0x3C0 0x00000100>;
+ assigned-address = <0x70>;
+ dcr = <0xC2>;
+
+ cp0-ldo-en = "disabled";
+ cp1-ldo-en = "enabled";
+ cp0-ldo-volt = "1.0V";
+ cp1-ldo-volt = "1.1V";
+ tp0145-ldo-en = "enabled";
+ tp2367-ldo-en = "disabled";
+ tp0145-ldo-volt = "1.2V";
+ tp2367-ldo-volt = "1.8V";
+ tp0145-pullup = "2k";
+ tp2367-pullup = "500R";
+ tp0145-io-strength = "50Ohms";
+ tp2367-io-strength = "30Ohms";
+ cp0-io-strength = "20Ohms";
+ cp1-io-strength = "40Ohms";
+
+ target-port at 0 {
+ mode = "i3c";
+ pullup = "enabled";
+ always-enable;
+ };
+ target-port at 1 {
+ mode = "smbus";
+ pullup = "enabled";
+ backend at 12{
+ compatible = "i2c-slave-mqueue";
+ reg = <(0x12 | I2C_OWN_SLAVE_ADDRESS)>;
+ };
+ };
+ target-port at 2 {
+ mode = "gpio";
+ pullup = "disabled";
+ };
+ target-port at 3 {
+ mode = "disabled";
+ pullup = "disabled";
+ };
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 2fb1c75afd16..71ee5071ac0f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12214,6 +12214,12 @@ S: Supported
F: Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
F: drivers/i3c/master/renesas-i3c.c
+I3C HUB DRIVER FOR REALTEK RTS490X
+M: zain_zhou <zain_zhou at realsil.com.cn>
+S: Maintained
+F: Documentation/devicetree/bindings/i3c/realtek,rts490x-i3c-hub.yaml
+F: drivers/staging/rts490x/
+
I3C DRIVER FOR SYNOPSYS DESIGNWARE
S: Orphan
F: Documentation/devicetree/bindings/i3c/snps,dw-i3c-master.yaml
--
2.34.1
More information about the linux-i3c
mailing list