diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/mach-versal/cpu.c | 15 | ||||
| -rw-r--r-- | arch/arm/mach-versal/include/mach/sys_proto.h | 4 |
2 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-versal/cpu.c b/arch/arm/mach-versal/cpu.c index 7ad93982e8d..5cb013d5f2e 100644 --- a/arch/arm/mach-versal/cpu.c +++ b/arch/arm/mach-versal/cpu.c @@ -120,6 +120,21 @@ u32 __weak versal_pmc_multi_boot(void) return versal_multi_boot_reg(); } +u32 versal_bootmode_reg(void) +{ + return readl(&crp_base->boot_mode_usr); +} + +u8 __weak versal_get_bootmode(void) +{ + u32 reg = versal_bootmode_reg(); + + if (reg >> BOOT_MODE_ALT_SHIFT) + reg >>= BOOT_MODE_ALT_SHIFT; + + return reg & BOOT_MODES_MASK; +} + U_BOOT_DRVINFO(soc_xilinx_versal) = { .name = "soc_xilinx_versal", }; diff --git a/arch/arm/mach-versal/include/mach/sys_proto.h b/arch/arm/mach-versal/include/mach/sys_proto.h index d7ab2549658..f8836db5ef0 100644 --- a/arch/arm/mach-versal/include/mach/sys_proto.h +++ b/arch/arm/mach-versal/include/mach/sys_proto.h @@ -21,5 +21,9 @@ void mem_map_fill(void); u32 versal_pmc_multi_boot(void); /* Direct MMIO read of the multiboot register (EL3 / no-firmware path) */ u32 versal_multi_boot_reg(void); +/* Overridable bootmode decode: weak MMIO default, firmware override */ +u8 versal_get_bootmode(void); +/* Direct MMIO read of the bootmode register (EL3 / no-firmware path) */ +u32 versal_bootmode_reg(void); #endif /* _ASM_ARCH_SYS_PROTO_H */ |
