By design, earlycon depends on boot firmware to setup the console for Linux to use early before proper driver probe. When we specify the baudrate though, the earlycon implementation may configure UART-internal dividers to try to achieve the specified baudrate. The bus clock being divided is defined statically Linux-architecture-wide using the BASE_BAUD symbol, which is not suitable across different baudrates and SoCs. Side step this issue by skipping fix up of the baudrate, so Linux just uses what was preconfigured. This fixed global.bootm.earlycon=1 for the ROCK-3A with 1.5 MBaud. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- common/console.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/console.c b/common/console.c index c09c8e7d44c2..768550eb7df9 100644 --- a/common/console.c +++ b/common/console.c @@ -227,8 +227,8 @@ static void console_add_earlycon_param(struct console_device *cdev, unsigned bau if (!cdev->linux_earlycon_name) return; - str = basprintf("earlycon=%s,0x%lx,%dn8", cdev->linux_earlycon_name, - (ulong)cdev->phys_base, baudrate); + str = basprintf("earlycon=%s,0x%lx", cdev->linux_earlycon_name, + (ulong)cdev->phys_base); dev_add_param_fixed(&cdev->class_dev, "linux.bootargs.earlycon", str); -- 2.39.2