xref: /rk3399_rockchip-uboot/board/mpr2/lowlevel_init.S (revision 3594f1987cca0cb0ea3ad64c6364389950ff3d48)
13313e0e2SMark Jonas/*
23313e0e2SMark Jonas * (C) Copyright 2008
33313e0e2SMark Jonas * Mark Jonas <mark.jonas@de.bosch.com>
43313e0e2SMark Jonas *
53313e0e2SMark Jonas * (C) Copyright 2007
63313e0e2SMark Jonas * Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
73313e0e2SMark Jonas *
83313e0e2SMark Jonas * board/mpr2/lowlevel_init.S
93313e0e2SMark Jonas *
103313e0e2SMark Jonas * This program is free software; you can redistribute it and/or
113313e0e2SMark Jonas * modify it under the terms of the GNU General Public License as
123313e0e2SMark Jonas * published by the Free Software Foundation; either version 2 of
133313e0e2SMark Jonas * the License, or (at your option) any later version.
143313e0e2SMark Jonas *
153313e0e2SMark Jonas * This program is distributed in the hope that it will be useful,
163313e0e2SMark Jonas * but WITHOUT ANY WARRANTY; without even the implied warranty of
173313e0e2SMark Jonas * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
183313e0e2SMark Jonas * GNU General Public License for more details.
193313e0e2SMark Jonas *
203313e0e2SMark Jonas * You should have received a copy of the GNU General Public License
213313e0e2SMark Jonas * along with this program; if not, write to the Free Software
223313e0e2SMark Jonas * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
233313e0e2SMark Jonas * MA 02111-1307 USA
243313e0e2SMark Jonas */
25f7e78f3bSJean-Christophe PLAGNIOL-VILLARD#include <asm/macro.h>
263313e0e2SMark Jonas
273313e0e2SMark Jonas	.global	lowlevel_init
283313e0e2SMark Jonas
293313e0e2SMark Jonas	.text
303313e0e2SMark Jonas	.align	2
313313e0e2SMark Jonas
323313e0e2SMark Jonaslowlevel_init:
333313e0e2SMark Jonas
343313e0e2SMark Jonas/*
353313e0e2SMark Jonas * Set frequency multipliers and dividers in FRQCR.
363313e0e2SMark Jonas */
37f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	WTCSR_A, WTCSR_D
383313e0e2SMark Jonas
39f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	WTCNT_A, WTCNT_D
403313e0e2SMark Jonas
41f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	FRQCR_A, FRQCR_D
423313e0e2SMark Jonas
433313e0e2SMark Jonas/*
443313e0e2SMark Jonas * Setup CS0 (Flash).
453313e0e2SMark Jonas */
46f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS0BCR_A, CS0BCR_D
473313e0e2SMark Jonas
48f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS0WCR_A, CS0WCR_D
493313e0e2SMark Jonas
503313e0e2SMark Jonas/*
513313e0e2SMark Jonas * Setup CS3 (SDRAM).
523313e0e2SMark Jonas */
53f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS3BCR_A, CS3BCR_D
543313e0e2SMark Jonas
55f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS3WCR_A, CS3WCR_D
563313e0e2SMark Jonas
57f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDCR_A, SDCR_D1
583313e0e2SMark Jonas
59f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RTCSR_A, RTCSR_D
603313e0e2SMark Jonas
61f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RTCNT_A, RTCNT_D
623313e0e2SMark Jonas
63f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RTCOR_A, RTCOR_D
643313e0e2SMark Jonas
65f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDCR_A, SDCR_D2
663313e0e2SMark Jonas
673313e0e2SMark Jonas	mov.l	SDMR3_A, r1
683313e0e2SMark Jonas	mov.l	SDMR3_D, r0
693313e0e2SMark Jonas	add	r0, r1
703313e0e2SMark Jonas	mov	#0, r0
713313e0e2SMark Jonas	mov.w	r0, @r1
723313e0e2SMark Jonas
733313e0e2SMark Jonas	rts
743313e0e2SMark Jonas	nop
753313e0e2SMark Jonas
763313e0e2SMark Jonas	.align 4
773313e0e2SMark Jonas
783313e0e2SMark Jonas/*
793313e0e2SMark Jonas * Configuration for MPR2 A.3 through A.7
803313e0e2SMark Jonas */
813313e0e2SMark Jonas
823313e0e2SMark Jonas/*
833313e0e2SMark Jonas * PLL Settings
843313e0e2SMark Jonas */
85*3594f198SNobuhiro IwamatsuFRQCR_D:	.word	0x1103		/* I:B:P=8:4:2 */
86*3594f198SNobuhiro IwamatsuWTCNT_D:	.word	0x5A00		/* start counting at zero */
87*3594f198SNobuhiro IwamatsuWTCSR_D:	.word	0xA507		/* divide by 4096 */
88*3594f198SNobuhiro Iwamatsu.align 2
893313e0e2SMark Jonas/*
903313e0e2SMark Jonas * Spansion S29GL256N11 @ 48 MHz
913313e0e2SMark Jonas */
92e4430779SJean-Christophe PLAGNIOL-VILLARD/* 1 idle cycle inserted, normal space, 16 bit */
93e4430779SJean-Christophe PLAGNIOL-VILLARDCS0BCR_D:	.long	0x12490400
94e4430779SJean-Christophe PLAGNIOL-VILLARD/* tSW=0.5ck, 6 wait cycles, NO external wait, tHW=0.5ck */
95e4430779SJean-Christophe PLAGNIOL-VILLARDCS0WCR_D:	.long	0x00000340
963313e0e2SMark Jonas
973313e0e2SMark Jonas/*
983313e0e2SMark Jonas * Samsung K4S511632B-UL75 @ 48 MHz
993313e0e2SMark Jonas * Micron MT48LC32M16A2-75 @ 48 MHz
1003313e0e2SMark Jonas */
101e4430779SJean-Christophe PLAGNIOL-VILLARD/* CS3BCR = 0x10004400, minimum idle cycles, SDRAM, 16 bit */
102e4430779SJean-Christophe PLAGNIOL-VILLARDCS3BCR_D:	.long	0x10004400
103e4430779SJean-Christophe PLAGNIOL-VILLARD/* tRP=1ck, tRCD=1ck, CL=2, tRWL=2ck, tRC=4ck */
104e4430779SJean-Christophe PLAGNIOL-VILLARDCS3WCR_D:	.long	0x00000091
105e4430779SJean-Christophe PLAGNIOL-VILLARD/* no refresh, 13 rows, 10 cols, NO bank active mode */
106e4430779SJean-Christophe PLAGNIOL-VILLARDSDCR_D1:	.long	0x00000012
1073313e0e2SMark JonasSDCR_D2:	.long	0x00000812	/* refresh */
1083313e0e2SMark JonasRTCSR_D:	.long	0xA55A0008	/* 1/4, once */
1093313e0e2SMark JonasRTCNT_D:	.long	0xA55A005D	/* count 93 */
1103313e0e2SMark JonasRTCOR_D:	.long	0xa55a005d	/* count 93 */
111e4430779SJean-Christophe PLAGNIOL-VILLARD/* mode register CL2, burst read and SINGLE WRITE */
112e4430779SJean-Christophe PLAGNIOL-VILLARDSDMR3_D:	.long	0x440
1133313e0e2SMark Jonas
1143313e0e2SMark Jonas/*
1153313e0e2SMark Jonas * Registers
1163313e0e2SMark Jonas */
1173313e0e2SMark Jonas
1183313e0e2SMark JonasFRQCR_A:	.long	0xA415FF80
1193313e0e2SMark JonasWTCNT_A:	.long	0xA415FF84
1203313e0e2SMark JonasWTCSR_A:	.long	0xA415FF86
1213313e0e2SMark Jonas
1223313e0e2SMark Jonas#define BSC_BASE	0xA4FD0000
1233313e0e2SMark JonasCS0BCR_A:	.long	BSC_BASE + 0x04
1243313e0e2SMark JonasCS3BCR_A:	.long	BSC_BASE + 0x0C
1253313e0e2SMark JonasCS0WCR_A:	.long	BSC_BASE + 0x24
1263313e0e2SMark JonasCS3WCR_A:	.long	BSC_BASE + 0x2C
1273313e0e2SMark JonasSDCR_A:		.long	BSC_BASE + 0x44
1283313e0e2SMark JonasRTCSR_A:	.long	BSC_BASE + 0x48
1293313e0e2SMark JonasRTCNT_A:	.long	BSC_BASE + 0x4C
1303313e0e2SMark JonasRTCOR_A:	.long	BSC_BASE + 0x50
1313313e0e2SMark JonasSDMR3_A:	.long	BSC_BASE + 0x5000
132