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