Re: [PATCH 2/2] staging: i3c: add Realtek RTS490x I3C HUB driver

From: Greg KH

Date: Mon May 04 2026 - 11:00:59 EST


On Thu, Apr 30, 2026 at 08:13:54PM +0800, zain_zhou@xxxxxxxxxxxxxx wrote:
> From: zain_zhou <zain_zhou@xxxxxxxxxxxxxx>
>
> Add driver for Realtek RTS490x series I3C HUB devices (RTS4900,
> RTS4901, RTS4902, RTS4903, RTS4904, RTS4906).
>
> The I3C HUB is a smart device that provides:
> - voltage compatibility across I3C Controller and Target devices
> - bus capacitance isolation
> - address conflict isolation
> - I3C port expansion (up to 8 target ports)
> - dual controller port support
> - I3C and SMBus device compatibility
> - GPIO expansion via target ports
>
> The driver supports:
> - Device Tree based configuration of LDO, pull-up, IO strength
> and per-port mode (I3C/SMBus/GPIO/disabled)
> - Logical I3C bus registration per target port
> - SMBus agent functionality with IBI and polling modes
> - GPIO chip with IRQ support
> - DebugFS interface for register access and DT config inspection
> - IBI (In-Band Interrupt) handling
>
> The driver is placed in staging as it has known issues to be resolved
> before mainlining; see drivers/staging/rts490x/TODO for details.
>
> Signed-off-by: zain_zhou <zain_zhou@xxxxxxxxxxxxxx>

We need a real name, not an email alias.

And no, please don't add new drivers to drivers/staging/ especially when
it is so easy to fix them up properly "first" before adding them to the
kernel tree.

Your TODO file is pretty easy:

> diff --git a/drivers/staging/rts490x/TODO b/drivers/staging/rts490x/TODO
> new file mode 100644
> index 000000000000..0be2d7693d68
> --- /dev/null
> +++ b/drivers/staging/rts490x/TODO
> @@ -0,0 +1,19 @@
> +TODO list for rts490xa-i3c-hub staging driver
> +==============================================
> +
> +- Move driver out of staging once the following are addressed:
> + - Add proper DT binding schema validation (dt-schema)
> + - Clean up open-coded OF property parsing; use device_property_* APIs
> + instead of of_property_read_* where possible
> + - Remove use of full_name / sscanf for node name parsing; use
> + of_node_name_eq() and fwnode helpers instead
> + - Replace global mutex (i3c_hub_regmap_mutex) with per-device locking
> + - Add kernel-doc comments for all exported/public functions
> + - Resolve TODO comment in i3c_hub_hw_configure_tp() regarding MUX
> + connection verification
> + - Remove TBD comment in i3c_hub_probe() regarding DEV_CMD security lock
> + - Review and fix potential locking issues in i3c_hub_delayed_work()
> + when registering logical buses
> + - Fix error handling in i3c_hub_delayed_work(): early return on failure
> + does not unregister already-registered logical buses, causing resource
> + leak; needs proper cleanup on error path

All of those you could do this week. Don't add stuff to staging that
you are going to maintain, as it will be more work in the end. Just do
the needed extra effort and then merge it to the proper place in the
tree.

thanks,

greg k-h