On 2/13/19 9:32 PM, Lokesh Vutla wrote: > > > On 14/02/19 12:07 AM, Andrew F. Davis wrote: >> On HS devices the 512b region of reset isolated memory called >> MCU_PSRAM0 is firewalled by default. Until SYSFW is loaded we >> cannot use this memory. It is only used to store a single value >> left at the end of SRAM by ROM that will be needed later. Save >> that value to a global variable stored in the .data section. >> This section is used as .bss will be cleared between saving >> this value and using it. >> >> Signed-off-by: Andrew F. Davis <a...@ti.com> >> --- >> arch/arm/mach-k3/am6_init.c | 8 +++----- >> arch/arm/mach-k3/include/mach/am6_hardware.h | 3 --- >> 2 files changed, 3 insertions(+), 8 deletions(-) >> >> diff --git a/arch/arm/mach-k3/am6_init.c b/arch/arm/mach-k3/am6_init.c >> index a5553190b4..462538e45d 100644 >> --- a/arch/arm/mach-k3/am6_init.c >> +++ b/arch/arm/mach-k3/am6_init.c >> @@ -49,11 +49,11 @@ static void ctrl_mmr_unlock(void) >> mmr_unlock(CTRL_MMR0_BASE, 7); >> } >> >> +u32 bootindex __attribute__((section(".data"))); > > After thinking a bit more I realized that backup bootmode might fail. R5 SPL > is > fine but when it jumps to A53 SPL it is trying to read the bootindex again > from > K3_BOOT_PARAM_TABLE_INDEX_VAL(this is already the case and is wrong). It is > not > guaranteed that R5 SPL did not damage this ROM param table. We should somehow > pass bootindex to A53 SPL using scratchpad space. >
I don't know of any super good way to pass data from R5-SPL to A53-SPL, but I don't think MCU_PSRAM0 will be the way to do it. For all we know before A53-SPL has started the R5-SPL may have shutdown and something else has booted, which could have used that MCU local RAM space. I think we need something that gets passed to A53 anyway, maybe a DT fixup? >> + >> static void store_boot_index_from_rom(void) >> { >> - u32 *boot_index = (u32 *)K3_BOOT_PARAM_TABLE_INDEX_VAL; >> - >> - *boot_index = *(u32 *)(CONFIG_SYS_K3_BOOT_PARAM_TABLE_INDEX); >> + bootindex = *(u32 *)(CONFIG_SYS_K3_BOOT_PARAM_TABLE_INDEX); >> } >> >> void board_init_f(ulong dummy) >> @@ -94,7 +94,6 @@ u32 spl_boot_mode(const u32 boot_device) >> { >> #if defined(CONFIG_SUPPORT_EMMC_BOOT) >> u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT); >> - u32 bootindex = readl(K3_BOOT_PARAM_TABLE_INDEX_VAL); >> >> u32 bootmode = (devstat & CTRLMMR_MAIN_DEVSTAT_BOOTMODE_MASK) >> >> CTRLMMR_MAIN_DEVSTAT_BOOTMODE_SHIFT; >> @@ -170,7 +169,6 @@ static u32 __get_primary_bootmedia(u32 devstat) >> u32 spl_boot_device(void) >> { >> u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT); >> - u32 bootindex = readl(K3_BOOT_PARAM_TABLE_INDEX_VAL); >> >> if (bootindex == K3_PRIMARY_BOOTMODE) >> return __get_primary_bootmedia(devstat); >> diff --git a/arch/arm/mach-k3/include/mach/am6_hardware.h >> b/arch/arm/mach-k3/include/mach/am6_hardware.h >> index b5244609af..3343233aa3 100644 >> --- a/arch/arm/mach-k3/include/mach/am6_hardware.h >> +++ b/arch/arm/mach-k3/include/mach/am6_hardware.h >> @@ -44,7 +44,4 @@ >> #define CTRLMMR_LOCK_KICK1 0x0100c >> #define CTRLMMR_LOCK_KICK1_UNLOCK_VAL 0xd172bc5a >> >> -/* MCU SCRATCHPAD usage */ >> -#define K3_BOOT_PARAM_TABLE_INDEX_VAL >> CONFIG_SYS_K3_MCU_SCRATCHPAD_BASE > > Can we move scratchpad base to a different location ? This will be used for > eeprom storing also. > It's okay to use MCU_PSRAM0 after SYSFW has been loaded, does the EEPROM data need to be moved between SPLs? Or is it local to each? Andrew > Thanks and regards, > Lokesh > >> - >> #endif /* __ASM_ARCH_AM6_HARDWARE_H */ >> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot