]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
omap5912-osk: Fix device initialisation
authorJon Hunter <jon-hunter@ti.com>
Tue, 9 Apr 2013 21:41:31 +0000 (16:41 -0500)
committerTom Rini <trini@ti.com>
Wed, 10 Apr 2013 20:03:01 +0000 (16:03 -0400)
In the current u-boot, the device pin multiplexing and clock
initialisation needs to be early during the boot process and before
board_init() is called. U-boot is currently crashing on this board
because this is not being done early enough. Therefore, add a s_init()
function for the omap5912-osk board to do this.

Also fix the stack pointer so that it is pointing to the end of the
internal RAM and not the beginning as this was also causing the device
to crash.

Signed-off-by: Jon Hunter <jon-hunter@ti.com>
board/ti/omap5912osk/lowlevel_init.S
board/ti/omap5912osk/omap5912osk.c
include/configs/omap5912osk.h

index e60161ebaf9150dd82cf6ff16ccdc53ced69d8c3..ca7361e05a6711776efd5f691e94732be075c196 100644 (file)
@@ -306,6 +306,23 @@ common_tc:
        ldr     r1,     VAL_MPU_CNTL_TIMER
        str     r1,     [r0]
 
+       /*
+        * Setup a temporary stack
+        */
+       ldr     sp,     SRAM_STACK
+       bic     sp, sp, #7 /* 8-byte alignment for ABI compliance */
+
+       /*
+        * Save the old lr(passed in ip) and the current lr to stack
+        */
+       push    {ip, lr}
+
+       /*
+        * go setup pll, mux, memory
+        */
+       bl      s_init
+       pop     {ip, pc}
+
        /* back to arch calling code */
        mov     pc,     lr
 
@@ -470,6 +487,9 @@ VAL_ARM_IDLECT2:
 VAL_ARM_IDLECT3:
        .word 0x00000015
 
+SRAM_STACK:
+       .word CONFIG_SYS_INIT_SP_ADDR
+
 /* command values */
 .equ CMD_SDRAM_NOP,             0x00000000
 .equ CMD_SDRAM_PRECHARGE,       0x00000001
index 9e91c5efc143aba4148a1e143cc88359c92e4781..95140719aa908d4aee570c5bdd481b6437f729b2 100644 (file)
@@ -66,6 +66,14 @@ int board_init (void)
        /* adress of boot parameters */
        gd->bd->bi_boot_params = 0x10000100;
 
+       flash__init();
+       ether__init();
+
+       return 0;
+}
+
+void s_init(void)
+{
        /* Configure MUX settings */
        set_muxconf_regs ();
        peripheral_power_enable ();
@@ -75,10 +83,6 @@ int board_init (void)
  *  ... rkw ...
  */
        icache_enable ();
-
-       flash__init ();
-       ether__init ();
-       return 0;
 }
 
 /******************************
index 40ca9bb98d763ed82ff09f075761d8bea3eceb1b..558e933b0a2d3862ffd89fa2c37143bb8b41a204 100644 (file)
 #define CONFIG_ENV_SIZE        0x20000 /* Total Size of Environment Sector */
 #define CONFIG_ENV_OFFSET      0x20000 /* environment starts here  */
 
-#define CONFIG_SYS_SDRAM_BASE  PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_SP_ADDR PHYS_SRAM
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
+#define CONFIG_SYS_INIT_RAM_ADDR        PHYS_SRAM
+#define CONFIG_SYS_INIT_RAM_SIZE        (250 * 1024)
+#define CONFIG_SYS_INIT_SP_ADDR         (CONFIG_SYS_INIT_RAM_ADDR + \
+                                        CONFIG_SYS_INIT_RAM_SIZE)
 
 #endif                                                 /* __CONFIG_H */