* Fix memory initialization. This fixes the problem
with kernel oopses during heavy load.
* Cleanup pinsetup, which for reference is among
other things needed for proper flash erasing.
Signed-off-by: Kristoffer Ericson <kristoffer.ericson@gmail.com>
.globl lowlevel_init
lowlevel_init:
- /* set output and direction of pins */
- ldr r0, PPC_BASE
- ldr r1, pin_set_out
- str r1, [r0, #PPSR]
- ldr r1, pin_set_dir
- str r1, [r0, #PPDR]
+
+ /* this is required for flashing */
+ ldr r0, PPC_BASE
+ ldr r1, pin_set_out
+ str r1, [r0, #PPSR]
+ ldr r1, pin_set_dir
+ str r1, [r0, #PPDR]
/* Setting up the memory and stuff */
/***********************************/
ldr r3, [r2]
.endr
+ ldr r2, [r0, #MDCNFG]
+ orr r2, r2, #0x00000003
+ orr r2, r2, #0x00030000
+ str r2, [r0, #MDCNFG]
+
ldr r1, msc0
str r1, [r0, #MSC0]
ldr r1, msc1
str r1, [r0, #MSC2]
ldr r1, smcnfg
str r1, [r0, #SMCNFG]
- ldr r1, mdcnfg
- str r1, [r0, #MDCNFG]
ldr r1, mecr
str r1, [r0, #MECR]
- /* enable SDRAM */
- orr r1, r1, #0x00000001
- str r1, [r0, #MDCNFG]
-
mov pc, lr