[PATCH 00/13] Add DMA support for LINFlexD UART driver

Larisa Grigore posted 13 patches 1 month, 2 weeks ago
.../bindings/serial/fsl,s32-linflexuart.yaml  |  31 +
drivers/tty/serial/fsl_linflexuart.c          | 972 +++++++++++++++---
2 files changed, 846 insertions(+), 157 deletions(-)
[PATCH 00/13] Add DMA support for LINFlexD UART driver
Posted by Larisa Grigore 1 month, 2 weeks ago
This patchset enhances the LINFlexD UART driver and its device tree bindings to
support DMA transfers, configurable clock inputs, dynamic baudrate changes, and
termios features. It also includes a series of fixes and improvements to ensure
reliable operation across various modes and configurations.

The changes added can be summarized as follows:
1. Fixes with respect to FIFO handling, locking, interrupt related registers and
INITM mode transition.
2. Removal of the earlycon workaround, as proper FIFO handling and INITM
transitions now ensure stable behavior.
3. Support for configurable stop bits and dynamic baudrate changes based on
clock inputs and termios settings.
4. Optional DMA support for RX and TX paths, preventing character loss during
high-throughput operations like copy-paste. Cyclic DMA is used for RX to avoid
gaps between transactions.

Larisa Grigore (8):
  serial: linflexuart: Clean SLEEP bit in LINCR1 after suspend
  serial: linflexuart: Check FIFO full before writing
  serial: linflexuart: Correctly clear UARTSR in buffer mode
  serial: linflexuart: Update RXEN/TXEN outside INITM mode
  serial: linflexuart: Ensure FIFO is empty when entering INITM
  serial: linflexuart: Revert earlycon workaround
  serial: linflexuart: Add support for configurable stop bits
  serial: linflexuart: Add DMA support

Radu Pirea (5):
  serial: linflexuart: Fix locking in set_termios
  dt-bindings: serial: fsl-linflexuart: add clock input properties
  dt-bindings: serial: fsl-linflexuart: add dma properties
  serial: linflexuart: Add support for changing baudrate
  serial: linflexuart: Avoid stopping DMA during receive operations

 .../bindings/serial/fsl,s32-linflexuart.yaml  |  31 +
 drivers/tty/serial/fsl_linflexuart.c          | 972 +++++++++++++++---
 2 files changed, 846 insertions(+), 157 deletions(-)

-- 
2.47.0
Re: [PATCH 00/13] Add DMA support for LINFlexD UART driver
Posted by Jared Kangas 1 month ago
Hi Larisa,

On Mon, Feb 16, 2026 at 04:01:52PM +0100, Larisa Grigore wrote:
> This patchset enhances the LINFlexD UART driver and its device tree bindings to
> support DMA transfers, configurable clock inputs, dynamic baudrate changes, and
> termios features. It also includes a series of fixes and improvements to ensure
> reliable operation across various modes and configurations.
> 
> The changes added can be summarized as follows:
> 1. Fixes with respect to FIFO handling, locking, interrupt related registers and
> INITM mode transition.

Tested this series with the default devicetree configuration by booting
the board to a login prompt about 200 times. Without the series applied,
I was seeing a bug roughly every 30-50 boots where the kernel would
would hang in linflex_console_putchar() waiting for DTFTFF. In my tests
with the series applied, I didn't see any regressions and the bug no
longer appeared. Thanks for the fix!

Tested-by: Jared Kangas <jkangas@redhat.com> # S32G3, interrupt-driven

> 2. Removal of the earlycon workaround, as proper FIFO handling and INITM
> transitions now ensure stable behavior.
> 3. Support for configurable stop bits and dynamic baudrate changes based on
> clock inputs and termios settings.
> 4. Optional DMA support for RX and TX paths, preventing character loss during
> high-throughput operations like copy-paste. Cyclic DMA is used for RX to avoid
> gaps between transactions.
> 
> Larisa Grigore (8):
>   serial: linflexuart: Clean SLEEP bit in LINCR1 after suspend
>   serial: linflexuart: Check FIFO full before writing
>   serial: linflexuart: Correctly clear UARTSR in buffer mode
>   serial: linflexuart: Update RXEN/TXEN outside INITM mode
>   serial: linflexuart: Ensure FIFO is empty when entering INITM
>   serial: linflexuart: Revert earlycon workaround
>   serial: linflexuart: Add support for configurable stop bits
>   serial: linflexuart: Add DMA support
> 
> Radu Pirea (5):
>   serial: linflexuart: Fix locking in set_termios
>   dt-bindings: serial: fsl-linflexuart: add clock input properties
>   dt-bindings: serial: fsl-linflexuart: add dma properties
>   serial: linflexuart: Add support for changing baudrate
>   serial: linflexuart: Avoid stopping DMA during receive operations
> 
>  .../bindings/serial/fsl,s32-linflexuart.yaml  |  31 +
>  drivers/tty/serial/fsl_linflexuart.c          | 972 +++++++++++++++---
>  2 files changed, 846 insertions(+), 157 deletions(-)
> 
> -- 
> 2.47.0
>