3.5.3.4. PRU-ICSS Serial UARTΒΆ
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 kenrel driver is at drivers/tty/serial/8250/8250_pruss.c.
Support Devices
AM335x devices
Supported Driver Features
Baud rates up to 12Mbps
Hardware flow control
Unsupported Driver Features
DMA support
Kernel Config
The PRUSS UART Linux kernel driver depends on the PRU-ICSS kernel drivers. So the following kernel Kconfig options should be enabled to use the PRUSS UART module.
Device Drivers --->
SOC (System On Chip) specific Drivers --->
[*] TI SOC drivers support --->
<M> TI PRU-ICSS Subsystem Platform drivers
Device Drivers --->
IRQ chip support --->
<M> TI PRU-ICSS Interrupt Controller
Device Drivers --->
Character devices --->
Serial drivers --->
<M> TI PRU-ICSS UART support
Example DT configuration
From am335x-evmsk.dts
&pruss_uart {
prus = <&pru0>;
ti,pru-interrupt-map = <0 6 2 2>;
pinctrl-names = "default";
pinctrl-0 = <&prussuart_pins>;
status = "okay";
};
Driver Usage
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 kenrel uart driver usage.
Note
The index in ttyS1 could vary depending on the serial alias configuration in the device tree.