1.equ    B0_Tacs,      0x0 /* 0clk */
2.equ    B0_Tcos,      0x0 /* 0clk */
3.equ    B0_Tacc,      0x4 /* 6clk */
4.equ    B0_Tcoh,      0x0 /* 0clk */
5.equ    B0_Tah,       0x0 /* 0clk */
6.equ    B0_Tacp,      0x0 /* 0clk */
7.equ    B0_PMC,       0x0 /* normal(1data) */
8
9/* Bank 1 parameter */
10.equ    B1_Tacs,      0x3 /* 4clk */
11.equ    B1_Tcos,      0x3 /* 4clk */
12.equ    B1_Tacc,      0x7 /* 14clkv */
13.equ    B1_Tcoh,      0x3 /* 4clk */
14.equ    B1_Tah,       0x3 /* 4clk */
15.equ    B1_Tacp,      0x3 /* 6clk */
16.equ    B1_PMC,       0x0 /* normal(1data) */
17
18/* Bank 2 parameter - LAN91C96 */
19.equ    B2_Tacs,      0x3 /* 4clk */
20.equ    B2_Tcos,      0x3 /* 4clk */
21.equ    B2_Tacc,      0x7 /* 14clk */
22.equ    B2_Tcoh,      0x3 /* 4clk */
23.equ    B2_Tah,       0x3 /* 4clk */
24.equ    B2_Tacp,      0x3 /* 6clk */
25.equ    B2_PMC,       0x0 /* normal(1data) */
26
27/* Bank 3 parameter */
28.equ    B3_Tacs,      0x3 /* 4clk */
29.equ    B3_Tcos,      0x3 /* 4clk */
30.equ    B3_Tacc,      0x7 /* 14clk */
31.equ    B3_Tcoh,      0x3 /* 4clk */
32.equ    B3_Tah,       0x3 /* 4clk */
33.equ    B3_Tacp,      0x3 /* 6clk */
34.equ    B3_PMC,       0x0 /* normal(1data) */
35
36/* Bank 4 parameter */
37.equ    B4_Tacs,      0x3 /* 4clk */
38.equ    B4_Tcos,      0x3 /* 4clk */
39.equ    B4_Tacc,      0x7 /* 14clk */
40.equ    B4_Tcoh,      0x3 /* 4clk */
41.equ    B4_Tah,       0x3 /* 4clk */
42.equ    B4_Tacp,      0x3 /* 6clk */
43.equ    B4_PMC,       0x0 /* normal(1data) */
44
45/* Bank 5 parameter */
46.equ    B5_Tacs,      0x3 /* 4clk */
47.equ    B5_Tcos,      0x3 /* 4clk */
48.equ    B5_Tacc,      0x7 /* 14clk */
49.equ    B5_Tcoh,      0x3 /* 4clk */
50.equ    B5_Tah,       0x3 /* 4clk */
51.equ    B5_Tacp,      0x3 /* 6clk */
52.equ    B5_PMC,       0x0 /* normal(1data) */
53
54/* Bank 6(if SROM) parameter */
55.equ    B6_Tacs,      0x3 /* 4clk */
56.equ    B6_Tcos,      0x3 /* 4clk */
57.equ    B6_Tacc,      0x7 /* 14clk */
58.equ    B6_Tcoh,      0x3 /* 4clk */
59.equ    B6_Tah,       0x3 /* 4clk */
60.equ    B6_Tacp,      0x3 /* 6clk */
61.equ    B6_PMC,       0x0 /* normal(1data) */
62
63/* Bank 7(if SROM) parameter */
64.equ    B7_Tacs,      0x3 /* 4clk */
65.equ    B7_Tcos,      0x3 /* 4clk */
66.equ    B7_Tacc,      0x7 /* 14clk */
67.equ    B7_Tcoh,      0x3 /* 4clk */
68.equ    B7_Tah,       0x3 /* 4clk */
69.equ    B7_Tacp,      0x3 /* 6clk */
70.equ    B7_PMC,       0x0 /* normal(1data) */
71
72/* Bank 6 parameter */
73.equ    B6_MT,        0x3 /* SDRAM */
74.equ    B6_Trcd,      0x0 /* 2clk */
75.equ    B6_SCAN,      0x0 /* 8bit */
76
77.equ    B7_MT,        0x3 /* SDRAM */
78.equ    B7_Trcd,      0x0 /* 2clk */
79.equ    B7_SCAN,      0x0 /* 8bit */
80
81/* REFRESH parameter */
82.equ    REFEN,        0x1 /* Refresh enable */
83.equ    TREFMD,       0x0 /* CBR(CAS before RAS)/Auto refresh */
84.equ    Trp,	      0x0 /* 2clk */
85.equ    Trc,	      0x3 /* 0x1=5clk 0x3=11clk*/
86.equ    Tchr,	      0x0 /* 0x2=3clk 0x0=0clks  */
87.equ    REFCNT,       879
88
89MEMORY_CONFIG:
90  .long   0x11111900 /* Bank0 = OM[1:0] , Bank1-7 16bit, Bank2=Nowait,UB/LB*/
91  .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) /*GCS0*/
92  .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) /*GCS1*/
93  .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC)) /*GCS2*/
94  .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC)) /*GCS3*/
95  .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC)) /*GCS4*/
96  .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC)) /*GCS5*/
97  .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))  /*GCS6*/
98  .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))  /*GCS7*/
99  .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)  /*REFRESH RFEN=1, TREFMD=0, trp=3clk, trc=5clk, tchr=3clk,count=1019*/
100  .word 0x16      /*SCLK power down mode, BANKSIZE 8M/8M*/
101  .word 0x20      /*MRSR6 CL=2clk*/
102  .word 0x20      /*MRSR7*/
103
104	.equ PLLCON, 	0x01d80000
105	.equ CLKCON, 	0x01d80004
106	.equ LOCKTIME, 	0x01d8000c
107
108.globl lowlevel_init
109lowlevel_init:
110	/* set clock control register */
111	ldr	r1, =LOCKTIME
112	ldrb	r0, =0x7d0
113	strb	r0, [r1]
114
115	ldr	r1, =PLLCON
116	ldr	r0, =0x58061
117	str	r0, [r1]
118
119	ldr	r1, =CLKCON
120	ldr	r0, =0x7ff8
121	str	r0, [r1]
122
123	/*
124	 * memory configuration
125	 */
126	adr r0, MEMORY_CONFIG
127
128	ldmia r0, {r1-r13}
129	ldr	r0, =0x01c80000
130	stmia	r0, {r1-r13}
131	mov	pc, lr
132