Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

versal uart Driver

...

Table of Contents
minLevel1
maxLevel6
outlinefalse
styledisc
typelist
printabletrue

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:

...

Code Block
# 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.

...

Code Block
  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

...

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 

...

bec5b81 - serial: Make ->set_termios() old ktermios const

2022.2

  • None

2022.1

 Summary:

  • Add RS485 support

...

8d47923 - serial: amba-pl011: add RS485 support

2021.2

  • None

2021.1

  • None

2020.2

  • None

Related Links