diff options
| -rw-r--r-- | drivers/serial/serial-uclass.c | 10 | ||||
| -rw-r--r-- | drivers/serial/serial_msm_geni.c | 5 |
2 files changed, 13 insertions, 2 deletions
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 7b381ca12a0..9be2ad270ad 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -190,6 +190,16 @@ int fetch_baud_from_dtb(void) int serial_init(void) { #if CONFIG_IS_ENABLED(SERIAL_PRESENT) + /* + * Skip serial device probe before relocation if debug UART is enabled + * and early DM is skipped. Debug UART will handle console output during + * early boot. Full serial initialization happens in serial_initialize() + * after relocation. + */ + if ((CONFIG_IS_ENABLED(DEBUG_UART) && CONFIG_IS_ENABLED(SKIP_EARLY_DM)) && + !(gd->flags & GD_FLG_RELOC)) + return 0; + serial_find_console_or_panic(); if (gd->cur_serial_dev) gd->flags |= GD_FLG_SERIAL_READY; diff --git a/drivers/serial/serial_msm_geni.c b/drivers/serial/serial_msm_geni.c index ae4015e0fdc..ff91e0018fa 100644 --- a/drivers/serial/serial_msm_geni.c +++ b/drivers/serial/serial_msm_geni.c @@ -555,8 +555,9 @@ static int msm_serial_probe(struct udevice *dev) if (ret < 0) return ret; - /* No need to reinitialize the UART after relocation */ - if (gd->flags & GD_FLG_RELOC) + /* Skip re-init after relocation if debug UART and early DM skip are not enabled */ + if ((!CONFIG_IS_ENABLED(DEBUG_UART) && !CONFIG_IS_ENABLED(SKIP_EARLY_DM)) && + (gd->flags & GD_FLG_RELOC)) return 0; geni_serial_init(dev); |
