Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1db894ec authored by Alexey Charkov's avatar Alexey Charkov Committed by Greg Kroah-Hartman
Browse files

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: default avatarAlexey Charkov <alchark@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8c986d3e
Loading
Loading
Loading
Loading
+31 −0
Original line number Original line Diff line number Diff line
@@ -558,6 +558,33 @@ static struct console vt8500_console = {
#define VT8500_CONSOLE	NULL
#define VT8500_CONSOLE	NULL
#endif
#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 = {
static struct uart_ops vt8500_uart_pops = {
	.tx_empty	= vt8500_tx_empty,
	.tx_empty	= vt8500_tx_empty,
	.set_mctrl	= vt8500_set_mctrl,
	.set_mctrl	= vt8500_set_mctrl,
@@ -575,6 +602,10 @@ static struct uart_ops vt8500_uart_pops = {
	.request_port	= vt8500_request_port,
	.request_port	= vt8500_request_port,
	.config_port	= vt8500_config_port,
	.config_port	= vt8500_config_port,
	.verify_port	= vt8500_verify_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 = {
static struct uart_driver vt8500_uart_driver = {