1*6d1d5cf9SNobuhiro Iwamatsu/*
2*6d1d5cf9SNobuhiro Iwamatsu * Copyright (C) 2011 Renesas Solutions Corp.
3*6d1d5cf9SNobuhiro Iwamatsu * Copyright (C) 2011 Nobuhiro Iwamatsu <nobuhiro.Iwamatsu.yj@renesas.com>
4*6d1d5cf9SNobuhiro Iwamatsu *
5*6d1d5cf9SNobuhiro Iwamatsu * board/renesas/ecovec/lowlevel_init.S
6*6d1d5cf9SNobuhiro Iwamatsu *
7*6d1d5cf9SNobuhiro Iwamatsu * This program is free software; you can redistribute it and/or
8*6d1d5cf9SNobuhiro Iwamatsu * modify it under the terms of the GNU General Public License as
9*6d1d5cf9SNobuhiro Iwamatsu * published by the Free Software Foundation; either version 2 of
10*6d1d5cf9SNobuhiro Iwamatsu * the License, or (at your option) any later version.
11*6d1d5cf9SNobuhiro Iwamatsu *
12*6d1d5cf9SNobuhiro Iwamatsu * This program is distributed in the hope that it will be useful,
13*6d1d5cf9SNobuhiro Iwamatsu * but WITHOUT ANY WARRANTY; without even the implied warranty of
14*6d1d5cf9SNobuhiro Iwamatsu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*6d1d5cf9SNobuhiro Iwamatsu * GNU General Public License for more details.
16*6d1d5cf9SNobuhiro Iwamatsu *
17*6d1d5cf9SNobuhiro Iwamatsu * You should have received a copy of the GNU General Public License
18*6d1d5cf9SNobuhiro Iwamatsu * along with this program; if not, write to the Free Software
19*6d1d5cf9SNobuhiro Iwamatsu * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20*6d1d5cf9SNobuhiro Iwamatsu * MA 02111-1307 USA
21*6d1d5cf9SNobuhiro Iwamatsu */
22*6d1d5cf9SNobuhiro Iwamatsu
23*6d1d5cf9SNobuhiro Iwamatsu#include <config.h>
24*6d1d5cf9SNobuhiro Iwamatsu#include <version.h>
25*6d1d5cf9SNobuhiro Iwamatsu#include <asm/processor.h>
26*6d1d5cf9SNobuhiro Iwamatsu#include <asm/macro.h>
27*6d1d5cf9SNobuhiro Iwamatsu#include <configs/ecovec.h>
28*6d1d5cf9SNobuhiro Iwamatsu
29*6d1d5cf9SNobuhiro Iwamatsu	.global	lowlevel_init
30*6d1d5cf9SNobuhiro Iwamatsu
31*6d1d5cf9SNobuhiro Iwamatsu	.text
32*6d1d5cf9SNobuhiro Iwamatsu	.align	2
33*6d1d5cf9SNobuhiro Iwamatsu
34*6d1d5cf9SNobuhiro Iwamatsulowlevel_init:
35*6d1d5cf9SNobuhiro Iwamatsu
36*6d1d5cf9SNobuhiro Iwamatsu	/* jump to 0xA0020000 if bit 1 of PVDR_A */
37*6d1d5cf9SNobuhiro Iwamatsu	mov.l	PVDR_A, r1
38*6d1d5cf9SNobuhiro Iwamatsu	mov.l	PVDR_D, r2
39*6d1d5cf9SNobuhiro Iwamatsu	mov.b	@r1, r0
40*6d1d5cf9SNobuhiro Iwamatsu	tst	r0, r2
41*6d1d5cf9SNobuhiro Iwamatsu	bt	1f
42*6d1d5cf9SNobuhiro Iwamatsu	mov.l	JUMP_A, r1
43*6d1d5cf9SNobuhiro Iwamatsu	jmp	@r1
44*6d1d5cf9SNobuhiro Iwamatsu	nop
45*6d1d5cf9SNobuhiro Iwamatsu
46*6d1d5cf9SNobuhiro Iwamatsu1:
47*6d1d5cf9SNobuhiro Iwamatsu	/* Disable watchdog */
48*6d1d5cf9SNobuhiro Iwamatsu	write16 RWTCSR_A, RWTCSR_D
49*6d1d5cf9SNobuhiro Iwamatsu
50*6d1d5cf9SNobuhiro Iwamatsu	/* MMU Disable */
51*6d1d5cf9SNobuhiro Iwamatsu	write32 MMUCR_A, MMUCR_D
52*6d1d5cf9SNobuhiro Iwamatsu
53*6d1d5cf9SNobuhiro Iwamatsu	/* Setup clocks */
54*6d1d5cf9SNobuhiro Iwamatsu	write32 PLLCR_A, PLLCR_D
55*6d1d5cf9SNobuhiro Iwamatsu	write32 FRQCRA_A, FRQCRA_D
56*6d1d5cf9SNobuhiro Iwamatsu	write32 FRQCRB_A, FRQCRB_D
57*6d1d5cf9SNobuhiro Iwamatsu
58*6d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
59*6d1d5cf9SNobuhiro Iwamatsu
60*6d1d5cf9SNobuhiro Iwamatsu	write32 MMSELR_A, MMSELR_D
61*6d1d5cf9SNobuhiro Iwamatsu
62*6d1d5cf9SNobuhiro Iwamatsu	/* Srtup BSC */
63*6d1d5cf9SNobuhiro Iwamatsu	write32 CMNCR_A, CMNCR_D
64*6d1d5cf9SNobuhiro Iwamatsu	write32 CS0BCR_A, CS0BCR_D
65*6d1d5cf9SNobuhiro Iwamatsu	write32 CS0WCR_A, CS0WCR_D
66*6d1d5cf9SNobuhiro Iwamatsu
67*6d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
68*6d1d5cf9SNobuhiro Iwamatsu
69*6d1d5cf9SNobuhiro Iwamatsu	/* Setup SDRAM */
70*6d1d5cf9SNobuhiro Iwamatsu	write32 DBPDCNT0_A,	DBPDCNT0_D0
71*6d1d5cf9SNobuhiro Iwamatsu	write32 DBCONF_A,	DBCONF_D
72*6d1d5cf9SNobuhiro Iwamatsu	write32 DBTR0_A,	DBTR0_D
73*6d1d5cf9SNobuhiro Iwamatsu	write32 DBTR1_A,	DBTR1_D
74*6d1d5cf9SNobuhiro Iwamatsu	write32 DBTR2_A,	DBTR2_D
75*6d1d5cf9SNobuhiro Iwamatsu	write32 DBTR3_A,	DBTR3_D
76*6d1d5cf9SNobuhiro Iwamatsu	write32 DBKIND_A,	DBKIND_D
77*6d1d5cf9SNobuhiro Iwamatsu	write32 DBCKECNT_A,	DBCKECNT_D
78*6d1d5cf9SNobuhiro Iwamatsu
79*6d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
80*6d1d5cf9SNobuhiro Iwamatsu
81*6d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A,	DBCMDCNT_D0
82*6d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D0
83*6d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D1
84*6d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D2
85*6d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D3
86*6d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D0
87*6d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D1
88*6d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D1
89*6d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D4
90*6d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D5
91*6d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D6
92*6d1d5cf9SNobuhiro Iwamatsu
93*6d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
94*6d1d5cf9SNobuhiro Iwamatsu
95*6d1d5cf9SNobuhiro Iwamatsu	write32 DBEN_A, DBEN_D
96*6d1d5cf9SNobuhiro Iwamatsu	write32 DBRFPDN1_A, DBRFPDN1_D
97*6d1d5cf9SNobuhiro Iwamatsu	write32 DBRFPDN2_A, DBRFPDN2_D
98*6d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D0
99*6d1d5cf9SNobuhiro Iwamatsu
100*6d1d5cf9SNobuhiro Iwamatsu
101*6d1d5cf9SNobuhiro Iwamatsu	/* Dummy read */
102*6d1d5cf9SNobuhiro Iwamatsu	mov.l DUMMY_A ,r1
103*6d1d5cf9SNobuhiro Iwamatsu	synco
104*6d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
105*6d1d5cf9SNobuhiro Iwamatsu	synco
106*6d1d5cf9SNobuhiro Iwamatsu
107*6d1d5cf9SNobuhiro Iwamatsu	mov.l SDRAM_A ,r1
108*6d1d5cf9SNobuhiro Iwamatsu	synco
109*6d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
110*6d1d5cf9SNobuhiro Iwamatsu	synco
111*6d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
112*6d1d5cf9SNobuhiro Iwamatsu
113*6d1d5cf9SNobuhiro Iwamatsu	add #4, r1
114*6d1d5cf9SNobuhiro Iwamatsu	synco
115*6d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
116*6d1d5cf9SNobuhiro Iwamatsu	synco
117*6d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
118*6d1d5cf9SNobuhiro Iwamatsu
119*6d1d5cf9SNobuhiro Iwamatsu	add #4, r1
120*6d1d5cf9SNobuhiro Iwamatsu	synco
121*6d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
122*6d1d5cf9SNobuhiro Iwamatsu	synco
123*6d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
124*6d1d5cf9SNobuhiro Iwamatsu
125*6d1d5cf9SNobuhiro Iwamatsu	add #4, r1
126*6d1d5cf9SNobuhiro Iwamatsu	synco
127*6d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
128*6d1d5cf9SNobuhiro Iwamatsu	synco
129*6d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
130*6d1d5cf9SNobuhiro Iwamatsu
131*6d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D0
132*6d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D1
133*6d1d5cf9SNobuhiro Iwamatsu	write32 DBPDCNT0_A, DBPDCNT0_D1
134*6d1d5cf9SNobuhiro Iwamatsu	write32 DBRFPDN0_A, DBRFPDN0_D
135*6d1d5cf9SNobuhiro Iwamatsu
136*6d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
137*6d1d5cf9SNobuhiro Iwamatsu
138*6d1d5cf9SNobuhiro Iwamatsu	write32 CCR_A, CCR_D
139*6d1d5cf9SNobuhiro Iwamatsu
140*6d1d5cf9SNobuhiro Iwamatsu	stc	sr, r0
141*6d1d5cf9SNobuhiro Iwamatsu	mov.l	SR_MASK_D, r1
142*6d1d5cf9SNobuhiro Iwamatsu	and	r1, r0
143*6d1d5cf9SNobuhiro Iwamatsu	ldc	r0, sr
144*6d1d5cf9SNobuhiro Iwamatsu
145*6d1d5cf9SNobuhiro Iwamatsu	rts
146*6d1d5cf9SNobuhiro Iwamatsu
147*6d1d5cf9SNobuhiro Iwamatsu	.align	2
148*6d1d5cf9SNobuhiro Iwamatsu
149*6d1d5cf9SNobuhiro IwamatsuPVDR_A:		.long	PVDR
150*6d1d5cf9SNobuhiro IwamatsuPVDR_D:		.long	0x00000001
151*6d1d5cf9SNobuhiro IwamatsuJUMP_A:		.long	CONFIG_ECOVEC_ROMIMAGE_ADDR
152*6d1d5cf9SNobuhiro IwamatsuTIMER_D:	.long	64
153*6d1d5cf9SNobuhiro IwamatsuRWTCSR_A:	.long	RWTCSR
154*6d1d5cf9SNobuhiro IwamatsuRWTCSR_D:	.long	0x0000A507
155*6d1d5cf9SNobuhiro IwamatsuMMUCR_A:	.long	MMUCR
156*6d1d5cf9SNobuhiro IwamatsuMMUCR_D:	.long	0x00000004
157*6d1d5cf9SNobuhiro IwamatsuPLLCR_A:	.long	PLLCR
158*6d1d5cf9SNobuhiro IwamatsuPLLCR_D:	.long	0x00004000
159*6d1d5cf9SNobuhiro IwamatsuFRQCRA_A:	.long	FRQCRA
160*6d1d5cf9SNobuhiro IwamatsuFRQCRA_D:	.long	0x8E003508
161*6d1d5cf9SNobuhiro IwamatsuFRQCRB_A:	.long	FRQCRB
162*6d1d5cf9SNobuhiro IwamatsuFRQCRB_D:	.long	0x0
163*6d1d5cf9SNobuhiro IwamatsuMMSELR_A:	.long	MMSELR
164*6d1d5cf9SNobuhiro IwamatsuMMSELR_D:	.long	0xA5A50000
165*6d1d5cf9SNobuhiro IwamatsuCMNCR_A:	.long	CMNCR
166*6d1d5cf9SNobuhiro IwamatsuCMNCR_D:	.long	0x00000013
167*6d1d5cf9SNobuhiro IwamatsuCS0BCR_A:	.long	CS0BCR
168*6d1d5cf9SNobuhiro IwamatsuCS0BCR_D:	.long	0x11110400
169*6d1d5cf9SNobuhiro IwamatsuCS0WCR_A:	.long	CS0WCR
170*6d1d5cf9SNobuhiro IwamatsuCS0WCR_D:	.long	0x00000440
171*6d1d5cf9SNobuhiro IwamatsuDBPDCNT0_A:	.long	DBPDCNT0
172*6d1d5cf9SNobuhiro IwamatsuDBPDCNT0_D0: .long	0x00000181
173*6d1d5cf9SNobuhiro IwamatsuDBPDCNT0_D1: .long	0x00000080
174*6d1d5cf9SNobuhiro IwamatsuDBCONF_A:	.long	DBCONF
175*6d1d5cf9SNobuhiro IwamatsuDBCONF_D:	.long	0x015B0002
176*6d1d5cf9SNobuhiro IwamatsuDBTR0_A:	.long 	DBTR0
177*6d1d5cf9SNobuhiro IwamatsuDBTR0_D:	.long 	0x03061502
178*6d1d5cf9SNobuhiro IwamatsuDBTR1_A:	.long	DBTR1
179*6d1d5cf9SNobuhiro IwamatsuDBTR1_D:	.long	0x02020102
180*6d1d5cf9SNobuhiro IwamatsuDBTR2_A:	.long	DBTR2
181*6d1d5cf9SNobuhiro IwamatsuDBTR2_D:	.long	0x01090305
182*6d1d5cf9SNobuhiro IwamatsuDBTR3_A:	.long	DBTR3
183*6d1d5cf9SNobuhiro IwamatsuDBTR3_D:	.long	0x00000002
184*6d1d5cf9SNobuhiro IwamatsuDBKIND_A:	.long	DBKIND
185*6d1d5cf9SNobuhiro IwamatsuDBKIND_D:	.long	0x00000005
186*6d1d5cf9SNobuhiro IwamatsuDBCKECNT_A:	.long	DBCKECNT
187*6d1d5cf9SNobuhiro IwamatsuDBCKECNT_D:	.long	0x00000001
188*6d1d5cf9SNobuhiro IwamatsuDBCMDCNT_A:	.long	DBCMDCNT
189*6d1d5cf9SNobuhiro IwamatsuDBCMDCNT_D0:.long	0x2
190*6d1d5cf9SNobuhiro IwamatsuDBCMDCNT_D1:.long	0x4
191*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_A:	.long	DBMRCNT
192*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D0:	.long	0x00020000
193*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D1:	.long	0x00030000
194*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D2:	.long	0x00010040
195*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D3:	.long	0x00000532
196*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D4:	.long	0x00000432
197*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D5:	.long	0x000103C0
198*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D6:	.long	0x00010040
199*6d1d5cf9SNobuhiro IwamatsuDBEN_A:		.long	DBEN
200*6d1d5cf9SNobuhiro IwamatsuDBEN_D:		.long	0x01
201*6d1d5cf9SNobuhiro IwamatsuDBRFPDN0_A:	.long	DBRFPDN0
202*6d1d5cf9SNobuhiro IwamatsuDBRFPDN1_A:	.long	DBRFPDN1
203*6d1d5cf9SNobuhiro IwamatsuDBRFPDN2_A:	.long	DBRFPDN2
204*6d1d5cf9SNobuhiro IwamatsuDBRFPDN0_D:	.long	0x00010000
205*6d1d5cf9SNobuhiro IwamatsuDBRFPDN1_D:	.long	0x00000613
206*6d1d5cf9SNobuhiro IwamatsuDBRFPDN2_D:	.long	0x238C003A
207*6d1d5cf9SNobuhiro IwamatsuSDRAM_A:	.long	0xa8000000
208*6d1d5cf9SNobuhiro IwamatsuDUMMY_A:	.long	0x0c400000
209*6d1d5cf9SNobuhiro IwamatsuCCR_A:		.long	CCR
210*6d1d5cf9SNobuhiro IwamatsuCCR_D:		.long	0x0000090B
211*6d1d5cf9SNobuhiro IwamatsuSR_MASK_D:	.long	0xEFFFFF0F
212