x86: Fix DRAM bank size init with generic board
authorSimon Glass <sjg@chromium.org>
Mon, 15 Apr 2013 11:22:49 +0000 (11:22 +0000)
committerSimon Glass <sjg@chromium.org>
Mon, 15 Apr 2013 23:26:09 +0000 (16:26 -0700)
The intention of the memory init code is that it should work the same with
CONFIG_SYS_GENERIC_BOARD and without. This is tricky because dram_init()
is called prior to relocation with generic board (matching other archs)
and after relocation without generic board.

Adjust the init sequence so that dram_init() is not called in the generic
board case, which seems like the easiest fix for now. Also ensure that
relocation addresses are still calculated.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/x86/cpu/coreboot/sdram.c
common/board_f.c

index 786009c..b4fe6c9 100644 (file)
@@ -113,7 +113,7 @@ int dram_init_f(void)
        return 0;
 }
 
-int dram_init(void)
+int dram_init_banksize(void)
 {
        int i, j;
 
@@ -132,3 +132,8 @@ int dram_init(void)
        }
        return 0;
 }
+
+int dram_init(void)
+{
+       return dram_init_banksize();
+}
index 7698891..32d5215 100644 (file)
@@ -856,8 +856,7 @@ static init_fnc_t init_sequence_f[] = {
 #endif
 #ifdef CONFIG_X86
        dram_init_f,            /* configure available RAM banks */
-       /* x86 would prefer that this happens after relocation */
-       dram_init,
+       calculate_relocation_address,
 #endif
        announce_dram_init,
        /* TODO: unify all these dram functions? */