xref: /rk3399_rockchip-uboot/board/renesas/sh7763rdp/lowlevel_init.S (revision 7682a99826a624d3764656b5bb31f88e2f8b235b)
178385bf2SNobuhiro Iwamatsu/*
278385bf2SNobuhiro Iwamatsu * Copyright (C) 2008 Renesas Solutions Corp.
378385bf2SNobuhiro Iwamatsu * Copyright (C) 2008 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
478385bf2SNobuhiro Iwamatsu * Copyright (C) 2007 Kenati Technologies, Inc.
578385bf2SNobuhiro Iwamatsu *
678385bf2SNobuhiro Iwamatsu * board/sh7763rdp/lowlevel_init.S
778385bf2SNobuhiro Iwamatsu *
8*1a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
978385bf2SNobuhiro Iwamatsu */
1078385bf2SNobuhiro Iwamatsu
1178385bf2SNobuhiro Iwamatsu#include <config.h>
1278385bf2SNobuhiro Iwamatsu
1378385bf2SNobuhiro Iwamatsu#include <asm/processor.h>
14f7e78f3bSJean-Christophe PLAGNIOL-VILLARD#include <asm/macro.h>
1578385bf2SNobuhiro Iwamatsu
1678385bf2SNobuhiro Iwamatsu	.global	lowlevel_init
1778385bf2SNobuhiro Iwamatsu
1878385bf2SNobuhiro Iwamatsu	.text
1978385bf2SNobuhiro Iwamatsu	.align	2
2078385bf2SNobuhiro Iwamatsu
2178385bf2SNobuhiro Iwamatsulowlevel_init:
2278385bf2SNobuhiro Iwamatsu
23f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	WDTCSR_A, WDTCSR_D	/* Watchdog Control / Status Register */
2478385bf2SNobuhiro Iwamatsu
25f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	WDTST_A, WDTST_D	/* Watchdog Stop Time Register */
2678385bf2SNobuhiro Iwamatsu
27f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	WDTBST_A, WDTBST_D	/*
28f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					 * 0xFFCC0008
29f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					 * Watchdog Base Stop Time Register
30f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					 */
3178385bf2SNobuhiro Iwamatsu
32f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CCR_A, CCR_CACHE_ICI_D	/* Address of Cache Control Register */
33f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					/* Instruction Cache Invalidate */
3478385bf2SNobuhiro Iwamatsu
35f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MMUCR_A, MMU_CONTROL_TI_D	/* MMU Control Register */
36f7e78f3bSJean-Christophe PLAGNIOL-VILLARD						/* TI == TLB Invalidate bit */
3778385bf2SNobuhiro Iwamatsu
38f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MSTPCR0_A, MSTPCR0_D	/* Address of Power Control Register 0 */
3978385bf2SNobuhiro Iwamatsu
40f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MSTPCR1_A, MSTPCR1_D	/* Address of Power Control Register 1 */
4178385bf2SNobuhiro Iwamatsu
42f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RAMCR_A, RAMCR_D
4378385bf2SNobuhiro Iwamatsu
4478385bf2SNobuhiro Iwamatsu	mov.l	MMSELR_A, r1
4578385bf2SNobuhiro Iwamatsu	mov.l	MMSELR_D, r0
4678385bf2SNobuhiro Iwamatsu	synco
4778385bf2SNobuhiro Iwamatsu	mov.l	r0, @r1
4878385bf2SNobuhiro Iwamatsu
4978385bf2SNobuhiro Iwamatsu	mov.l	@r1, r2		/* execute two reads after setting MMSELR */
5078385bf2SNobuhiro Iwamatsu	mov.l	@r1, r2
5178385bf2SNobuhiro Iwamatsu	synco
5278385bf2SNobuhiro Iwamatsu
5378385bf2SNobuhiro Iwamatsu	/* issue memory read */
5478385bf2SNobuhiro Iwamatsu	mov.l	DDRSD_START_A, r1	/* memory address to read*/
5578385bf2SNobuhiro Iwamatsu	mov.l	@r1, r0
5678385bf2SNobuhiro Iwamatsu	synco
5778385bf2SNobuhiro Iwamatsu
58f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MIM8_A, MIM8_D
5978385bf2SNobuhiro Iwamatsu
60f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MIMC_A, MIMC_D1
6178385bf2SNobuhiro Iwamatsu
62f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	STRC_A, STRC_D
6378385bf2SNobuhiro Iwamatsu
64f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDR4_A, SDR4_D
6578385bf2SNobuhiro Iwamatsu
66f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MIMC_A, MIMC_D2
6778385bf2SNobuhiro Iwamatsu
6878385bf2SNobuhiro Iwamatsu	nop
6978385bf2SNobuhiro Iwamatsu	nop
7078385bf2SNobuhiro Iwamatsu	nop
7178385bf2SNobuhiro Iwamatsu
72f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SCR4_A, SCR4_D3
7378385bf2SNobuhiro Iwamatsu
74f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SCR4_A, SCR4_D2
7578385bf2SNobuhiro Iwamatsu
76f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDMR02000_A, SDMR02000_D
7778385bf2SNobuhiro Iwamatsu
78f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDMR00B08_A, SDMR00B08_D
7978385bf2SNobuhiro Iwamatsu
80f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SCR4_A, SCR4_D2
8178385bf2SNobuhiro Iwamatsu
82f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SCR4_A, SCR4_D4
8378385bf2SNobuhiro Iwamatsu
8478385bf2SNobuhiro Iwamatsu	nop
8578385bf2SNobuhiro Iwamatsu	nop
8678385bf2SNobuhiro Iwamatsu	nop
8778385bf2SNobuhiro Iwamatsu	nop
8878385bf2SNobuhiro Iwamatsu
89f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SCR4_A, SCR4_D4
9078385bf2SNobuhiro Iwamatsu
9178385bf2SNobuhiro Iwamatsu	nop
9278385bf2SNobuhiro Iwamatsu	nop
9378385bf2SNobuhiro Iwamatsu	nop
9478385bf2SNobuhiro Iwamatsu	nop
9578385bf2SNobuhiro Iwamatsu
96f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDMR00308_A, SDMR00308_D
9778385bf2SNobuhiro Iwamatsu
98f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MIMC_A, MIMC_D3
9978385bf2SNobuhiro Iwamatsu
10078385bf2SNobuhiro Iwamatsu	mov.l	SCR4_A, r1
10178385bf2SNobuhiro Iwamatsu	mov.l	SCR4_D1, r0
10278385bf2SNobuhiro Iwamatsu	mov.l	DELAY60_D, r3
10378385bf2SNobuhiro Iwamatsu
10478385bf2SNobuhiro Iwamatsudelay_loop_60:
10578385bf2SNobuhiro Iwamatsu	mov.l	r0, @r1
10678385bf2SNobuhiro Iwamatsu	dt	r3
10778385bf2SNobuhiro Iwamatsu	bf	delay_loop_60
10878385bf2SNobuhiro Iwamatsu	nop
10978385bf2SNobuhiro Iwamatsu
110f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CCR_A, CCR_CACHE_D_2	/* Address of Cache Control Register */
11178385bf2SNobuhiro Iwamatsu
11278385bf2SNobuhiro Iwamatsubsc_init:
113f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	BCR_A, BCR_D
11478385bf2SNobuhiro Iwamatsu
115f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS0BCR_A, CS0BCR_D
11678385bf2SNobuhiro Iwamatsu
117f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS1BCR_A, CS1BCR_D
11878385bf2SNobuhiro Iwamatsu
119f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS2BCR_A, CS2BCR_D
12078385bf2SNobuhiro Iwamatsu
121f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS4BCR_A, CS4BCR_D
12278385bf2SNobuhiro Iwamatsu
123f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5BCR_A, CS5BCR_D
12478385bf2SNobuhiro Iwamatsu
125f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS6BCR_A, CS6BCR_D
12678385bf2SNobuhiro Iwamatsu
127f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS0WCR_A, CS0WCR_D
12878385bf2SNobuhiro Iwamatsu
129f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS1WCR_A, CS1WCR_D
13078385bf2SNobuhiro Iwamatsu
131f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS2WCR_A, CS2WCR_D
13278385bf2SNobuhiro Iwamatsu
133f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS4WCR_A, CS4WCR_D
13478385bf2SNobuhiro Iwamatsu
135f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5WCR_A, CS5WCR_D
13678385bf2SNobuhiro Iwamatsu
137f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS6WCR_A, CS6WCR_D
13878385bf2SNobuhiro Iwamatsu
139f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5PCR_A, CS5PCR_D
14078385bf2SNobuhiro Iwamatsu
141f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS6PCR_A, CS6PCR_D
14278385bf2SNobuhiro Iwamatsu
14378385bf2SNobuhiro Iwamatsu	mov.l	DELAY200_D, r3
14478385bf2SNobuhiro Iwamatsu
14578385bf2SNobuhiro Iwamatsudelay_loop_200:
14678385bf2SNobuhiro Iwamatsu	dt	r3
14778385bf2SNobuhiro Iwamatsu	bf	delay_loop_200
14878385bf2SNobuhiro Iwamatsu	nop
14978385bf2SNobuhiro Iwamatsu
150f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PSEL0_A, PSEL0_D
15178385bf2SNobuhiro Iwamatsu
152f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PSEL1_A, PSEL1_D
15378385bf2SNobuhiro Iwamatsu
154f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	ICR0_A, ICR0_D
15578385bf2SNobuhiro Iwamatsu
15678385bf2SNobuhiro Iwamatsu	stc sr, r0	/* BL bit off(init=ON) */
15778385bf2SNobuhiro Iwamatsu	mov.l	SR_MASK_D, r1
15878385bf2SNobuhiro Iwamatsu	and r1, r0
15978385bf2SNobuhiro Iwamatsu	ldc r0, sr
16078385bf2SNobuhiro Iwamatsu
16178385bf2SNobuhiro Iwamatsu	rts
16278385bf2SNobuhiro Iwamatsu	nop
16378385bf2SNobuhiro Iwamatsu
16478385bf2SNobuhiro Iwamatsu	.align	2
16578385bf2SNobuhiro Iwamatsu
16678385bf2SNobuhiro IwamatsuDELAY60_D:	.long	60
16778385bf2SNobuhiro IwamatsuDELAY200_D:	.long	17800
16878385bf2SNobuhiro Iwamatsu
16978385bf2SNobuhiro IwamatsuCCR_A:		.long	0xFF00001C
17078385bf2SNobuhiro IwamatsuMMUCR_A:	.long	0xFF000010
17178385bf2SNobuhiro IwamatsuRAMCR_A:	.long	0xFF000074
17278385bf2SNobuhiro Iwamatsu
17378385bf2SNobuhiro Iwamatsu/* Low power mode control */
17478385bf2SNobuhiro IwamatsuMSTPCR0_A:	.long	0xFFC80030
17578385bf2SNobuhiro IwamatsuMSTPCR1_A:	.long	0xFFC80038
17678385bf2SNobuhiro Iwamatsu
17778385bf2SNobuhiro Iwamatsu/* RWBT */
17878385bf2SNobuhiro IwamatsuWDTST_A:	.long	0xFFCC0000
17978385bf2SNobuhiro IwamatsuWDTCSR_A:	.long	0xFFCC0004
18078385bf2SNobuhiro IwamatsuWDTBST_A:	.long	0xFFCC0008
18178385bf2SNobuhiro Iwamatsu
18278385bf2SNobuhiro Iwamatsu/* BSC */
18378385bf2SNobuhiro IwamatsuMMSELR_A:	.long	0xFE600020
18478385bf2SNobuhiro IwamatsuBCR_A:		.long	0xFF801000
18578385bf2SNobuhiro IwamatsuCS0BCR_A:	.long	0xFF802000
18678385bf2SNobuhiro IwamatsuCS1BCR_A:	.long	0xFF802010
18778385bf2SNobuhiro IwamatsuCS2BCR_A:	.long	0xFF802020
18878385bf2SNobuhiro IwamatsuCS4BCR_A:	.long	0xFF802040
18978385bf2SNobuhiro IwamatsuCS5BCR_A:	.long	0xFF802050
19078385bf2SNobuhiro IwamatsuCS6BCR_A:	.long	0xFF802060
19178385bf2SNobuhiro IwamatsuCS0WCR_A:	.long	0xFF802008
19278385bf2SNobuhiro IwamatsuCS1WCR_A:	.long	0xFF802018
19378385bf2SNobuhiro IwamatsuCS2WCR_A:	.long	0xFF802028
19478385bf2SNobuhiro IwamatsuCS4WCR_A:	.long	0xFF802048
19578385bf2SNobuhiro IwamatsuCS5WCR_A:	.long	0xFF802058
19678385bf2SNobuhiro IwamatsuCS6WCR_A:	.long	0xFF802068
19778385bf2SNobuhiro IwamatsuCS5PCR_A:	.long	0xFF802070
19878385bf2SNobuhiro IwamatsuCS6PCR_A:	.long	0xFF802080
19978385bf2SNobuhiro IwamatsuDDRSD_START_A:	.long	0xAC000000
20078385bf2SNobuhiro Iwamatsu
20178385bf2SNobuhiro Iwamatsu/* INTC */
20278385bf2SNobuhiro IwamatsuICR0_A:		.long	0xFFD00000
20378385bf2SNobuhiro Iwamatsu
20478385bf2SNobuhiro Iwamatsu/* DDR I/F */
20578385bf2SNobuhiro IwamatsuMIM8_A:		.long	0xFE800008
20678385bf2SNobuhiro IwamatsuMIMC_A:		.long	0xFE80000C
20778385bf2SNobuhiro IwamatsuSCR4_A:		.long	0xFE800014
20878385bf2SNobuhiro IwamatsuSTRC_A:		.long	0xFE80001C
20978385bf2SNobuhiro IwamatsuSDR4_A:		.long	0xFE800034
21078385bf2SNobuhiro IwamatsuSDMR00308_A:	.long	0xFE900308
21178385bf2SNobuhiro IwamatsuSDMR00B08_A:	.long	0xFE900B08
21278385bf2SNobuhiro IwamatsuSDMR02000_A:	.long	0xFE902000
21378385bf2SNobuhiro Iwamatsu
21478385bf2SNobuhiro Iwamatsu/* GPIO */
21578385bf2SNobuhiro IwamatsuPSEL0_A:	.long	0xFFEF0070
21678385bf2SNobuhiro IwamatsuPSEL1_A:	.long	0xFFEF0072
21778385bf2SNobuhiro Iwamatsu
21878385bf2SNobuhiro IwamatsuCCR_CACHE_ICI_D:.long	0x00000800
21978385bf2SNobuhiro IwamatsuCCR_CACHE_D_2:	.long	0x00000103
22078385bf2SNobuhiro IwamatsuMMU_CONTROL_TI_D:.long	0x00000004
22178385bf2SNobuhiro IwamatsuRAMCR_D:	.long	0x00000200
22278385bf2SNobuhiro IwamatsuMSTPCR0_D:	.long	0x00000000
22378385bf2SNobuhiro IwamatsuMSTPCR1_D:	.long	0x00000000
22478385bf2SNobuhiro Iwamatsu
22578385bf2SNobuhiro IwamatsuMMSELR_D:	.long	0xa5a50000
22678385bf2SNobuhiro IwamatsuBCR_D:		.long	0x00000000
22778385bf2SNobuhiro IwamatsuCS0BCR_D:	.long	0x77777770
22878385bf2SNobuhiro IwamatsuCS1BCR_D:	.long	0x77777670
22978385bf2SNobuhiro IwamatsuCS2BCR_D:	.long	0x77777670
23078385bf2SNobuhiro IwamatsuCS4BCR_D:	.long	0x77777670
23178385bf2SNobuhiro IwamatsuCS5BCR_D:	.long	0x77777670
23278385bf2SNobuhiro IwamatsuCS6BCR_D:	.long	0x77777670
23378385bf2SNobuhiro IwamatsuCS0WCR_D:	.long	0x7777770F
23478385bf2SNobuhiro IwamatsuCS1WCR_D:	.long	0x22000002
23578385bf2SNobuhiro IwamatsuCS2WCR_D:	.long	0x7777770F
23678385bf2SNobuhiro IwamatsuCS4WCR_D:	.long	0x7777770F
23778385bf2SNobuhiro IwamatsuCS5WCR_D:	.long	0x7777770F
23878385bf2SNobuhiro IwamatsuCS6WCR_D:	.long	0x7777770F
23978385bf2SNobuhiro IwamatsuCS5PCR_D:	.long	0x77000000
24078385bf2SNobuhiro IwamatsuCS6PCR_D:	.long	0x77000000
24178385bf2SNobuhiro IwamatsuICR0_D:		.long	0x00E00000
24278385bf2SNobuhiro IwamatsuMIM8_D:		.long	0x00000000
24378385bf2SNobuhiro IwamatsuMIMC_D1:	.long	0x01d10008
24478385bf2SNobuhiro IwamatsuMIMC_D2:	.long	0x01d10009
24578385bf2SNobuhiro IwamatsuMIMC_D3:	.long	0x01d10209
24678385bf2SNobuhiro IwamatsuSCR4_D1:	.long	0x00000001
24778385bf2SNobuhiro IwamatsuSCR4_D2:	.long	0x00000002
24878385bf2SNobuhiro IwamatsuSCR4_D3:	.long	0x00000003
24978385bf2SNobuhiro IwamatsuSCR4_D4:	.long	0x00000004
25078385bf2SNobuhiro IwamatsuSTRC_D:		.long	0x000f3980
25178385bf2SNobuhiro IwamatsuSDR4_D:		.long	0x00000300
25278385bf2SNobuhiro IwamatsuSDMR00308_D:	.long	0x00000000
25378385bf2SNobuhiro IwamatsuSDMR00B08_D:	.long	0x00000000
25478385bf2SNobuhiro IwamatsuSDMR02000_D:	.long	0x00000000
25531067321SNobuhiro IwamatsuPSEL0_D:	.word	0x00000001
25631067321SNobuhiro IwamatsuPSEL1_D:	.word	0x00000244
25778385bf2SNobuhiro IwamatsuSR_MASK_D:	.long	0xEFFFFF0F
25878385bf2SNobuhiro IwamatsuWDTST_D:	.long	0x5A000FFF
25978385bf2SNobuhiro IwamatsuWDTCSR_D:	.long	0xA5000000
26078385bf2SNobuhiro IwamatsuWDTBST_D:	.long	0x55000000
261