Commit b89cfc05 authored by Hector Martin's avatar Hector Martin Committed by Greg Kroah-Hartman

tty: serial: samsung_tty: Add earlycon support for Apple UARTs

Earlycon support is identical to S3C2410, but Apple SoCs also need
MMIO mapped as nGnRnE. This is handled generically for normal drivers
including the normal UART path here, but earlycon uses fixmap and
runs before that scaffolding is ready.

Since this is the only case where we need this fix, it makes more
sense to do it here in the UART driver instead of introducing a
whole fdt nonposted-mmio resolver just for earlycon/fixmap.
Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarHector Martin <marcan@marcan.st>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Link: https://lore.kernel.org/r/20210304213902.83903-26-marcan@marcan.stSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent fcbba344
......@@ -3001,6 +3001,23 @@ OF_EARLYCON_DECLARE(s5pv210, "samsung,s5pv210-uart",
s5pv210_early_console_setup);
OF_EARLYCON_DECLARE(exynos4210, "samsung,exynos4210-uart",
s5pv210_early_console_setup);
/* Apple S5L */
static int __init apple_s5l_early_console_setup(struct earlycon_device *device,
const char *opt)
{
/* Close enough to S3C2410 for earlycon... */
device->port.private_data = &s3c2410_early_console_data;
#ifdef CONFIG_ARM64
/* ... but we need to override the existing fixmap entry as nGnRnE */
__set_fixmap(FIX_EARLYCON_MEM_BASE, device->port.mapbase,
__pgprot(PROT_DEVICE_nGnRnE));
#endif
return samsung_early_console_setup(device, opt);
}
OF_EARLYCON_DECLARE(s5l, "apple,s5l-uart", apple_s5l_early_console_setup);
#endif
MODULE_ALIAS("platform:samsung-uart");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment