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.
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
2025.1
Summary:
Use port lock wrappers
Do not complain when DMA is absent
Convert to platform remove callback returning void
convert not to use dma_request_slave_channel()
Fix DMA support
fix whitespace formatting
replace TIOCMBIT macros by static functions
avoid quoted string split across lines
fix formatting of conditions
fix miscellaneous checkpatch warnings
unindent pl011_console_get_options function body
factor QDF2400 SoC erratum 44 out of probe
Fix DMA transmission in RS485 mode
Use uart_prepare_sysrq_char()
switch from circ_buf to kfifo
get rid of useless wrapper pl011_get_rs485_mode()
move variable into CONFIG_DMA_ENGINE conditional
Introduce wrapper to set @uart_port->cons
Commits:
68ca3e7 - serial: amba-pl011: Use port lock wrappers
6905ab8 - serial: amba-pl011: Do not complain when DMA is absent
788f501 - serial: amba-pl011: Convert to platform remove callback returning void
e6cc394 - serial: amba-pl011: convert not to use dma_request_slave_channel()
58ac1b3 - ARM: PL011: Fix DMA support
d93ebe0 - tty: serial: amba-pl011: fix whitespace formatting
dc00f0c - tty: serial: amba-pl011: replace TIOCMBIT macros by static functions
fd64ff0 - tty: serial: amba-pl011: avoid quoted string split across lines
28a7ec8 - tty: serial: amba-pl011: fix formatting of conditions
826bd77 - tty: serial: amba-pl011: fix miscellaneous checkpatch warnings
8ff8740 - tty: serial: amba-pl011: unindent pl011_console_get_options function body
a49a8b9 - tty: serial: amba-pl011: factor QDF2400 SoC erratum 44 out of probe
3b69e32 - serial: amba-pl011: Fix DMA transmission in RS485 mode
2432f71 - serial: amba-pl011: Use uart_prepare_sysrq_char()
1788cf6 - tty: serial: switch from circ_buf to kfifo
838022d - serial: amba-pl011: get rid of useless wrapper pl011_get_rs485_mode()
255abd4 - serial: amba-pl011: move variable into CONFIG_DMA_ENGINE conditional
eabd460 - serial: core: Introduce wrapper to set @uart_port->cons
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