Versal SBSA UART driver
Introduction
The UART controller is a full-duplex asynchronous receiver and transmitter that supports a wide range of programmable baud rates. The server-based system applications (SBSA) functionality is defined by the Arm® architecture.
HW IP Features
32 deep ×8-bit wide transmit FIFO • 32 deep ×12-bit wide receive FIFO
Standard asynchronous communication bits (start, stop and parity)
Independent interrupt masking:
○ Transmit and receive FIFOs
○ Receive timeout, modem status, and error condition
False start bit detection •
Line break generation and detection
Modem control functions CTS, DCD, DSR, RTS, DTR, and RI
Features supported in driver
Uart send recieve
Standard asynchronous communication bits (start, stop and parity)
Line break generation and detection
Modem control functions CTS, DCD, DSR, RTS, DTR, and RI
Missing Features, Known Issues and Limitations
None
Kernel Configuration
To enable the uartlite driver in the linux kernel you either have to integrate it or build it as kernel module (.ko). You can enable it with:
make menuconfig
---> Device Drivers ---> Character devices ---> Serial drivers ---> ARM AMBA PL010 serial port support |
Or you can do this in the .config file with either of the following lines:
# integrate into the kernel
SERIAL_AMBA_PL010=y
# build as loadable module
SERIAL_AMBA_PL010=m |
Devicetree
Here's how the devicetree entry could look like.
https://www.kernel.org/doc/Documentation/devicetree/bindings/serial/pl011.yaml
serial@80120000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x80120000 0x1000>;
interrupts = <0 11 4>;
dmas = <&dma 13 0 0x2>, <&dma 13 0 0x0>;
dma-names = "rx", "tx";
clocks = <&foo_clk>, <&bar_clk>;
clock-names = "uartclk", "apb_pclk";
}; |
Mainline Status
This driver is currently in sync with mainline kernel driver.
Change Log
2024.2
None.
2024.1
Summary:
Use uart_xmit_advance()
avoid SBSA UART accessing DMACR register
Do not clear RX FIFO & RX interrupt in unthrottle.
fix high priority character transmission in rs486
set UART011_CR_RXE in pl011_set_termios after port
switch ch and flag to u8
Explicitly include correct DT includes
Commits:
71a6757 - serial: pl011: Use uart_xmit_advance()
94cdb9f - serial: amba-pl011: avoid SBSA UART accessing DMACR register
032d5a7 - serial: pl011: Do not clear RX FIFO & RX interrupt in unthrottle.
4f39aca - serial: amba-pl011: fix high priority character transmission in rs486
6d8c1fc - serial: pl011: set UART011_CR_RXE in pl011_set_termios after port
fd2b55f - serial: drivers: switch ch and flag to u8
29e5c44 - tty: Explicitly include correct DT includes
2023.2
None
2023.1
Summary:
Move header content to .c
Fill in rs485_supported
Remove serial_rs485 sanitization
Take termios_rwsem for ->rs485_config() & pass termios as param
UPSTAT_AUTORTS requires .throttle/unthrottle
Embed rs485_supported to uart_port
Add reg-io-width parameters
Make ->set_termios() old ktermios const
Commits:
9bb13b2 - serial: amba-pl011: move header content to .c
ebe2cf7 - serial: pl011: Fill in rs485_supported
b9759cb - serial: pl011: Remove serial_rs485 sanitization
ae50bb2 - serial: take termios_rwsem for ->rs485_config() & pass termios as param
211565b - serial: pl011: UPSTAT_AUTORTS requires .throttle/unthrottle
0139da5 - serial: Embed rs485_supported to uart_port
400282e - serial: pl011: Add reg-io-width parameters
bec5b81 - serial: Make ->set_termios() old ktermios const
2022.2
None
2022.1
Summary:
Add RS485 support
Commits:
8d47923 - serial: amba-pl011: add RS485 support
2021.2
None
2021.1
None
2020.2
None
Related Links
© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy