[PATCH v2 4/4] uart-routing: Add UART Routing driver for StarFive JHB100 SoC

Changhuang Liang changhuang.liang at starfivetech.com
Sun Sep 6 18:24:57 PDT 2026


Hi, Randy

Thanks for the review.

> Hi,
> 
> On 9/5/26 3:29 AM, Changhuang Liang wrote:
> > Add driver support for JHB100 UART Routing control, allowing runtime
> > configuration of RX muxes between UART controllers and I/O pins.
> >
> > A sysfs interface is provided for easy checking and updating of
> > routing paths.
> >
> > Signed-off-by: Changhuang Liang <changhuang.liang at starfivetech.com>
> > ---
> >  .../sysfs-driver-starfive-uart-routing        |  45 ++++
> >  MAINTAINERS                                   |   8 +
> >  drivers/uart-routing/Kconfig                  |  13 ++
> >  drivers/uart-routing/Makefile                 |   1 +
> >  drivers/uart-routing/starfive-uart-routing.c  | 192
> > ++++++++++++++++++
> >  5 files changed, 259 insertions(+)
> >  create mode 100644
> > Documentation/ABI/testing/sysfs-driver-starfive-uart-routing
> >  create mode 100644 drivers/uart-routing/starfive-uart-routing.c
> >
> > diff --git
> > a/Documentation/ABI/testing/sysfs-driver-starfive-uart-routing
> > b/Documentation/ABI/testing/sysfs-driver-starfive-uart-routing
> > new file mode 100644
> > index 000000000000..737afdf428bc
> > --- /dev/null
> > +++ b/Documentation/ABI/testing/sysfs-driver-starfive-uart-routing
> > @@ -0,0 +1,45 @@
> > +What:		/sys/bus/platform/drivers/starfive-uart-routing/\*/uart\*
> > +Date:		August 2026
> > +Contact:	Changhuang Liang <changhuang.liang at starfivetech.com>
> > +Description:	Selects the RX source of the UARTx device.
> > +
> > +		When read, each file shows the list of available options with
> currently
> > +		selected option marked by brackets "[]". The list of available options
> > +		depends on the selected file.
> > +
> > +		e.g.
> > +		cat
> /sys/bus/platform/drivers/starfive-uart-routing/\*.uart-routing/uart1
> > +		io0 [io1] io2 io3 io4 io5 io6 io7 io8 io9 io10 io11 io12 io13 io14 uart0
> uart1
> > +		uart2 uart3 uart4 uart5 uart6 uart7 uart8 uart9 uart10 uart11
> > +uart12 uart13 uart14
> > +
> > +		In this case, UART1 gets its input from IO1 (physical serial port 1).
> > +
> > +		To switch the RX source of UART1 to UART2, write the desired
> source to the file:
> > +		echo uart2 >
> > +/sys/bus/platform/drivers/starfive-uart-routing/*.uart-routing/uart1
> > +
> > +		This indicates that UART1 now receives its input from UART2.
> > +
> > +Users:		OpenBMC.  Proposed changes should be mailed to
> > +		openbmc at lists.ozlabs.org
> > +
> > +What:		/sys/bus/platform/drivers/starfive-uart-routing/\*/io\*
> > +Date:		August 2026
> > +Contact:	Changhuang Liang <changhuang.liang at starfivetech.com>
> > +Description:	Selects the RX source of IOx serial port. The current
> selection
> > +		will be marked by brackets "[]". The list of available options
> > +		depends on the selected file.
> > +
> > +		e.g.
> > +		cat
> /sys/bus/platform/drivers/starfive-uart-routing/\*.uart-routing/io9
> > +		uart0 uart1 uart2 uart3 uart4 uart5 uart6 uart7 uart8 [uart9] uart10
> uart11 uart12
> > +		uart13 uart14 io0 io1 io2 io3 io4 io5 io6 io7 io8 io9 io10 io11
> > +io12 io13 io14
> > +
> > +		In this case, IO9 (physical serial port 9) gets its input from UART9.
> > +
> > +		To switch the RX source of IO9 to UART10, write the desired source
> to the file:
> > +		echo uart10 >
> > +/sys/bus/platform/drivers/starfive-uart-routing/*.uart-routing/io9
> > +
> > +		This indicates that IO9 now receives its input from UART10.
> > +
> > +Users:		OpenBMC.  Proposed changes should be mailed to
> > +		openbmc at lists.ozlabs.org
> 
> Please consider the following changes to this ABI file documentation (or make
> your own).
> 
> ---
> Avoid 'make htmldocs' warnings (from docutils) and make console input or
> output be presented more clearly and in a monospace font.
> 
> Documentation/ABI/testing/sysfs-driver-starfive-uart-routing:25: WARNING:
> Inline emphasis start-string without end-string. [docutils]
> Documentation/ABI/testing/sysfs-driver-starfive-uart-routing:1: WARNING:
> Inline emphasis start-string without end-string. [docutils]
> 
> Signed-off-by: Randy Dunlap <rdunlap at infradead.org>
> ---
>  Documentation/ABI/testing/sysfs-driver-starfive-uart-routing |   32
> +++++-----
>  1 file changed, 18 insertions(+), 14 deletions(-)
> 
> ---
> linux-next-20260902.orig/Documentation/ABI/testing/sysfs-driver-starfive-u
> art-routing
> +++ linux-next-20260902/Documentation/ABI/testing/sysfs-driver-starfive-
> +++ uart-routing
> @@ -1,4 +1,4 @@
> -What:		/sys/bus/platform/drivers/starfive-uart-routing/\*/uart\*
> +What:		/sys/bus/platform/drivers/starfive-uart-routing/*/uart*
>  Date:		August 2026
>  Contact:	Changhuang Liang <changhuang.liang at starfivetech.com>
>  Description:	Selects the RX source of the UARTx device.
> @@ -7,37 +7,41 @@ Description:	Selects the RX source of th
>  		selected option marked by brackets "[]". The list of available options
>  		depends on the selected file.
> 
> -		e.g.
> -		cat
> /sys/bus/platform/drivers/starfive-uart-routing/\*.uart-routing/uart1
> -		io0 [io1] io2 io3 io4 io5 io6 io7 io8 io9 io10 io11 io12 io13 io14 uart0
> uart1
> -		uart2 uart3 uart4 uart5 uart6 uart7 uart8 uart9 uart10 uart11
> uart12 uart13 uart14
> +		E.g.::
> +
> +		  cat
> /sys/bus/platform/drivers/starfive-uart-routing/*.uart-routing/uart1
> +		  io0 [io1] io2 io3 io4 io5 io6 io7 io8 io9 io10 io11 io12 io13 io14
> uart0 uart1
> +		  uart2 uart3 uart4 uart5 uart6 uart7 uart8 uart9 uart10 uart11
> +uart12 uart13 uart14
> 
>  		In this case, UART1 gets its input from IO1 (physical serial port 1).
> 
> -		To switch the RX source of UART1 to UART2, write the desired
> source to the file:
> -		echo uart2 >
> /sys/bus/platform/drivers/starfive-uart-routing/*.uart-routing/uart1
> +		To switch the RX source of UART1 to UART2, write the desired
> source to the file::
> +
> +		  echo uart2 >
> +/sys/bus/platform/drivers/starfive-uart-routing/*.uart-routing/uart1
> 
>  		This indicates that UART1 now receives its input from UART2.
> 
>  Users:		OpenBMC.  Proposed changes should be mailed to
>  		openbmc at lists.ozlabs.org
> 
> -What:		/sys/bus/platform/drivers/starfive-uart-routing/\*/io\*
> +What:		/sys/bus/platform/drivers/starfive-uart-routing/*/io*
>  Date:		August 2026
>  Contact:	Changhuang Liang <changhuang.liang at starfivetech.com>
>  Description:	Selects the RX source of IOx serial port. The current selection
>  		will be marked by brackets "[]". The list of available options
>  		depends on the selected file.
> 
> -		e.g.
> -		cat
> /sys/bus/platform/drivers/starfive-uart-routing/\*.uart-routing/io9
> -		uart0 uart1 uart2 uart3 uart4 uart5 uart6 uart7 uart8 [uart9] uart10
> uart11 uart12
> -		uart13 uart14 io0 io1 io2 io3 io4 io5 io6 io7 io8 io9 io10 io11 io12
> io13 io14
> +		E.g.::
> +
> +		  cat
> /sys/bus/platform/drivers/starfive-uart-routing/*.uart-routing/io9
> +		  uart0 uart1 uart2 uart3 uart4 uart5 uart6 uart7 uart8 [uart9]
> uart10 uart11 uart12
> +		  uart13 uart14 io0 io1 io2 io3 io4 io5 io6 io7 io8 io9 io10 io11
> +io12 io13 io14
> 
>  		In this case, IO9 (physical serial port 9) gets its input from UART9.
> 
> -		To switch the RX source of IO9 to UART10, write the desired source
> to the file:
> -		echo uart10 >
> /sys/bus/platform/drivers/starfive-uart-routing/*.uart-routing/io9
> +		To switch the RX source of IO9 to UART10, write the desired source
> to the file::
> +
> +		  echo uart10 >
> +/sys/bus/platform/drivers/starfive-uart-routing/*.uart-routing/io9
> 
>  		This indicates that IO9 now receives its input from UART10.
> 

Thank you for pointing out the issues and providing the revision plan.

Best Regards,
Changhuang


More information about the linux-arm-kernel mailing list