diff options
author | Michal Simek | 2022-02-17 14:28:42 +0100 |
---|---|---|
committer | Michal Simek | 2022-02-21 13:20:29 +0100 |
commit | 11381fba99dcadf9fa59dec08d78b730042ab134 (patch) | |
tree | 5a2b15409061ada8e6070cac6ea4459b209e41bc /arch | |
parent | 05f0f269b7a6e5c9b65e88bb8b691e28cb49da84 (diff) |
arm64: zynqmp: Fix debug uart initialization
The commit 0dba45864b2a ("arm: Init the debug UART") calls
debug_uart_init() from crt0.S but it won't work because SOC is not
configured yet. That's why create board_debug_uart_init() which calls
psu_init() via new psu_uboot_init() earlier before the first access to UART
in SPL. In full U-Boot call psu_uboot_init() only when
CONFIG_ZYNQMP_PSU_INIT_ENABLED is enabled.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Link: https://lore.kernel.org/r/878dc2daaa8685346f889989fbfb98b2e44da7fb.1645104518.git.michal.simek@xilinx.com
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-zynqmp/include/mach/psu_init_gpl.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-zynqmp/spl.c | 12 |
3 files changed, 13 insertions, 1 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index c5b21cd06e7..5e237d86211 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1199,6 +1199,7 @@ config ARCH_ZYNQMP select ARM64 select CLK select DM + select DEBUG_UART_BOARD_INIT if SPL && DEBUG_UART select DM_ETH if NET select DM_MAILBOX select DM_MMC if MMC diff --git a/arch/arm/mach-zynqmp/include/mach/psu_init_gpl.h b/arch/arm/mach-zynqmp/include/mach/psu_init_gpl.h index e37acda2f89..434a7fa20e4 100644 --- a/arch/arm/mach-zynqmp/include/mach/psu_init_gpl.h +++ b/arch/arm/mach-zynqmp/include/mach/psu_init_gpl.h @@ -22,5 +22,6 @@ void prog_reg(unsigned long addr, unsigned long mask, int psu_init(void); unsigned long psu_post_config_data(void); +int psu_uboot_init(void); #endif /* _PSU_INIT_GPL_H_ */ diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c index 6b836cbff2d..b428fd53121 100644 --- a/arch/arm/mach-zynqmp/spl.c +++ b/arch/arm/mach-zynqmp/spl.c @@ -19,9 +19,19 @@ #include <asm/arch/psu_init_gpl.h> #include <asm/arch/sys_proto.h> +#if defined(CONFIG_DEBUG_UART_BOARD_INIT) +void board_debug_uart_init(void) +{ + psu_uboot_init(); +} +#endif + void board_init_f(ulong dummy) { - board_early_init_f(); +#if !defined(CONFIG_DEBUG_UART_BOARD_INIT) + psu_uboot_init(); +#endif + board_early_init_r(); #ifdef CONFIG_SPL_ZYNQMP_DRAM_ECC_INIT zynqmp_ecc_init(); |