aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/tty/serial/8250
diff options
context:
space:
mode:
authorMatthias Brugger <mbrugger@suse.com>2020-01-26 13:33:14 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-02-10 12:34:44 -0800
commit57b76faf1d7860f070a1ee2d0b7eccd9f37ecc55 (patch)
tree061d5836249a41da99c3e11816d7e01de0d8bdcb /drivers/tty/serial/8250
parentserial: 8250_tegra: Create Tegra specific 8250 driver (diff)
downloadwireguard-linux-57b76faf1d7860f070a1ee2d0b7eccd9f37ecc55.tar.xz
wireguard-linux-57b76faf1d7860f070a1ee2d0b7eccd9f37ecc55.zip
serial: 8250_early: Add earlycon for BCM2835 aux uart
Define the OF early console for BCM2835 aux UART, which can be enabled by passing "earlycon" on the boot command line. This UART is found on BCM283x and BCM27xx SoCs, a.k.a. Raspberry Pi in its variants. Signed-off-by: Matthias Brugger <mbrugger@suse.com> Link: https://lore.kernel.org/r/20200126123314.3558-1-matthias.bgg@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/8250')
-rw-r--r--drivers/tty/serial/8250/8250_bcm2835aux.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/tty/serial/8250/8250_bcm2835aux.c b/drivers/tty/serial/8250/8250_bcm2835aux.c
index e70e3cc30050..5cc03bf24f85 100644
--- a/drivers/tty/serial/8250/8250_bcm2835aux.c
+++ b/drivers/tty/serial/8250/8250_bcm2835aux.c
@@ -137,6 +137,24 @@ static struct platform_driver bcm2835aux_serial_driver = {
};
module_platform_driver(bcm2835aux_serial_driver);
+#ifdef CONFIG_SERIAL_8250_CONSOLE
+
+static int __init early_bcm2835aux_setup(struct earlycon_device *device,
+ const char *options)
+{
+ if (!device->port.membase)
+ return -ENODEV;
+
+ device->port.iotype = UPIO_MEM32;
+ device->port.regshift = 2;
+
+ return early_serial8250_setup(device, NULL);
+}
+
+OF_EARLYCON_DECLARE(bcm2835aux, "brcm,bcm2835-aux-uart",
+ early_bcm2835aux_setup);
+#endif
+
MODULE_DESCRIPTION("BCM2835 auxiliar UART driver");
MODULE_AUTHOR("Martin Sperl <kernel@martin.sperl.org>");
MODULE_LICENSE("GPL v2");