mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-19 01:26:42 +07:00
tty: vt8500_serial: add polled console functions
This adds simple polling functions for single-character transmit and receive, as used by kgdb. Signed-off-by: Alexey Charkov <alchark@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8c986d3e20
commit
1db894ecfa
@ -558,6 +558,33 @@ static struct console vt8500_console = {
|
||||
#define VT8500_CONSOLE NULL
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CONSOLE_POLL
|
||||
static int vt8500_get_poll_char(struct uart_port *port)
|
||||
{
|
||||
unsigned int status = vt8500_read(port, VT8500_URFIDX);
|
||||
|
||||
if (!(status & 0x1f00))
|
||||
return NO_POLL_CHAR;
|
||||
|
||||
return vt8500_read(port, VT8500_RXFIFO) & 0xff;
|
||||
}
|
||||
|
||||
static void vt8500_put_poll_char(struct uart_port *port, unsigned char c)
|
||||
{
|
||||
unsigned int status, tmout = 10000;
|
||||
|
||||
do {
|
||||
status = vt8500_read(port, VT8500_URFIDX);
|
||||
|
||||
if (--tmout == 0)
|
||||
break;
|
||||
udelay(1);
|
||||
} while (status & 0x10);
|
||||
|
||||
vt8500_write(port, c, VT8500_TXFIFO);
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct uart_ops vt8500_uart_pops = {
|
||||
.tx_empty = vt8500_tx_empty,
|
||||
.set_mctrl = vt8500_set_mctrl,
|
||||
@ -575,6 +602,10 @@ static struct uart_ops vt8500_uart_pops = {
|
||||
.request_port = vt8500_request_port,
|
||||
.config_port = vt8500_config_port,
|
||||
.verify_port = vt8500_verify_port,
|
||||
#ifdef CONFIG_CONSOLE_POLL
|
||||
.poll_get_char = vt8500_get_poll_char,
|
||||
.poll_put_char = vt8500_put_poll_char,
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct uart_driver vt8500_uart_driver = {
|
||||
|
Loading…
Reference in New Issue
Block a user