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

Randy Dunlap rdunlap at infradead.org
Sat Sep 5 22:12:43 PDT 2026


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-uart-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.
 


-- 
~Randy




More information about the linux-arm-kernel mailing list