On Tue, 20 Sep 2022, Jiri Slaby wrote: > The condition in lqasc_tx_chars()'s loop is barely readable. Extract it > to a separate function. This will make the cleanup in the next patches > easier too. > > (Put it before lqasc_start_tx(), so that we can use it there later.) > > Signed-off-by: Jiri Slaby <jslaby@xxxxxxx> > --- > > Notes: > [v4] this is new in v4 -- extracted as a separate change > > drivers/tty/serial/lantiq.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/serial/lantiq.c b/drivers/tty/serial/lantiq.c > index 6637b3caa6b7..6da1b7496c6c 100644 > --- a/drivers/tty/serial/lantiq.c > +++ b/drivers/tty/serial/lantiq.c > @@ -139,6 +139,13 @@ lqasc_stop_tx(struct uart_port *port) > return; > } > > +static bool lqasc_tx_ready(struct uart_port *port) > +{ > + u32 fstat = __raw_readl(port->membase + LTQ_ASC_FSTAT); > + > + return (fstat & ASCFSTAT_TXFREEMASK) >> ASCFSTAT_TXFREEOFF; FIELD_GET(ASCFSTAT_TXFREEMASK, fstat) > +} > + > static void > lqasc_start_tx(struct uart_port *port) > { > @@ -228,8 +235,7 @@ lqasc_tx_chars(struct uart_port *port) > return; > } > > - while (((__raw_readl(port->membase + LTQ_ASC_FSTAT) & > - ASCFSTAT_TXFREEMASK) >> ASCFSTAT_TXFREEOFF) != 0) { > + while (lqasc_tx_ready(port)) { > if (port->x_char) { > writeb(port->x_char, port->membase + LTQ_ASC_TBUF); > port->icount.tx++; There's similar construct in lqasc_console_putchar() that could take advantage of the same helper. With FIELD_GET + the other place using the new helper, ASCFSTAT_TXFREEOFF can be dropped as well. -- i.