Commit a6052609 authored by Christophe Leroy's avatar Christophe Leroy Committed by Greg Kroah-Hartman
Browse files

tty: serial: cpm_uart: Add udbg support for enabling xmon



In order to use xmon with powerpc 8xx, the serial driver
must provide udbg_putc() and udpb_getc().

Provide them via cpm_put_poll_char() and cpm_get_poll_char().

This requires CONFIG_CONSOLE_POLL.

Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/e4471bf81089252470efb3eed735d71a5b32adbd.1608716197.git.christophe.leroy@csgroup.eu


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 345523fa
Loading
Loading
Loading
Loading
+39 −1
Original line number Diff line number Diff line
@@ -1107,6 +1107,32 @@ static void cpm_put_poll_char(struct uart_port *port,
	ch[0] = (char)c;
	cpm_uart_early_write(pinfo, ch, 1, false);
}

static struct uart_port *udbg_port;

static void udbg_cpm_putc(char c)
{
	if (c == '\n')
		cpm_put_poll_char(udbg_port, '\r');
	cpm_put_poll_char(udbg_port, c);
}

static int udbg_cpm_getc_poll(void)
{
	int c = cpm_get_poll_char(udbg_port);

	return c == NO_POLL_CHAR ? -1 : c;
}

static int udbg_cpm_getc(void)
{
	int c;

	while ((c = udbg_cpm_getc_poll()) == -1)
		cpu_relax();
	return c;
}

#endif /* CONFIG_CONSOLE_POLL */

static const struct uart_ops cpm_uart_pops = {
@@ -1237,6 +1263,9 @@ static int cpm_uart_init_port(struct device_node *np,
	}

#ifdef CONFIG_PPC_EARLY_DEBUG_CPM
#ifdef CONFIG_CONSOLE_POLL
	if (!udbg_port)
#endif
		udbg_putc = NULL;
#endif

@@ -1358,6 +1387,15 @@ static int __init cpm_uart_console_setup(struct console *co, char *options)
	uart_set_options(port, co, baud, parity, bits, flow);
	cpm_line_cr_cmd(pinfo, CPM_CR_RESTART_TX);

#ifdef CONFIG_CONSOLE_POLL
	if (!udbg_port) {
		udbg_port = &pinfo->port;
		udbg_putc = udbg_cpm_putc;
		udbg_getc = udbg_cpm_getc;
		udbg_getc_poll = udbg_cpm_getc_poll;
	}
#endif

	return 0;
}