From: Frank Li <Frank.li@nxp.com>
To: zain_zhou@realsil.com.cn
Cc: linux-staging@lists.linux.dev, linux-i3c@lists.infradead.org,
devicetree@vger.kernel.org, gregkh@linuxfoundation.org,
alexandre.belloni@bootlin.com, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, linusw@kernel.org,
brgl@kernel.org, linux-gpio@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] dt-bindings: i3c: add binding for Realtek RTS490x I3C HUB
Date: Mon, 4 May 2026 16:34:05 -0400 [thread overview]
Message-ID: <afkCvVaPb-NrLs2P@lizhi-Precision-Tower-5810> (raw)
In-Reply-To: <20260430121354.6253-1-zain_zhou@realsil.com.cn>
On Thu, Apr 30, 2026 at 08:13:53PM +0800, zain_zhou@realsil.com.cn wrote:
> From: zain_zhou <zain_zhou@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)
Please base on
https://lore.kernel.org/linux-i3c/20260420105222.1562243-1-lakshay.piplani@nxp.com/T/#t
which almost done!
Frank
>
> Signed-off-by: zain_zhou <zain_zhou@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@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@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@d040000 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + hub@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@0 {
> + mode = "i3c";
> + pullup = "enabled";
> + always_enable;
> + };
> + target-port@1 {
> + mode = "smbus";
> + pullup = "enabled";
> + clock-frequency = <1000000>;
> + polling-interval-ms = <10>;
> + backend@10{
> + compatible = "i2c-slave-mqueue";
> + reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
> + };
> + };
> + target-port@2 {
> + mode = "gpio";
> + pullup = "disabled";
> + };
> + target-port@3 {
> + mode = "disabled";
> + pullup = "disabled";
> + };
> + };
> + };
> +
> + - |
> + i3c-master@d040000 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + hub@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@0 {
> + mode = "i3c";
> + pullup = "enabled";
> + always-enable;
> + };
> + target-port@1 {
> + mode = "smbus";
> + pullup = "enabled";
> + backend@12{
> + compatible = "i2c-slave-mqueue";
> + reg = <(0x12 | I2C_OWN_SLAVE_ADDRESS)>;
> + };
> + };
> + target-port@2 {
> + mode = "gpio";
> + pullup = "disabled";
> + };
> + target-port@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@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
>
prev parent reply other threads:[~2026-05-04 20:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-30 12:13 [PATCH 1/2] dt-bindings: i3c: add binding for Realtek RTS490x I3C HUB zain_zhou
2026-04-30 12:13 ` [PATCH 2/2] staging: i3c: add Realtek RTS490x I3C HUB driver zain_zhou
2026-05-04 14:25 ` Greg KH
2026-04-30 13:41 ` [PATCH 1/2] dt-bindings: i3c: add binding for Realtek RTS490x I3C HUB Rob Herring (Arm)
2026-05-01 9:37 ` Krzysztof Kozlowski
2026-05-04 20:34 ` Frank Li [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=afkCvVaPb-NrLs2P@lizhi-Precision-Tower-5810 \
--to=frank.li@nxp.com \
--cc=alexandre.belloni@bootlin.com \
--cc=brgl@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=krzk+dt@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-i3c@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=robh@kernel.org \
--cc=zain_zhou@realsil.com.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox