armv7R: K3: j721e: Store boot index from ROM
authorAndreas Dannenberg <dannenberg@ti.com>
Thu, 13 Jun 2019 04:59:45 +0000 (10:29 +0530)
committerTom Rini <trini@konsulko.com>
Sat, 27 Jul 2019 01:49:26 +0000 (21:49 -0400)
Obtain the boot index as left behind by the device boot ROM and store
it in scratch pad SRAM for later use before it may get overwritten.

Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
arch/arm/mach-k3/j721e_init.c

index ba6a1cf..b7f0546 100644 (file)
@@ -53,12 +53,25 @@ static void ctrl_mmr_unlock(void)
        mmr_unlock(CTRL_MMR0_BASE, 7);
 }
 
+/*
+ * This uninitialized global variable would normal end up in the .bss section,
+ * but the .bss is cleared between writing and reading this variable, so move
+ * it to the .data section.
+ */
+u32 bootindex __attribute__((section(".data")));
+
+static void store_boot_index_from_rom(void)
+{
+       bootindex = *(u32 *)(CONFIG_SYS_K3_BOOT_PARAM_TABLE_INDEX);
+}
+
 void board_init_f(ulong dummy)
 {
        /*
-        * ToDo:
-        * - Store boot rom index.
+        * Cannot delay this further as there is a chance that
+        * K3_BOOT_PARAM_TABLE_INDEX can be over written by SPL MALLOC section.
         */
+       store_boot_index_from_rom();
 
        /* Make all control module registers accessible */
        ctrl_mmr_unlock();