Re: [PATCH 5/6] tty: serial: fsl_lpuart: set RTS watermark for lpuart

From: Alexander Stein
Date: Thu Feb 02 2023 - 02:14:19 EST


Am Montag, 30. Januar 2023, 07:44:48 CET schrieb Sherry Sun:
> Add RTS watermark support for LPUART. The RX RTS_B output negates when
> the number of empty words in the receive FIFO is greater or equal to
> RTSWATER. Here set the RTSWATER to half of the rxfifo_size.
>
> Signed-off-by: Sherry Sun <sherry.sun@xxxxxxx>
> ---
> drivers/tty/serial/fsl_lpuart.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/tty/serial/fsl_lpuart.c
> b/drivers/tty/serial/fsl_lpuart.c index 2789749d3d0d..c35e49a09bcc 100644
> --- a/drivers/tty/serial/fsl_lpuart.c
> +++ b/drivers/tty/serial/fsl_lpuart.c
> @@ -201,6 +201,7 @@
> #define UARTDATA_MASK 0x3ff
>
> #define UARTMODIR_IREN 0x00020000
> +#define UARTMODIR_RTSWATER GENMASK(10, 8)
> #define UARTMODIR_TXCTSSRC 0x00000020
> #define UARTMODIR_TXCTSC 0x00000010
> #define UARTMODIR_RXRTSE 0x00000008
> @@ -1573,6 +1574,13 @@ static void lpuart32_setup_watermark(struct
> lpuart_port *sport) (0x0 << UARTWATER_TXWATER_OFF);
> lpuart32_write(&sport->port, val, UARTWATER);
>
> + /* set RTS watermark */
> + if (!uart_console(&sport->port)) {
> + val = lpuart32_read(&sport->port, UARTMODIR);
> + val |= FIELD_PREP(UARTMODIR_RTSWATER, sport->rxfifo_size
>> 1);
> + lpuart32_write(&sport->port, val, UARTMODIR);

On LS1021A these bits are reserved (please refer to QorIQ LS1021A Reference
manual Rev 3.1 02/2020 section 27.3.6). Is it okay to write to them?

Best regards
Alexander

> + }
> +
> /* Restore cr2 */
> lpuart32_write(&sport->port, ctrl_saved, UARTCTRL);
> }