|
|
|
@ -31,16 +31,16 @@ |
|
|
|
|
#include <asm/arch/clocks.h> |
|
|
|
|
#include "mem.h" |
|
|
|
|
|
|
|
|
|
#define APOLLON_CS0_BASE 0x00000000 |
|
|
|
|
#define APOLLON_CS0_BASE 0x00000000 |
|
|
|
|
|
|
|
|
|
#ifdef PRCM_CONFIG_I |
|
|
|
|
#define SDRC_ACTIM_CTRLA_0_VAL 0x7BA35907 |
|
|
|
|
#define SDRC_ACTIM_CTRLB_0_VAL 0x00000013 |
|
|
|
|
#define SDRC_RFR_CTRL_0_VAL 0x00044C01 |
|
|
|
|
#define SDRC_ACTIM_CTRLA_0_VAL 0x7BA35907 |
|
|
|
|
#define SDRC_ACTIM_CTRLB_0_VAL 0x00000013 |
|
|
|
|
#define SDRC_RFR_CTRL_0_VAL 0x00044C01 |
|
|
|
|
#elif defined(PRCM_CONFIG_II) |
|
|
|
|
#define SDRC_ACTIM_CTRLA_0_VAL 0x4A59B485 |
|
|
|
|
#define SDRC_ACTIM_CTRLB_0_VAL 0x0000000C |
|
|
|
|
#define SDRC_RFR_CTRL_0_VAL 0x00030001 |
|
|
|
|
#define SDRC_ACTIM_CTRLA_0_VAL 0x4A59B485 |
|
|
|
|
#define SDRC_ACTIM_CTRLB_0_VAL 0x0000000C |
|
|
|
|
#define SDRC_RFR_CTRL_0_VAL 0x00030001 |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#define SDRAM_BASE_ADDRESS 0x80008000 |
|
|
|
@ -66,100 +66,100 @@ flash_setup: |
|
|
|
|
ldr r1, =WD_UNLOCK2 |
|
|
|
|
str r1, [r0, #WSPR] |
|
|
|
|
|
|
|
|
|
/* Pin muxing for SDRC */ |
|
|
|
|
mov r1, #0x00 |
|
|
|
|
ldr r0, =0x480000A1 /* ball C12, mode 0 */ |
|
|
|
|
strb r1, [r0] |
|
|
|
|
|
|
|
|
|
ldr r0, =0x48000032 /* ball D11, mode 0 */ |
|
|
|
|
strb r1, [r0] |
|
|
|
|
|
|
|
|
|
ldr r0, =0x480000A3 /* ball B13, mode 0 */ |
|
|
|
|
strb r1, [r0] |
|
|
|
|
/* Pin muxing for SDRC */ |
|
|
|
|
mov r1, #0x00 |
|
|
|
|
ldr r0, =0x480000A1 /* ball C12, mode 0 */ |
|
|
|
|
strb r1, [r0] |
|
|
|
|
|
|
|
|
|
/* SDRC setting */ |
|
|
|
|
ldr r0, =OMAP2420_SDRC_BASE |
|
|
|
|
ldr r1, =0x00000010 |
|
|
|
|
str r1, [r0, #0x10] |
|
|
|
|
ldr r0, =0x48000032 /* ball D11, mode 0 */ |
|
|
|
|
strb r1, [r0] |
|
|
|
|
|
|
|
|
|
ldr r1, =0x00000100 |
|
|
|
|
str r1, [r0, #0x44] |
|
|
|
|
ldr r0, =0x480000A3 /* ball B13, mode 0 */ |
|
|
|
|
strb r1, [r0] |
|
|
|
|
|
|
|
|
|
/* SDRC CS0 configuration */ |
|
|
|
|
ldr r1, =0x00d04011 |
|
|
|
|
str r1, [r0, #0x80] |
|
|
|
|
/* SDRC setting */ |
|
|
|
|
ldr r0, =OMAP2420_SDRC_BASE |
|
|
|
|
ldr r1, =0x00000010 |
|
|
|
|
str r1, [r0, #0x10] |
|
|
|
|
|
|
|
|
|
ldr r1, =SDRC_ACTIM_CTRLA_0_VAL |
|
|
|
|
str r1, [r0, #0x9C] |
|
|
|
|
ldr r1, =0x00000100 |
|
|
|
|
str r1, [r0, #0x44] |
|
|
|
|
|
|
|
|
|
ldr r1, =SDRC_ACTIM_CTRLB_0_VAL |
|
|
|
|
str r1, [r0, #0xA0] |
|
|
|
|
/* SDRC CS0 configuration */ |
|
|
|
|
ldr r1, =0x00d04011 |
|
|
|
|
str r1, [r0, #0x80] |
|
|
|
|
|
|
|
|
|
ldr r1, =SDRC_RFR_CTRL_0_VAL |
|
|
|
|
str r1, [r0, #0xA4] |
|
|
|
|
ldr r1, =SDRC_ACTIM_CTRLA_0_VAL |
|
|
|
|
str r1, [r0, #0x9C] |
|
|
|
|
|
|
|
|
|
ldr r1, =0x00000041 |
|
|
|
|
str r1, [r0, #0x70] |
|
|
|
|
ldr r1, =SDRC_ACTIM_CTRLB_0_VAL |
|
|
|
|
str r1, [r0, #0xA0] |
|
|
|
|
|
|
|
|
|
/* Manual command sequence */ |
|
|
|
|
ldr r1, =0x00000007 |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
ldr r1, =SDRC_RFR_CTRL_0_VAL |
|
|
|
|
str r1, [r0, #0xA4] |
|
|
|
|
|
|
|
|
|
ldr r1, =0x00000000 |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
ldr r1, =0x00000041 |
|
|
|
|
str r1, [r0, #0x70] |
|
|
|
|
|
|
|
|
|
ldr r1, =0x00000001 |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
/* Manual command sequence */ |
|
|
|
|
ldr r1, =0x00000007 |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
|
|
|
|
|
ldr r1, =0x00000002 |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
ldr r1, =0x00000000 |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
* CS0 SDRC Mode register |
|
|
|
|
* Burst length = 4 - DDR memory |
|
|
|
|
* Serial mode |
|
|
|
|
* CAS latency = 3 |
|
|
|
|
*/ |
|
|
|
|
ldr r1, =0x00000032 |
|
|
|
|
str r1, [r0, #0x84] |
|
|
|
|
ldr r1, =0x00000001 |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
|
|
|
|
|
/* Note: You MUST set EMR values */ |
|
|
|
|
/* EMR1 & EMR2 */ |
|
|
|
|
ldr r1, =0x00000000 |
|
|
|
|
str r1, [r0, #0x88] |
|
|
|
|
str r1, [r0, #0x8C] |
|
|
|
|
ldr r1, =0x00000002 |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
str r1, [r0, #0xA8] |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
* CS0 SDRC Mode register |
|
|
|
|
* Burst length = 4 - DDR memory |
|
|
|
|
* Serial mode |
|
|
|
|
* CAS latency = 3 |
|
|
|
|
*/ |
|
|
|
|
ldr r1, =0x00000032 |
|
|
|
|
str r1, [r0, #0x84] |
|
|
|
|
|
|
|
|
|
/* Note: You MUST set EMR values */ |
|
|
|
|
/* EMR1 & EMR2 */ |
|
|
|
|
ldr r1, =0x00000000 |
|
|
|
|
str r1, [r0, #0x88] |
|
|
|
|
str r1, [r0, #0x8C] |
|
|
|
|
|
|
|
|
|
#ifdef OLD_SDRC_DLLA_CTRL |
|
|
|
|
/* SDRC_DLLA_CTRL */ |
|
|
|
|
ldr r1, =0x00007306 |
|
|
|
|
str r1, [r0, #0x60] |
|
|
|
|
/* SDRC_DLLA_CTRL */ |
|
|
|
|
ldr r1, =0x00007306 |
|
|
|
|
str r1, [r0, #0x60] |
|
|
|
|
|
|
|
|
|
ldr r1, =0x00007303 |
|
|
|
|
str r1, [r0, #0x60] |
|
|
|
|
ldr r1, =0x00007303 |
|
|
|
|
str r1, [r0, #0x60] |
|
|
|
|
#else |
|
|
|
|
/* SDRC_DLLA_CTRL */ |
|
|
|
|
ldr r1, =0x00000506 |
|
|
|
|
str r1, [r0, #0x60] |
|
|
|
|
/* SDRC_DLLA_CTRL */ |
|
|
|
|
ldr r1, =0x00000506 |
|
|
|
|
str r1, [r0, #0x60] |
|
|
|
|
|
|
|
|
|
ldr r1, =0x00000503 |
|
|
|
|
str r1, [r0, #0x60] |
|
|
|
|
ldr r1, =0x00000503 |
|
|
|
|
str r1, [r0, #0x60] |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef __BROKEN_FEATURE__ |
|
|
|
|
/* SDRC_DLLB_CTRL */ |
|
|
|
|
ldr r1, =0x00000506 |
|
|
|
|
str r1, [r0, #0x68] |
|
|
|
|
/* SDRC_DLLB_CTRL */ |
|
|
|
|
ldr r1, =0x00000506 |
|
|
|
|
str r1, [r0, #0x68] |
|
|
|
|
|
|
|
|
|
ldr r1, =0x00000503 |
|
|
|
|
str r1, [r0, #0x68] |
|
|
|
|
ldr r1, =0x00000503 |
|
|
|
|
str r1, [r0, #0x68] |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* little delay after init */ |
|
|
|
|
mov r2, #0x1800 |
|
|
|
|
/* little delay after init */ |
|
|
|
|
mov r2, #0x1800 |
|
|
|
|
1: |
|
|
|
|
subs r2, r2, #0x1 |
|
|
|
|
bne 1b |
|
|
|
|
subs r2, r2, #0x1 |
|
|
|
|
bne 1b |
|
|
|
|
|
|
|
|
|
/* Setup base address */ |
|
|
|
|
ldr r0, =0x00000000 /* NOR address */ |
|
|
|
@ -178,21 +178,21 @@ copy_loop: |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
prcm_setup: |
|
|
|
|
ldr r0, =OMAP2420_CM_BASE |
|
|
|
|
ldr r1, [r0, #0x544] /* CLKSEL2_PLL */ |
|
|
|
|
bic r1, r1, #0x03 |
|
|
|
|
orr r1, r1, #0x02 |
|
|
|
|
str r1, [r0, #0x544] |
|
|
|
|
|
|
|
|
|
ldr r1, [r0, #0x500] |
|
|
|
|
bic r1, r1, #0x03 |
|
|
|
|
orr r1, r1, #0x01 |
|
|
|
|
str r1, [r0, #0x500] |
|
|
|
|
|
|
|
|
|
ldr r1, [r0, #0x140] |
|
|
|
|
bic r1, r1, #0x1f |
|
|
|
|
orr r1, r1, #0x02 |
|
|
|
|
str r1, [r0, #0x140] |
|
|
|
|
ldr r0, =OMAP2420_CM_BASE |
|
|
|
|
ldr r1, [r0, #0x544] /* CLKSEL2_PLL */ |
|
|
|
|
bic r1, r1, #0x03 |
|
|
|
|
orr r1, r1, #0x02 |
|
|
|
|
str r1, [r0, #0x544] |
|
|
|
|
|
|
|
|
|
ldr r1, [r0, #0x500] |
|
|
|
|
bic r1, r1, #0x03 |
|
|
|
|
orr r1, r1, #0x01 |
|
|
|
|
str r1, [r0, #0x500] |
|
|
|
|
|
|
|
|
|
ldr r1, [r0, #0x140] |
|
|
|
|
bic r1, r1, #0x1f |
|
|
|
|
orr r1, r1, #0x02 |
|
|
|
|
str r1, [r0, #0x140] |
|
|
|
|
|
|
|
|
|
#ifdef PRCM_CONFIG_I |
|
|
|
|
ldr r1, =0x000003C3 |
|
|
|
@ -204,58 +204,58 @@ prcm_setup: |
|
|
|
|
ldr r1, =0x00000002 |
|
|
|
|
str r1, [r0, #0x340] |
|
|
|
|
|
|
|
|
|
ldr r1, =CM_CLKSEL1_CORE |
|
|
|
|
ldr r1, =CM_CLKSEL1_CORE |
|
|
|
|
#ifdef PRCM_CONFIG_I |
|
|
|
|
ldr r2, =0x08300C44 |
|
|
|
|
ldr r2, =0x08300C44 |
|
|
|
|
#else |
|
|
|
|
ldr r2, =0x04600C26 |
|
|
|
|
ldr r2, =0x04600C26 |
|
|
|
|
#endif |
|
|
|
|
str r2, [r1] |
|
|
|
|
str r2, [r1] |
|
|
|
|
|
|
|
|
|
ldr r0, =OMAP2420_CM_BASE |
|
|
|
|
ldr r1, [r0, #0x084] |
|
|
|
|
and r1, r1, #0x01 |
|
|
|
|
cmp r1, #0x01 |
|
|
|
|
bne clkvalid |
|
|
|
|
ldr r0, =OMAP2420_CM_BASE |
|
|
|
|
ldr r1, [r0, #0x084] |
|
|
|
|
and r1, r1, #0x01 |
|
|
|
|
cmp r1, #0x01 |
|
|
|
|
bne clkvalid |
|
|
|
|
|
|
|
|
|
b . |
|
|
|
|
b . |
|
|
|
|
|
|
|
|
|
clkvalid: |
|
|
|
|
mov r1, #0x01 |
|
|
|
|
str r1, [r0, #0x080] |
|
|
|
|
mov r1, #0x01 |
|
|
|
|
str r1, [r0, #0x080] |
|
|
|
|
|
|
|
|
|
waitvalid: |
|
|
|
|
ldr r1, [r0, #0x084] |
|
|
|
|
and r1, r1, #0x01 |
|
|
|
|
cmp r1, #0x00 |
|
|
|
|
bne waitvalid |
|
|
|
|
ldr r1, [r0, #0x084] |
|
|
|
|
and r1, r1, #0x01 |
|
|
|
|
cmp r1, #0x00 |
|
|
|
|
bne waitvalid |
|
|
|
|
|
|
|
|
|
ldr r0, =CM_CLKSEL1_PLL |
|
|
|
|
ldr r0, =CM_CLKSEL1_PLL |
|
|
|
|
#ifdef PRCM_CONFIG_I |
|
|
|
|
ldr r1, =0x01837100 |
|
|
|
|
ldr r1, =0x01837100 |
|
|
|
|
#else |
|
|
|
|
ldr r1, =0x01832100 |
|
|
|
|
ldr r1, =0x01832100 |
|
|
|
|
#endif |
|
|
|
|
str r1, [r0] |
|
|
|
|
str r1, [r0] |
|
|
|
|
|
|
|
|
|
ldr r0, =PRCM_CLKCFG_CTRL |
|
|
|
|
mov r1, #0x01 |
|
|
|
|
str r1, [r0] |
|
|
|
|
mov r6, #0x50 |
|
|
|
|
ldr r0, =PRCM_CLKCFG_CTRL |
|
|
|
|
mov r1, #0x01 |
|
|
|
|
str r1, [r0] |
|
|
|
|
mov r6, #0x50 |
|
|
|
|
loop1: |
|
|
|
|
subs r6, r6, #0x01 |
|
|
|
|
cmp r6, #0x01 |
|
|
|
|
bne loop1 |
|
|
|
|
subs r6, r6, #0x01 |
|
|
|
|
cmp r6, #0x01 |
|
|
|
|
bne loop1 |
|
|
|
|
|
|
|
|
|
ldr r0, =CM_CLKEN_PLL |
|
|
|
|
ldr r0, =CM_CLKEN_PLL |
|
|
|
|
mov r1, #0x0f |
|
|
|
|
str r1, [r0] |
|
|
|
|
str r1, [r0] |
|
|
|
|
|
|
|
|
|
mov r6, #0x100 |
|
|
|
|
mov r6, #0x100 |
|
|
|
|
loop2: |
|
|
|
|
subs r6, r6, #0x01 |
|
|
|
|
cmp r6, #0x01 |
|
|
|
|
bne loop2 |
|
|
|
|
subs r6, r6, #0x01 |
|
|
|
|
cmp r6, #0x01 |
|
|
|
|
bne loop2 |
|
|
|
|
|
|
|
|
|
ldr r0, =0x48008200 |
|
|
|
|
ldr r1, =0xbfffffff |
|
|
|
|