Move definitions for liteuart_[stop|start]_tx(), liteuart_stop_rx(), and liteuart_putchar() to a more convenient location in preparation for adding IRQ support. This patch contains no functional changes. Signed-off-by: Gabriel Somlo <gsomlo@xxxxxxxxx> --- drivers/tty/serial/liteuart.c | 98 +++++++++++++++++------------------ 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/drivers/tty/serial/liteuart.c b/drivers/tty/serial/liteuart.c index 172ac190ba2f..cf1ce597b45e 100644 --- a/drivers/tty/serial/liteuart.c +++ b/drivers/tty/serial/liteuart.c @@ -67,36 +67,6 @@ static struct uart_driver liteuart_driver = { #endif }; -static void liteuart_rx_chars(struct uart_port *port) -{ - unsigned char __iomem *membase = port->membase; - unsigned int status, ch; - - while ((status = !litex_read8(membase + OFF_RXEMPTY)) == 1) { - ch = litex_read8(membase + OFF_RXTX); - port->icount.rx++; - - /* necessary for RXEMPTY to refresh its value */ - litex_write8(membase + OFF_EV_PENDING, EV_RX); - - /* no overflow bits in status */ - if (!(uart_handle_sysrq_char(port, ch))) - uart_insert_char(port, status, 0, ch, TTY_NORMAL); - } - - 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)); -} - static void liteuart_putchar(struct uart_port *port, unsigned char ch) { while (litex_read8(port->membase + OFF_TXFULL)) @@ -105,25 +75,6 @@ static void liteuart_putchar(struct uart_port *port, unsigned char ch) litex_write8(port->membase + OFF_RXTX, ch); } -static unsigned int liteuart_tx_empty(struct uart_port *port) -{ - /* not really tx empty, just checking if tx is not full */ - if (!litex_read8(port->membase + OFF_TXFULL)) - return TIOCSER_TEMT; - - return 0; -} - -static void liteuart_set_mctrl(struct uart_port *port, unsigned int mctrl) -{ - /* modem control register is not present in LiteUART */ -} - -static unsigned int liteuart_get_mctrl(struct uart_port *port) -{ - return TIOCM_CTS | TIOCM_DSR | TIOCM_CAR; -} - static void liteuart_stop_tx(struct uart_port *port) { /* not used in LiteUART, but called unconditionally from serial_core */ @@ -159,6 +110,55 @@ static void liteuart_stop_rx(struct uart_port *port) del_timer(&uart->timer); } +static void liteuart_rx_chars(struct uart_port *port) +{ + unsigned char __iomem *membase = port->membase; + unsigned int status, ch; + + while ((status = !litex_read8(membase + OFF_RXEMPTY)) == 1) { + ch = litex_read8(membase + OFF_RXTX); + port->icount.rx++; + + /* necessary for RXEMPTY to refresh its value */ + litex_write8(membase + OFF_EV_PENDING, EV_RX); + + /* no overflow bits in status */ + if (!(uart_handle_sysrq_char(port, ch))) + uart_insert_char(port, status, 0, ch, TTY_NORMAL); + } + + 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)); +} + +static unsigned int liteuart_tx_empty(struct uart_port *port) +{ + /* not really tx empty, just checking if tx is not full */ + if (!litex_read8(port->membase + OFF_TXFULL)) + return TIOCSER_TEMT; + + return 0; +} + +static void liteuart_set_mctrl(struct uart_port *port, unsigned int mctrl) +{ + /* modem control register is not present in LiteUART */ +} + +static unsigned int liteuart_get_mctrl(struct uart_port *port) +{ + return TIOCM_CTS | TIOCM_DSR | TIOCM_CAR; +} + static int liteuart_startup(struct uart_port *port) { struct liteuart_port *uart = to_liteuart_port(port); -- 2.37.3