Re: [PATCH v2 4/4] uart-routing: Add UART Routing driver for StarFive JHB100 SoC
From: Randy Dunlap
Date: Sun Sep 06 2026 - 01:13:26 EST
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@xxxxxxxxxxxxxxxx>
> ---
> .../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@xxxxxxxxxxxxxxxx>
> +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@xxxxxxxxxxxxxxxx
> +
> +What: /sys/bus/platform/drivers/starfive-uart-routing/\*/io\*
> +Date: August 2026
> +Contact: Changhuang Liang <changhuang.liang@xxxxxxxxxxxxxxxx>
> +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@xxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxx>
---
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@xxxxxxxxxxxxxxxx>
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@xxxxxxxxxxxxxxxx
-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@xxxxxxxxxxxxxxxx>
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