On Mon, Nov 21, 2022 at 11:16:14AM +0100, Geert Uytterhoeven wrote: > Hi Gabriel, > > On Fri, Nov 18, 2022 at 3:57 PM Gabriel Somlo <gsomlo@xxxxxxxxx> wrote: > > Convert the rx loop into its own dedicated function, and (for now) > > call it from the poll timer. This is in preparation for adding irq > > support to the receive path. > > > > Signed-off-by: Gabriel Somlo <gsomlo@xxxxxxxxx> > > Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> > > Thanks for your patch! > > Reviewed-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> > > > --- a/drivers/tty/serial/liteuart.c > > +++ b/drivers/tty/serial/liteuart.c > > @@ -68,10 +68,8 @@ static struct uart_driver liteuart_driver = { > > #endif > > }; > > > > -static void liteuart_timer(struct timer_list *t) > > +static void liteuart_rx_chars(struct uart_port *port) > > So first you spin this off into a separate function, so it can be > called from both the interrupt and polling paths. > Later, in "[PATCH v5 12/14] serial: liteuart: add IRQ support for the > RX path", you remove the call from the polling path... That's right -- the polling path now calls the IRQ handler, which, in turn, calls `liteuart_rx_chars()` (and later `*_tx_chars()` as well). The polling timer becomes just an alternative way to invoke the irq handler, giving it a chance to take care of any pending transfers in either/both directions. Thanks, --Gabriel > > { > > - struct liteuart_port *uart = from_timer(uart, t, timer); > > - struct uart_port *port = &uart->port; > > unsigned char __iomem *membase = port->membase; > > unsigned int status, ch; > > > > @@ -88,6 +86,14 @@ static void liteuart_timer(struct timer_list *t) > > } > > > > tty_flip_buffer_push(&port->state->port); > > +} > > + > > +static void liteuart_timer(struct timer_list *t) > > +{ > > + struct liteuart_port *uart = from_timer(uart, t, timer); > > + struct uart_port *port = &uart->port; > > + > > + liteuart_rx_chars(port); > > > > mod_timer(&uart->timer, jiffies + uart_poll_timeout(port)); > > } > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds