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

Commit 2561f068 authored by Ben Dooks's avatar Ben Dooks Committed by Greg Kroah-Hartman
Browse files

ARM: meson: serial: disable rx/tx irqs during console write



As an attempt to stop issues with bad console output, ensure that both the
rx and tx interrupts are disabled during the console write to avoid any
problems with console and non-console being called together.

This should help with the SMP case as it should stop other cores being
signalled during the console write.

Signed-off-by: default avatarBen Dooks <ben.dooks@codethink.co.uk>
Tested-by: default avatarCarlo Caione <carlo@endlessm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f1f5c140
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -472,7 +472,7 @@ static void meson_serial_console_write(struct console *co, const char *s,
	struct uart_port *port;
	unsigned long flags;
	int locked;
	u32 val;
	u32 val, tmp;

	port = meson_ports[co->index];
	if (!port)
@@ -489,9 +489,12 @@ static void meson_serial_console_write(struct console *co, const char *s,
	}

	val = readl(port->membase + AML_UART_CONTROL);
	writel(val | AML_UART_TX_EN, port->membase + AML_UART_CONTROL);
	val |= AML_UART_TX_EN;
	tmp = val & ~(AML_UART_TX_INT_EN | AML_UART_RX_INT_EN);
	writel(tmp, port->membase + AML_UART_CONTROL);

	uart_console_write(port, s, count, meson_console_putchar);
	writel(val, port->membase + AML_UART_CONTROL);

	if (locked)
		spin_unlock(&port->lock);