From 2be58f667ab7b247aca8d7066dbae84f733dd456 Mon Sep 17 00:00:00 2001 From: Judith Mendez Date: Thu, 14 May 2026 13:46:44 -0500 Subject: [PATCH 1/2] fix(linux): Remove PRU SW UART from TOC PRU SW UART is currently not supported, remove from TOC and remove rst file since it is no longer used. Signed-off-by: Judith Mendez --- configs/AM335X/AM335X_linux_toc.txt | 1 - configs/AM437X/AM437X_linux_toc.txt | 1 - configs/AM57X/AM57X_linux_toc.txt | 1 - .../PRU-ICSS/Linux_Drivers/pru-sw-uart.rst | 79 ------------------- 4 files changed, 82 deletions(-) delete mode 100644 source/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pru-sw-uart.rst diff --git a/configs/AM335X/AM335X_linux_toc.txt b/configs/AM335X/AM335X_linux_toc.txt index 6430117de..4591f48f0 100644 --- a/configs/AM335X/AM335X_linux_toc.txt +++ b/configs/AM335X/AM335X_linux_toc.txt @@ -88,7 +88,6 @@ linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RemoteProc linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RPMsg linux/Foundational_Components/PRU-ICSS/RPMsg_Quick_Start_Guide linux/Foundational_Components/PRU-ICSS/Linux_Drivers/PRU-ICSS_Ethernet -linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pru-sw-uart linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pruss-uart linux/Foundational_Components/PRU-ICSS-Hardware linux/Foundational_Components/PRU-ICSS/PRU-EVMs diff --git a/configs/AM437X/AM437X_linux_toc.txt b/configs/AM437X/AM437X_linux_toc.txt index 61d83d590..35dc5cba5 100644 --- a/configs/AM437X/AM437X_linux_toc.txt +++ b/configs/AM437X/AM437X_linux_toc.txt @@ -89,7 +89,6 @@ linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RemoteProc linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RPMsg linux/Foundational_Components/PRU-ICSS/RPMsg_Quick_Start_Guide linux/Foundational_Components/PRU-ICSS/Linux_Drivers/PRU-ICSS_Ethernet -linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pru-sw-uart linux/Foundational_Components/PRU-ICSS-Hardware linux/Foundational_Components/PRU-ICSS/PRU-EVMs linux/Foundational_Components/PRU-ICSS-Training diff --git a/configs/AM57X/AM57X_linux_toc.txt b/configs/AM57X/AM57X_linux_toc.txt index f4518f8b5..abb6775b8 100644 --- a/configs/AM57X/AM57X_linux_toc.txt +++ b/configs/AM57X/AM57X_linux_toc.txt @@ -94,7 +94,6 @@ linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RemoteProc linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RPMsg linux/Foundational_Components/PRU-ICSS/RPMsg_Quick_Start_Guide linux/Foundational_Components/PRU-ICSS/Linux_Drivers/PRU-ICSS_Ethernet -linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pru-sw-uart linux/Foundational_Components/PRU-ICSS-Hardware linux/Foundational_Components/PRU-ICSS/PRU-EVMs linux/Foundational_Components/PRU-ICSS-Training diff --git a/source/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pru-sw-uart.rst b/source/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pru-sw-uart.rst deleted file mode 100644 index 6e8cf40fb..000000000 --- a/source/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pru-sw-uart.rst +++ /dev/null @@ -1,79 +0,0 @@ -PRU-ICSS Soft UART ------------------- - -.. rubric:: Introduction - -As of Processor SDK Linux v6.1, AM335x supports up to 6 additional UARTs -through PRU-ICSS GPIO pins. The UART function is implemented in PRU firmware. -The firmware is self-contained in the same PRU, which means the firmware does -not use shared resources within an ICSS including IEP timer and Scratchpad. - - -.. rubric:: PRU Soft UART Features - -Up to 3 independent UARTs are supported per PRU with the following features: - - - Common baud rates up to 115200 Mbps - - 5, 6, 7, or 8-bit characters per transfer - - 1, 1.5, or 2 stop bit generation - - Even, odd, or none parity bit generation and detection - - Auto-RTS/CTS based harware flow control - - Full-duplex communication - - -.. rubric:: PRU Soft UART Unsupported Features - -The following features are not supported in PRU Soft UART: - - - Full modem control - - Software flow control - - -.. rubric:: PRU Soft UART Pin Configuration - -The PRU GPIO pins are assigned for the functional pins of each UART port. The -PRU GPIO pin assignment is specified in the "ti,pru-suart-pins" properties in -the device tree bindings. - -The device tree "ti,pru-suart-pins" property contains 2 or 4 byte values. The -first two values are for TXD and TXD pins, and next two values are optional -which are for CTS and RTX pins. The value is the index of the PRU GPIOs defined -in PRU R30 and R31. - -For details please refer to the kernel device tree binding doc: - -.. code-block:: text - - Documentation/devicetree/bindings/serial/pru-suart.txt - -The Processor SDK Linux kernel also provides an device tree example for -Beaglebone Black: - -.. code-block:: text - - arch/arm/boot/dts/am335x-boneblack-prusuart.dts - -This example defines the 3 UARTs on PRU0 without hardware flow control and 3 -UARTs on PRU1 with hardware flow control. All the UART pins are available on -the Beaglebone Black expansion headers. - - -.. rubric:: PRU Soft UART driver Kernel Config - -The PRU Soft UART Linux kernel driver depends on the PRU-ICSS kernel driver. So -the following kernel Kconfig options should be enabled to use the PRU Soft UART -module. - -.. code-block:: menuconfig - - Device Drivers ---> - SOC (System On Chip) specific Drivers ---> - [*] TI SOC drivers support ---> - TI PRU-ICSS Subsystem Platform drivers - - Device Drivers ---> - Character devices ---> - Serial drivers ---> - TI PRU Software UART suppor - - From c232eab24d84fd1dee79c7ba69f8580965c7d274 Mon Sep 17 00:00:00 2001 From: Judith Mendez Date: Thu, 14 May 2026 14:14:53 -0500 Subject: [PATCH 2/2] fix(linux): Enable PRU HW UART doc for am62x and am64x PRU HW UART support exists for AM62x and AM64x SK board, enable documentation for these platforms and update rst to accommodate the new platforms. Fix a few other misc issues while we are here, including whitespace, mispelling, and missing inline role issues. Signed-off-by: Judith Mendez --- configs/AM62X/AM62X_linux_toc.txt | 1 + configs/AM64X/AM64X_linux_toc.txt | 1 + .../PRU-ICSS/Linux_Drivers/pruss-uart.rst | 35 ++++++++++--------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/configs/AM62X/AM62X_linux_toc.txt b/configs/AM62X/AM62X_linux_toc.txt index 50723fd66..d36930e78 100644 --- a/configs/AM62X/AM62X_linux_toc.txt +++ b/configs/AM62X/AM62X_linux_toc.txt @@ -108,6 +108,7 @@ linux/Foundational_Components_PRU_Subsystem linux/Foundational_Components/PRU-ICSS-Linux-Drivers linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RemoteProc linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RPMsg +linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pruss-uart linux/Foundational_Components/PRU-ICSS/RPMsg_Quick_Start_Guide linux/Foundational_Components/PRU-ICSS-Hardware linux/Foundational_Components/PRU-ICSS/PRU-EVMs diff --git a/configs/AM64X/AM64X_linux_toc.txt b/configs/AM64X/AM64X_linux_toc.txt index 4b2bf9519..150173b86 100644 --- a/configs/AM64X/AM64X_linux_toc.txt +++ b/configs/AM64X/AM64X_linux_toc.txt @@ -112,6 +112,7 @@ linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RemoteProc linux/Foundational_Components/PRU-ICSS/Linux_Drivers/PRU_ICSSG_Ethernet linux/Foundational_Components/PRU-ICSS/Linux_Drivers/PRU_ICSSG_Ethernet_Switch linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RPMsg +linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pruss-uart linux/Foundational_Components/PRU-ICSS/Linux_Drivers/PRU_ICSSG_XDP linux/Foundational_Components/PRU-ICSS/RPMsg_Quick_Start_Guide linux/Foundational_Components/PRU-ICSS-Hardware diff --git a/source/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pruss-uart.rst b/source/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pruss-uart.rst index 5b850fbc2..4dfa85ea7 100644 --- a/source/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pruss-uart.rst +++ b/source/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/pruss-uart.rst @@ -3,27 +3,34 @@ PRU-ICSS Serial UART .. rubric:: Introduction -As of Processor SDK v7.1, Linux supports the PRU UART peripheral within the -PRU-ICSS, which is based on the industry standard TL16C550. -The kernel driver is at drivers/tty/serial/8250/8250_pruss.c. +.. ifconfig:: CONFIG_part_variant in ('AM62X') + Linux supports the PRU HW UART peripheral within the Programmable Real-Time Unit Subsystem + (PRUSS), which is based on the industry standard TL16C550. -.. rubric:: Support Devices +.. ifconfig:: CONFIG_part_variant in ('AM64X') -- |__PART_FAMILY_DEVICE_NAMES__| + Linux supports the PRU HW UART peripheral within the Programmable Real-Time Unit (PRU) and + Industrial Communication Subsystem - Gigabit (ICSSG) or PRU-ICSSG, which is based on the + industry standard TL16C550. +.. ifconfig:: CONFIG_part_variant in ('AM335X', 'AM437X', 'AM57XX') + + Linux supports the PRU HW UART peripheral within the Programmable Real-Time Unit Subsystem + and Industrial Communication Subsystem (PRU-ICSS), which is based on the industry standard + TL16C550. + +The kernel driver is at :file:`drivers/tty/serial/8250/8250_pruss.c`. .. rubric:: Supported Driver Features - Baud rates up to 12Mbps - Hardware flow control - .. rubric:: Unsupported Driver Features - DMA support - .. rubric:: Kernel Config The PRUSS UART Linux kernel driver depends on the PRU-ICSS kernel drivers. So @@ -46,7 +53,6 @@ module. Serial drivers ---> TI PRU-ICSS UART support - .. rubric:: Example DT configuration From am335x-evmsk.dts @@ -61,7 +67,6 @@ From am335x-evmsk.dts status = "okay"; }; - .. rubric:: Driver Usage Once the driver is probed, kernel log shows the following message. @@ -70,13 +75,11 @@ Once the driver is probed, kernel log shows the following message. [ 28.617700] 4a328000.serial: ttyS1 at MMIO 0x4a328000 (irq = 77, base_baud = 12000000) is a 16550A -Therefore the device node /dev/ttyS1 is associated to the PRUSS UART, user -space application can read/write this serial port. For detalls please refer -to :ref:`kernel uart driver usage `. +Therefore the device node /dev/ttyS1 is associated with PRUSS UART and +user-space applications can read/write to this serial port. For details, +please refer to :ref:`kernel uart driver usage `. .. note:: - The index in ttyS1 could vary depending on the serial alias configuration - in the device tree. - - + The index in ttyS1 could vary depending on the serial alias configuration + in the device tree.