[PATCH] serial: mxc: Wait until TX FIFO is not full

Michael Nazzareno Trimarchi michael at amarulasolutions.com
Wed Oct 26 19:08:17 CEST 2022


Hi

On Tue, Oct 25, 2022 at 11:32 PM Fabio Estevam <festevam at gmail.com> wrote:
>
> From: Fabio Estevam <festevam at denx.de>
>
> Tim Harvey reported the console garbage on imx6 since
> commit c7878a0483c5 ("serial: mxc: have putc use the TXFIFO").
>
> Do as suggested by Pali Rohár where the the driver should
> not return -EAGAIN when the TX FIFO  is full.
>
> It should keep waiting until the TX FIFO is no longer full.
>
> This also aligns with the implementation of the imx serial driver
> in the kernel:
>
> static void imx_uart_console_putchar(struct uart_port *port, unsigned char ch)
> {
>     struct imx_port *sport = (struct imx_port *)port;
>
>     while (imx_uart_readl(sport, imx_uart_uts_reg(sport)) & UTS_TXFULL)
>         barrier();
>
>     imx_uart_writel(sport, ch, URTX0);
> }
>
> Fixes: c7878a0483c5 ("serial: mxc: have putc use the TXFIFO")
> Reported-by: Tim Harvey <tharvey at gateworks.com>
> Suggested-by: Pali Rohár <pali at kernel.org>
> Signed-off-by: Fabio Estevam <festevam at denx.de>
> ---
>  drivers/serial/serial_mxc.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/serial/serial_mxc.c b/drivers/serial/serial_mxc.c
> index 4cf79c1ca24f..332219fa87fc 100644
> --- a/drivers/serial/serial_mxc.c
> +++ b/drivers/serial/serial_mxc.c
> @@ -311,8 +311,8 @@ static int mxc_serial_putc(struct udevice *dev, const char ch)
>         struct mxc_serial_plat *plat = dev_get_plat(dev);
>         struct mxc_uart *const uart = plat->reg;
>
> -       if (readl(&uart->ts) & UTS_TXFULL)
> -               return -EAGAIN;
> +       while (readl(&uart->ts) & UTS_TXFULL)
> +               barrier();
>
>         writel(ch, &uart->txd);
>
_debug_uart_putc

Should not be patched in the same way?

Anyway, does the external loop do the same with -EAGAIN as was
discussed in another thread?

Michael


> --
> 2.25.1
>


-- 
Michael Nazzareno Trimarchi
Co-Founder & Chief Executive Officer
M. +39 347 913 2170
michael at amarulasolutions.com
__________________________________

Amarula Solutions BV
Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
T. +31 (0)85 111 9172
info at amarulasolutions.com
www.amarulasolutions.com


More information about the U-Boot mailing list