xref: /rk3399_rockchip-uboot/board/renesas/r2dplus/lowlevel_init.S (revision c1da2a22817ba85b437afa2f4e715e658b219fd1)
1*c1da2a22SNobuhiro Iwamatsu/*
2*c1da2a22SNobuhiro Iwamatsu * modified from SH-IPL+g (init-r0p751rlc0011rl.S)
3*c1da2a22SNobuhiro Iwamatsu * Initial Register Data for R0P751RLC0011RL (SH7751R 240MHz/120MHz/60MHz)
4*c1da2a22SNobuhiro Iwamatsu * Coyright (c) 2007,2008 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
5*c1da2a22SNobuhiro Iwamatsu*/
6*c1da2a22SNobuhiro Iwamatsu
7*c1da2a22SNobuhiro Iwamatsu#include <config.h>
8*c1da2a22SNobuhiro Iwamatsu#include <version.h>
9*c1da2a22SNobuhiro Iwamatsu
10*c1da2a22SNobuhiro Iwamatsu#include <asm/processor.h>
11*c1da2a22SNobuhiro Iwamatsu
12*c1da2a22SNobuhiro Iwamatsu	.global lowlevel_init
13*c1da2a22SNobuhiro Iwamatsu	.text
14*c1da2a22SNobuhiro Iwamatsu	.align  2
15*c1da2a22SNobuhiro Iwamatsu
16*c1da2a22SNobuhiro Iwamatsulowlevel_init:
17*c1da2a22SNobuhiro Iwamatsu
18*c1da2a22SNobuhiro Iwamatsu	mov.l	CCR_A, r1
19*c1da2a22SNobuhiro Iwamatsu	mov.l	CCR_D_D, r0
20*c1da2a22SNobuhiro Iwamatsu	mov.l	r0,@r1
21*c1da2a22SNobuhiro Iwamatsu
22*c1da2a22SNobuhiro Iwamatsu	mov.l	MMUCR_A,r1
23*c1da2a22SNobuhiro Iwamatsu	mov.l	MMUCR_D,r0
24*c1da2a22SNobuhiro Iwamatsu	mov.w	r0,@r1
25*c1da2a22SNobuhiro Iwamatsu
26*c1da2a22SNobuhiro Iwamatsu	mov.l	BCR1_A,r1
27*c1da2a22SNobuhiro Iwamatsu	mov.l	BCR1_D,r0
28*c1da2a22SNobuhiro Iwamatsu	mov.l	r0,@r1
29*c1da2a22SNobuhiro Iwamatsu
30*c1da2a22SNobuhiro Iwamatsu	mov.l	BCR2_A,r1
31*c1da2a22SNobuhiro Iwamatsu	mov.l	BCR2_D,r0
32*c1da2a22SNobuhiro Iwamatsu	mov.w	r0,@r1
33*c1da2a22SNobuhiro Iwamatsu
34*c1da2a22SNobuhiro Iwamatsu	mov.l	BCR3_A,r1
35*c1da2a22SNobuhiro Iwamatsu	mov.l	BCR3_D,r0
36*c1da2a22SNobuhiro Iwamatsu	mov.w	r0,@r1
37*c1da2a22SNobuhiro Iwamatsu
38*c1da2a22SNobuhiro Iwamatsu	mov.l	BCR4_A,r1
39*c1da2a22SNobuhiro Iwamatsu	mov.l	BCR4_D,r0
40*c1da2a22SNobuhiro Iwamatsu	mov.l	r0,@r1
41*c1da2a22SNobuhiro Iwamatsu
42*c1da2a22SNobuhiro Iwamatsu	mov.l	WCR1_A,r1
43*c1da2a22SNobuhiro Iwamatsu	mov.l	WCR1_D,r0
44*c1da2a22SNobuhiro Iwamatsu	mov.l	r0,@r1
45*c1da2a22SNobuhiro Iwamatsu
46*c1da2a22SNobuhiro Iwamatsu	mov.l	WCR2_A,r1
47*c1da2a22SNobuhiro Iwamatsu	mov.l	WCR2_D,r0
48*c1da2a22SNobuhiro Iwamatsu	mov.l	r0,@r1
49*c1da2a22SNobuhiro Iwamatsu
50*c1da2a22SNobuhiro Iwamatsu	mov.l	WCR3_A,r1
51*c1da2a22SNobuhiro Iwamatsu	mov.l	WCR3_D,r0
52*c1da2a22SNobuhiro Iwamatsu	mov.l	r0,@r1
53*c1da2a22SNobuhiro Iwamatsu
54*c1da2a22SNobuhiro Iwamatsu	mov.l	PCR_A,r1
55*c1da2a22SNobuhiro Iwamatsu	mov.l	PCR_D,r0
56*c1da2a22SNobuhiro Iwamatsu	mov.w	r0,@r1
57*c1da2a22SNobuhiro Iwamatsu
58*c1da2a22SNobuhiro Iwamatsu	mov.l	LED_A,r1
59*c1da2a22SNobuhiro Iwamatsu	mov	#0xff,r0
60*c1da2a22SNobuhiro Iwamatsu	mov.w	r0,@r1
61*c1da2a22SNobuhiro Iwamatsu
62*c1da2a22SNobuhiro Iwamatsu	mov.l	MCR_A,r1
63*c1da2a22SNobuhiro Iwamatsu	mov.l	MCR_D1,r0
64*c1da2a22SNobuhiro Iwamatsu	mov.l	r0,@r1
65*c1da2a22SNobuhiro Iwamatsu
66*c1da2a22SNobuhiro Iwamatsu	mov.l	RTCNT_A,r1
67*c1da2a22SNobuhiro Iwamatsu	mov.l	RTCNT_D,r0
68*c1da2a22SNobuhiro Iwamatsu	mov.w	r0,@r1
69*c1da2a22SNobuhiro Iwamatsu
70*c1da2a22SNobuhiro Iwamatsu	mov.l	RTCOR_A,r1
71*c1da2a22SNobuhiro Iwamatsu	mov.l	RTCOR_D,r0
72*c1da2a22SNobuhiro Iwamatsu	mov.w	r0,@r1
73*c1da2a22SNobuhiro Iwamatsu
74*c1da2a22SNobuhiro Iwamatsu	mov.l	RFCR_A,r1
75*c1da2a22SNobuhiro Iwamatsu	mov.l	RFCR_D,r0
76*c1da2a22SNobuhiro Iwamatsu	mov.w	r0,@r1
77*c1da2a22SNobuhiro Iwamatsu
78*c1da2a22SNobuhiro Iwamatsu	mov.l	RTCSR_A,r1
79*c1da2a22SNobuhiro Iwamatsu	mov.l	RTCSR_D,r0
80*c1da2a22SNobuhiro Iwamatsu	mov.w	r0,@r1
81*c1da2a22SNobuhiro Iwamatsu
82*c1da2a22SNobuhiro Iwamatsu	mov.l	SDMR3_A,r1
83*c1da2a22SNobuhiro Iwamatsu	mov	#0x55,r0
84*c1da2a22SNobuhiro Iwamatsu	mov.b	r0,@r1
85*c1da2a22SNobuhiro Iwamatsu
86*c1da2a22SNobuhiro Iwamatsu	/* Wait DRAM refresh 30 times */
87*c1da2a22SNobuhiro Iwamatsu	mov.l	RFCR_A,r1
88*c1da2a22SNobuhiro Iwamatsu	mov	#30,r3
89*c1da2a22SNobuhiro Iwamatsu1:
90*c1da2a22SNobuhiro Iwamatsu	mov.w	@r1,r0
91*c1da2a22SNobuhiro Iwamatsu	extu.w	r0,r2
92*c1da2a22SNobuhiro Iwamatsu	cmp/hi	r3,r2
93*c1da2a22SNobuhiro Iwamatsu	bf	1b
94*c1da2a22SNobuhiro Iwamatsu
95*c1da2a22SNobuhiro Iwamatsu	mov.l	MCR_A,r1
96*c1da2a22SNobuhiro Iwamatsu	mov.l	MCR_D2,r0
97*c1da2a22SNobuhiro Iwamatsu	mov.l	r0,@r1
98*c1da2a22SNobuhiro Iwamatsu
99*c1da2a22SNobuhiro Iwamatsu	mov.l	SDMR3_A,r1
100*c1da2a22SNobuhiro Iwamatsu	mov	#0,r0
101*c1da2a22SNobuhiro Iwamatsu	mov.b	r0,@r1
102*c1da2a22SNobuhiro Iwamatsu
103*c1da2a22SNobuhiro Iwamatsu	mov.l	IRLMASK_A,r1
104*c1da2a22SNobuhiro Iwamatsu	mov.l	IRLMASK_D,r0
105*c1da2a22SNobuhiro Iwamatsu	mov.l	r0,@r1
106*c1da2a22SNobuhiro Iwamatsu
107*c1da2a22SNobuhiro Iwamatsu	mov.l	CCR_A, r1
108*c1da2a22SNobuhiro Iwamatsu	mov.l	CCR_D_E, r0
109*c1da2a22SNobuhiro Iwamatsu	mov.l	r0, @r1
110*c1da2a22SNobuhiro Iwamatsu
111*c1da2a22SNobuhiro Iwamatsu	rts
112*c1da2a22SNobuhiro Iwamatsu	nop
113*c1da2a22SNobuhiro Iwamatsu
114*c1da2a22SNobuhiro Iwamatsu	.align	2
115*c1da2a22SNobuhiro IwamatsuCCR_A:		.long	CCR		/* Cache Control Register */
116*c1da2a22SNobuhiro IwamatsuCCR_D_D:	.long	0x0808		/* Flush the cache, disable */
117*c1da2a22SNobuhiro IwamatsuCCR_D_E:	.long	0x8000090B
118*c1da2a22SNobuhiro Iwamatsu
119*c1da2a22SNobuhiro IwamatsuFRQCR_A:	.long	FRQCR		/* FRQCR Address */
120*c1da2a22SNobuhiro IwamatsuFRQCR_D:	.long	0x00000e0a	/* 03/07/15 modify */
121*c1da2a22SNobuhiro IwamatsuBCR1_A:	.long	BCR1		/* BCR1 Address */
122*c1da2a22SNobuhiro IwamatsuBCR1_D:	.long	0x00180008
123*c1da2a22SNobuhiro IwamatsuBCR2_A:	.long	BCR2		/* BCR2 Address */
124*c1da2a22SNobuhiro IwamatsuBCR2_D:	.long   0xabe8
125*c1da2a22SNobuhiro IwamatsuBCR3_A:	.long	BCR3		/* BCR3 Address */
126*c1da2a22SNobuhiro IwamatsuBCR3_D:	.long	0x0000
127*c1da2a22SNobuhiro IwamatsuBCR4_A:	.long	BCR4		/* BCR4 Address */
128*c1da2a22SNobuhiro IwamatsuBCR4_D:	.long	0x00000010
129*c1da2a22SNobuhiro IwamatsuWCR1_A:	.long	WCR1		/* WCR1 Address */
130*c1da2a22SNobuhiro IwamatsuWCR1_D:	.long	0x33343333
131*c1da2a22SNobuhiro IwamatsuWCR2_A:	.long	WCR2		/* WCR2 Address */
132*c1da2a22SNobuhiro IwamatsuWCR2_D:	.long	0xcff86fbf
133*c1da2a22SNobuhiro IwamatsuWCR3_A:	.long	WCR3		/* WCR3 Address */
134*c1da2a22SNobuhiro IwamatsuWCR3_D:	.long	0x07777707
135*c1da2a22SNobuhiro IwamatsuLED_A:		.long	0x04000036	/* LED Address */
136*c1da2a22SNobuhiro IwamatsuRTCNT_A:	.long	RTCNT		/* RTCNT Address */
137*c1da2a22SNobuhiro IwamatsuRTCNT_D:	.long	0xA500		/* RTCNT Write Code A5h Data 00h */
138*c1da2a22SNobuhiro IwamatsuRTCOR_A:	.long	RTCOR		/* RTCOR Address */
139*c1da2a22SNobuhiro IwamatsuRTCOR_D:	.long	0xA534		/* RTCOR Write Code  */
140*c1da2a22SNobuhiro IwamatsuRTCSR_A:	.long	RTCSR		/* RTCSR Address */
141*c1da2a22SNobuhiro IwamatsuRTCSR_D:	.long	0xA510		/* RTCSR Write Code */
142*c1da2a22SNobuhiro IwamatsuSDMR3_A:	.long   0xFF9400CC	/* SDMR3 Address */
143*c1da2a22SNobuhiro IwamatsuSDMR3_D:	.long	0x55
144*c1da2a22SNobuhiro IwamatsuMCR_A:		.long	MCR		/* MCR Address */
145*c1da2a22SNobuhiro IwamatsuMCR_D1:	.long	0x081901F4	/* MRSET:'0' */
146*c1da2a22SNobuhiro IwamatsuMCR_D2:	.long	0x481901F4	/* MRSET:'1' */
147*c1da2a22SNobuhiro IwamatsuRFCR_A:	.long	RFCR		/* RFCR Address */
148*c1da2a22SNobuhiro IwamatsuRFCR_D:	.long	0xA400		/* RFCR Write Code A4h Data 00h */
149*c1da2a22SNobuhiro IwamatsuPCR_A:		.long	PCR		/* PCR Address */
150*c1da2a22SNobuhiro IwamatsuPCR_D:		.long	0x0000
151*c1da2a22SNobuhiro IwamatsuMMUCR_A:	.long	MMUCR		/* MMUCCR Address */
152*c1da2a22SNobuhiro IwamatsuMMUCR_D:	.long	0x00000000	/* MMUCCR Data */
153*c1da2a22SNobuhiro IwamatsuIRLMASK_A:	.long	0xA4000000	/* IRLMASK Address */
154*c1da2a22SNobuhiro IwamatsuIRLMASK_D:	.long	0x00000000	/* IRLMASK Data */
155