Add CONSOLE_POLL support for future KGDB porting. Signed-off-by: Vincent Chen <vincent.chen@xxxxxxxxxx> --- drivers/tty/serial/sifive.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c index d5f81b98e4d7..acdbaca4de36 100644 --- a/drivers/tty/serial/sifive.c +++ b/drivers/tty/serial/sifive.c @@ -818,6 +818,29 @@ static int __init sifive_serial_console_setup(struct console *co, char *options) return uart_set_options(&ssp->port, co, baud, parity, bits, flow); } +#ifdef CONFIG_CONSOLE_POLL +static int sifive_serial_poll_get_char(struct uart_port *port) +{ + struct sifive_serial_port *ssp = port_to_sifive_serial_port(port); + char is_empty, ch; + + ch = __ssp_receive_char(ssp, &is_empty); + if (is_empty) + return NO_POLL_CHAR; + + return ch; +} + +static void sifive_serial_poll_put_char(struct uart_port *port, + unsigned char c) +{ + struct sifive_serial_port *ssp = port_to_sifive_serial_port(port); + + sifive_serial_console_putchar(port, c); + __ssp_wait_for_xmitr(ssp); +} +#endif /* CONFIG_CONSOLE_POLL */ + static struct uart_driver sifive_serial_uart_driver; static struct console sifive_serial_console = { @@ -877,6 +900,10 @@ static const struct uart_ops sifive_serial_uops = { .request_port = sifive_serial_request_port, .config_port = sifive_serial_config_port, .verify_port = sifive_serial_verify_port, +#ifdef CONFIG_CONSOLE_POLL + .poll_get_char = sifive_serial_poll_get_char, + .poll_put_char = sifive_serial_poll_put_char, +#endif }; static struct uart_driver sifive_serial_uart_driver = { -- 2.7.4