xref: /rk3399_rockchip-uboot/board/renesas/ecovec/lowlevel_init.S (revision 7682a99826a624d3764656b5bb31f88e2f8b235b)
16d1d5cf9SNobuhiro Iwamatsu/*
26d1d5cf9SNobuhiro Iwamatsu * Copyright (C) 2011 Renesas Solutions Corp.
36d1d5cf9SNobuhiro Iwamatsu * Copyright (C) 2011 Nobuhiro Iwamatsu <nobuhiro.Iwamatsu.yj@renesas.com>
46d1d5cf9SNobuhiro Iwamatsu *
56d1d5cf9SNobuhiro Iwamatsu * board/renesas/ecovec/lowlevel_init.S
66d1d5cf9SNobuhiro Iwamatsu *
71a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
86d1d5cf9SNobuhiro Iwamatsu */
96d1d5cf9SNobuhiro Iwamatsu
106d1d5cf9SNobuhiro Iwamatsu#include <config.h>
116d1d5cf9SNobuhiro Iwamatsu#include <asm/processor.h>
126d1d5cf9SNobuhiro Iwamatsu#include <asm/macro.h>
136d1d5cf9SNobuhiro Iwamatsu#include <configs/ecovec.h>
146d1d5cf9SNobuhiro Iwamatsu
156d1d5cf9SNobuhiro Iwamatsu	.global	lowlevel_init
166d1d5cf9SNobuhiro Iwamatsu
176d1d5cf9SNobuhiro Iwamatsu	.text
186d1d5cf9SNobuhiro Iwamatsu	.align	2
196d1d5cf9SNobuhiro Iwamatsu
206d1d5cf9SNobuhiro Iwamatsulowlevel_init:
216d1d5cf9SNobuhiro Iwamatsu
22*194ba5d4SBaruch Siach	/* jump to CONFIG_ECOVEC_ROMIMAGE_ADDR if bit 1 of PVDR_A */
236d1d5cf9SNobuhiro Iwamatsu	mov.l	PVDR_A, r1
246d1d5cf9SNobuhiro Iwamatsu	mov.l	PVDR_D, r2
256d1d5cf9SNobuhiro Iwamatsu	mov.b	@r1, r0
266d1d5cf9SNobuhiro Iwamatsu	tst	r0, r2
276d1d5cf9SNobuhiro Iwamatsu	bt	1f
286d1d5cf9SNobuhiro Iwamatsu	mov.l	JUMP_A, r1
296d1d5cf9SNobuhiro Iwamatsu	jmp	@r1
306d1d5cf9SNobuhiro Iwamatsu	nop
316d1d5cf9SNobuhiro Iwamatsu
326d1d5cf9SNobuhiro Iwamatsu1:
336d1d5cf9SNobuhiro Iwamatsu	/* Disable watchdog */
346d1d5cf9SNobuhiro Iwamatsu	write16 RWTCSR_A, RWTCSR_D
356d1d5cf9SNobuhiro Iwamatsu
366d1d5cf9SNobuhiro Iwamatsu	/* MMU Disable */
376d1d5cf9SNobuhiro Iwamatsu	write32 MMUCR_A, MMUCR_D
386d1d5cf9SNobuhiro Iwamatsu
396d1d5cf9SNobuhiro Iwamatsu	/* Setup clocks */
406d1d5cf9SNobuhiro Iwamatsu	write32 PLLCR_A, PLLCR_D
416d1d5cf9SNobuhiro Iwamatsu	write32 FRQCRA_A, FRQCRA_D
426d1d5cf9SNobuhiro Iwamatsu	write32 FRQCRB_A, FRQCRB_D
436d1d5cf9SNobuhiro Iwamatsu
446d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
456d1d5cf9SNobuhiro Iwamatsu
466d1d5cf9SNobuhiro Iwamatsu	write32 MMSELR_A, MMSELR_D
476d1d5cf9SNobuhiro Iwamatsu
486d1d5cf9SNobuhiro Iwamatsu	/* Srtup BSC */
496d1d5cf9SNobuhiro Iwamatsu	write32 CMNCR_A, CMNCR_D
506d1d5cf9SNobuhiro Iwamatsu	write32 CS0BCR_A, CS0BCR_D
516d1d5cf9SNobuhiro Iwamatsu	write32 CS0WCR_A, CS0WCR_D
526d1d5cf9SNobuhiro Iwamatsu
536d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
546d1d5cf9SNobuhiro Iwamatsu
556d1d5cf9SNobuhiro Iwamatsu	/* Setup SDRAM */
566d1d5cf9SNobuhiro Iwamatsu	write32 DBPDCNT0_A,	DBPDCNT0_D0
576d1d5cf9SNobuhiro Iwamatsu	write32 DBCONF_A,	DBCONF_D
586d1d5cf9SNobuhiro Iwamatsu	write32 DBTR0_A,	DBTR0_D
596d1d5cf9SNobuhiro Iwamatsu	write32 DBTR1_A,	DBTR1_D
606d1d5cf9SNobuhiro Iwamatsu	write32 DBTR2_A,	DBTR2_D
616d1d5cf9SNobuhiro Iwamatsu	write32 DBTR3_A,	DBTR3_D
626d1d5cf9SNobuhiro Iwamatsu	write32 DBKIND_A,	DBKIND_D
636d1d5cf9SNobuhiro Iwamatsu	write32 DBCKECNT_A,	DBCKECNT_D
646d1d5cf9SNobuhiro Iwamatsu
656d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
666d1d5cf9SNobuhiro Iwamatsu
676d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A,	DBCMDCNT_D0
686d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D0
696d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D1
706d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D2
716d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D3
726d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D0
736d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D1
746d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D1
756d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D4
766d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D5
776d1d5cf9SNobuhiro Iwamatsu	write32 DBMRCNT_A, DBMRCNT_D6
786d1d5cf9SNobuhiro Iwamatsu
796d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
806d1d5cf9SNobuhiro Iwamatsu
816d1d5cf9SNobuhiro Iwamatsu	write32 DBEN_A, DBEN_D
826d1d5cf9SNobuhiro Iwamatsu	write32 DBRFPDN1_A, DBRFPDN1_D
836d1d5cf9SNobuhiro Iwamatsu	write32 DBRFPDN2_A, DBRFPDN2_D
846d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D0
856d1d5cf9SNobuhiro Iwamatsu
866d1d5cf9SNobuhiro Iwamatsu
876d1d5cf9SNobuhiro Iwamatsu	/* Dummy read */
886d1d5cf9SNobuhiro Iwamatsu	mov.l DUMMY_A ,r1
896d1d5cf9SNobuhiro Iwamatsu	synco
906d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
916d1d5cf9SNobuhiro Iwamatsu	synco
926d1d5cf9SNobuhiro Iwamatsu
936d1d5cf9SNobuhiro Iwamatsu	mov.l SDRAM_A ,r1
946d1d5cf9SNobuhiro Iwamatsu	synco
956d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
966d1d5cf9SNobuhiro Iwamatsu	synco
976d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
986d1d5cf9SNobuhiro Iwamatsu
996d1d5cf9SNobuhiro Iwamatsu	add #4, r1
1006d1d5cf9SNobuhiro Iwamatsu	synco
1016d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
1026d1d5cf9SNobuhiro Iwamatsu	synco
1036d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
1046d1d5cf9SNobuhiro Iwamatsu
1056d1d5cf9SNobuhiro Iwamatsu	add #4, r1
1066d1d5cf9SNobuhiro Iwamatsu	synco
1076d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
1086d1d5cf9SNobuhiro Iwamatsu	synco
1096d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
1106d1d5cf9SNobuhiro Iwamatsu
1116d1d5cf9SNobuhiro Iwamatsu	add #4, r1
1126d1d5cf9SNobuhiro Iwamatsu	synco
1136d1d5cf9SNobuhiro Iwamatsu	mov.l @r1, r0
1146d1d5cf9SNobuhiro Iwamatsu	synco
1156d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
1166d1d5cf9SNobuhiro Iwamatsu
1176d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D0
1186d1d5cf9SNobuhiro Iwamatsu	write32 DBCMDCNT_A, DBCMDCNT_D1
1196d1d5cf9SNobuhiro Iwamatsu	write32 DBPDCNT0_A, DBPDCNT0_D1
1206d1d5cf9SNobuhiro Iwamatsu	write32 DBRFPDN0_A, DBRFPDN0_D
1216d1d5cf9SNobuhiro Iwamatsu
1226d1d5cf9SNobuhiro Iwamatsu	wait_timer TIMER_D
1236d1d5cf9SNobuhiro Iwamatsu
1246d1d5cf9SNobuhiro Iwamatsu	write32 CCR_A, CCR_D
1256d1d5cf9SNobuhiro Iwamatsu
1266d1d5cf9SNobuhiro Iwamatsu	stc	sr, r0
1276d1d5cf9SNobuhiro Iwamatsu	mov.l	SR_MASK_D, r1
1286d1d5cf9SNobuhiro Iwamatsu	and	r1, r0
1296d1d5cf9SNobuhiro Iwamatsu	ldc	r0, sr
1306d1d5cf9SNobuhiro Iwamatsu
1316d1d5cf9SNobuhiro Iwamatsu	rts
1326d1d5cf9SNobuhiro Iwamatsu
1336d1d5cf9SNobuhiro Iwamatsu	.align	2
1346d1d5cf9SNobuhiro Iwamatsu
1356d1d5cf9SNobuhiro IwamatsuPVDR_A:		.long	PVDR
1366d1d5cf9SNobuhiro IwamatsuPVDR_D:		.long	0x00000001
1376d1d5cf9SNobuhiro IwamatsuJUMP_A:		.long	CONFIG_ECOVEC_ROMIMAGE_ADDR
1386d1d5cf9SNobuhiro IwamatsuTIMER_D:	.long	64
1396d1d5cf9SNobuhiro IwamatsuRWTCSR_A:	.long	RWTCSR
1406d1d5cf9SNobuhiro IwamatsuRWTCSR_D:	.long	0x0000A507
1416d1d5cf9SNobuhiro IwamatsuMMUCR_A:	.long	MMUCR
1426d1d5cf9SNobuhiro IwamatsuMMUCR_D:	.long	0x00000004
1436d1d5cf9SNobuhiro IwamatsuPLLCR_A:	.long	PLLCR
1446d1d5cf9SNobuhiro IwamatsuPLLCR_D:	.long	0x00004000
1456d1d5cf9SNobuhiro IwamatsuFRQCRA_A:	.long	FRQCRA
1466d1d5cf9SNobuhiro IwamatsuFRQCRA_D:	.long	0x8E003508
1476d1d5cf9SNobuhiro IwamatsuFRQCRB_A:	.long	FRQCRB
1486d1d5cf9SNobuhiro IwamatsuFRQCRB_D:	.long	0x0
1496d1d5cf9SNobuhiro IwamatsuMMSELR_A:	.long	MMSELR
1506d1d5cf9SNobuhiro IwamatsuMMSELR_D:	.long	0xA5A50000
1516d1d5cf9SNobuhiro IwamatsuCMNCR_A:	.long	CMNCR
1526d1d5cf9SNobuhiro IwamatsuCMNCR_D:	.long	0x00000013
1536d1d5cf9SNobuhiro IwamatsuCS0BCR_A:	.long	CS0BCR
1546d1d5cf9SNobuhiro IwamatsuCS0BCR_D:	.long	0x11110400
1556d1d5cf9SNobuhiro IwamatsuCS0WCR_A:	.long	CS0WCR
1566d1d5cf9SNobuhiro IwamatsuCS0WCR_D:	.long	0x00000440
1576d1d5cf9SNobuhiro IwamatsuDBPDCNT0_A:	.long	DBPDCNT0
1586d1d5cf9SNobuhiro IwamatsuDBPDCNT0_D0: .long	0x00000181
1596d1d5cf9SNobuhiro IwamatsuDBPDCNT0_D1: .long	0x00000080
1606d1d5cf9SNobuhiro IwamatsuDBCONF_A:	.long	DBCONF
1616d1d5cf9SNobuhiro IwamatsuDBCONF_D:	.long	0x015B0002
1626d1d5cf9SNobuhiro IwamatsuDBTR0_A:	.long 	DBTR0
1636d1d5cf9SNobuhiro IwamatsuDBTR0_D:	.long 	0x03061502
1646d1d5cf9SNobuhiro IwamatsuDBTR1_A:	.long	DBTR1
1656d1d5cf9SNobuhiro IwamatsuDBTR1_D:	.long	0x02020102
1666d1d5cf9SNobuhiro IwamatsuDBTR2_A:	.long	DBTR2
1676d1d5cf9SNobuhiro IwamatsuDBTR2_D:	.long	0x01090305
1686d1d5cf9SNobuhiro IwamatsuDBTR3_A:	.long	DBTR3
1696d1d5cf9SNobuhiro IwamatsuDBTR3_D:	.long	0x00000002
1706d1d5cf9SNobuhiro IwamatsuDBKIND_A:	.long	DBKIND
1716d1d5cf9SNobuhiro IwamatsuDBKIND_D:	.long	0x00000005
1726d1d5cf9SNobuhiro IwamatsuDBCKECNT_A:	.long	DBCKECNT
1736d1d5cf9SNobuhiro IwamatsuDBCKECNT_D:	.long	0x00000001
1746d1d5cf9SNobuhiro IwamatsuDBCMDCNT_A:	.long	DBCMDCNT
1756d1d5cf9SNobuhiro IwamatsuDBCMDCNT_D0:.long	0x2
1766d1d5cf9SNobuhiro IwamatsuDBCMDCNT_D1:.long	0x4
1776d1d5cf9SNobuhiro IwamatsuDBMRCNT_A:	.long	DBMRCNT
1786d1d5cf9SNobuhiro IwamatsuDBMRCNT_D0:	.long	0x00020000
1796d1d5cf9SNobuhiro IwamatsuDBMRCNT_D1:	.long	0x00030000
1806d1d5cf9SNobuhiro IwamatsuDBMRCNT_D2:	.long	0x00010040
1816d1d5cf9SNobuhiro IwamatsuDBMRCNT_D3:	.long	0x00000532
1826d1d5cf9SNobuhiro IwamatsuDBMRCNT_D4:	.long	0x00000432
1836d1d5cf9SNobuhiro IwamatsuDBMRCNT_D5:	.long	0x000103C0
1846d1d5cf9SNobuhiro IwamatsuDBMRCNT_D6:	.long	0x00010040
1856d1d5cf9SNobuhiro IwamatsuDBEN_A:		.long	DBEN
1866d1d5cf9SNobuhiro IwamatsuDBEN_D:		.long	0x01
1876d1d5cf9SNobuhiro IwamatsuDBRFPDN0_A:	.long	DBRFPDN0
1886d1d5cf9SNobuhiro IwamatsuDBRFPDN1_A:	.long	DBRFPDN1
1896d1d5cf9SNobuhiro IwamatsuDBRFPDN2_A:	.long	DBRFPDN2
1906d1d5cf9SNobuhiro IwamatsuDBRFPDN0_D:	.long	0x00010000
1916d1d5cf9SNobuhiro IwamatsuDBRFPDN1_D:	.long	0x00000613
1926d1d5cf9SNobuhiro IwamatsuDBRFPDN2_D:	.long	0x238C003A
1936d1d5cf9SNobuhiro IwamatsuSDRAM_A:	.long	0xa8000000
1946d1d5cf9SNobuhiro IwamatsuDUMMY_A:	.long	0x0c400000
1956d1d5cf9SNobuhiro IwamatsuCCR_A:		.long	CCR
1966d1d5cf9SNobuhiro IwamatsuCCR_D:		.long	0x0000090B
1976d1d5cf9SNobuhiro IwamatsuSR_MASK_D:	.long	0xEFFFFF0F
198