On 12/14/23 12:01, Arnd Bergmann wrote: Hi, Arnd, Thanks for the review! > On Thu, Dec 14, 2023, at 11:52, Tudor Ambarus wrote: >> +static int __init gs101_early_console_setup(struct earlycon_device *device, >> + const char *opt) >> +{ >> + /* gs101 always expects MMIO32 register accesses. */ >> + device->port.iotype = UPIO_MEM32; >> + >> + return s5pv210_early_console_setup(device, opt); >> +} >> + >> +OF_EARLYCON_DECLARE(gs101, "google,gs101-uart", gs101_early_console_setup); > > It looks like this is already done by of_setup_earlycon() based on > the reg-io-width property. Any idea why it doesn't work with the > normal s5pv210_early_console_setup() function? > It works if in device tree one specifies the reg-io-width property and sets it to 4. If the reg-io-width is not specified, the iotype defaults to UPIO_MEM causing the SError interrupt on gs101 which makes the system unusable. Also, if the earlycon comes specified from the kernel params, the of_setup_earlycon() is no longer called and the earlycon will be set solely based on the kernel params buffer, thus allowing users to crash the kernel on wrong earlycon definitions. If you think the change is fine, I can amend the commit message with the description from above. Cheers, ta