tty: serial: bcm63xx: Enable DT earlycon support

This enables early console output if there is a chosen/stdout-path
property referencing a UART node with the "brcm,bcm6345-uart" compatible
string.  The bootloader sets up the pinmux and baud/parity/etc.
Tested on bcm3384 (MIPS, DT).

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Kevin Cernekee
2014-10-21 15:23:02 -07:00
committed by Greg Kroah-Hartman
parent e1a184eea9
commit 1ab8e4b1ac
2 changed files with 21 additions and 0 deletions

View File

@ -1297,6 +1297,7 @@ config SERIAL_BCM63XX_CONSOLE
bool "Console on BCM63xx serial port" bool "Console on BCM63xx serial port"
depends on SERIAL_BCM63XX=y depends on SERIAL_BCM63XX=y
select SERIAL_CORE_CONSOLE select SERIAL_CORE_CONSOLE
select SERIAL_EARLYCON
help help
If you have enabled the serial port on the BCM63xx CPU If you have enabled the serial port on the BCM63xx CPU
you can make it the console by answering Y to this option. you can make it the console by answering Y to this option.

View File

@ -782,6 +782,26 @@ static int __init bcm63xx_console_init(void)
console_initcall(bcm63xx_console_init); console_initcall(bcm63xx_console_init);
static void bcm_early_write(struct console *con, const char *s, unsigned n)
{
struct earlycon_device *dev = con->data;
uart_console_write(&dev->port, s, n, bcm_console_putchar);
wait_for_xmitr(&dev->port);
}
static int __init bcm_early_console_setup(struct earlycon_device *device,
const char *opt)
{
if (!device->port.membase)
return -ENODEV;
device->con->write = bcm_early_write;
return 0;
}
OF_EARLYCON_DECLARE(bcm63xx_uart, "brcm,bcm6345-uart", bcm_early_console_setup);
#define BCM63XX_CONSOLE (&bcm63xx_console) #define BCM63XX_CONSOLE (&bcm63xx_console)
#else #else
#define BCM63XX_CONSOLE NULL #define BCM63XX_CONSOLE NULL