xref: /rk3399_rockchip-uboot/board/renesas/MigoR/lowlevel_init.S (revision 7682a99826a624d3764656b5bb31f88e2f8b235b)
158453b00SNobuhiro Iwamatsu/*
2b81786cfSNobuhiro Iwamatsu * Copyright (C) 2007-2008
358453b00SNobuhiro Iwamatsu * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
458453b00SNobuhiro Iwamatsu *
558453b00SNobuhiro Iwamatsu * Copyright (C) 2007
658453b00SNobuhiro Iwamatsu * Kenati Technologies, Inc.
758453b00SNobuhiro Iwamatsu *
858453b00SNobuhiro Iwamatsu * board/MigoR/lowlevel_init.S
958453b00SNobuhiro Iwamatsu *
10*1a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
1158453b00SNobuhiro Iwamatsu */
1258453b00SNobuhiro Iwamatsu
1358453b00SNobuhiro Iwamatsu#include <config.h>
1458453b00SNobuhiro Iwamatsu
1558453b00SNobuhiro Iwamatsu#include <asm/processor.h>
16f7e78f3bSJean-Christophe PLAGNIOL-VILLARD#include <asm/macro.h>
1758453b00SNobuhiro Iwamatsu
1858453b00SNobuhiro Iwamatsu/*
1958453b00SNobuhiro Iwamatsu * Board specific low level init code, called _very_ early in the
2058453b00SNobuhiro Iwamatsu * startup sequence. Relocation to SDRAM has not happened yet, no
2158453b00SNobuhiro Iwamatsu * stack is available, bss section has not been initialised, etc.
2258453b00SNobuhiro Iwamatsu *
2358453b00SNobuhiro Iwamatsu * (Note: As no stack is available, no subroutines can be called...).
2458453b00SNobuhiro Iwamatsu */
2558453b00SNobuhiro Iwamatsu
2658453b00SNobuhiro Iwamatsu	.global	lowlevel_init
2758453b00SNobuhiro Iwamatsu
2858453b00SNobuhiro Iwamatsu	.text
2958453b00SNobuhiro Iwamatsu	.align	2
3058453b00SNobuhiro Iwamatsu
3158453b00SNobuhiro Iwamatsulowlevel_init:
32f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CCR_A, CCR_D		! Address of Cache Control Register
33f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					! Instruction Cache Invalidate
3458453b00SNobuhiro Iwamatsu
35f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MMUCR_A, MMUCR_D	! Address of MMU Control Register
36f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					! TI == TLB Invalidate bit
3758453b00SNobuhiro Iwamatsu
38f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MSTPCR0_A, MSTPCR0_D	! Address of Power Control Register 0
3958453b00SNobuhiro Iwamatsu
40f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MSTPCR2_A, MSTPCR2_D	! Address of Power Control Register 2
4158453b00SNobuhiro Iwamatsu
42f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PFC_PULCR_A, PFC_PULCR_D
4358453b00SNobuhiro Iwamatsu
44f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PFC_DRVCR_A, PFC_DRVCR_D
4558453b00SNobuhiro Iwamatsu
46f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	SBSCR_A, SBSCR_D
4758453b00SNobuhiro Iwamatsu
48f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PSCR_A, PSCR_D
4958453b00SNobuhiro Iwamatsu
50f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	RWTCSR_A, RWTCSR_D_1	! 0xA4520004 (Watchdog Control / Status Register)
51f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					! 0xA507 -> timer_STOP / WDT_CLK = max
5258453b00SNobuhiro Iwamatsu
53f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	RWTCNT_A, RWTCNT_D	! 0xA4520000 (Watchdog Count Register)
54f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					! 0x5A00 -> Clear
5558453b00SNobuhiro Iwamatsu
56f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	RWTCSR_A, RWTCSR_D_2	! 0xA4520004 (Watchdog Control / Status Register)
57f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					! 0xA504 -> timer_STOP / CLK = 500ms
5858453b00SNobuhiro Iwamatsu
59f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	DLLFRQ_A, DLLFRQ_D	! 20080115
60f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					! 20080115
6158453b00SNobuhiro Iwamatsu
62f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	FRQCR_A, FRQCR_D	! 0xA4150000 Frequency control register
63f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					! 20080115
6458453b00SNobuhiro Iwamatsu
65f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CCR_A, CCR_D_2		! Address of Cache Control Register
66f7e78f3bSJean-Christophe PLAGNIOL-VILLARD					! ??
6758453b00SNobuhiro Iwamatsu
6858453b00SNobuhiro Iwamatsubsc_init:
69f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CMNCR_A, CMNCR_D
7058453b00SNobuhiro Iwamatsu
71f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS0BCR_A, CS0BCR_D
7258453b00SNobuhiro Iwamatsu
73f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS4BCR_A, CS4BCR_D
7458453b00SNobuhiro Iwamatsu
75f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5ABCR_A, CS5ABCR_D
7658453b00SNobuhiro Iwamatsu
77f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5BBCR_A, CS5BBCR_D
7858453b00SNobuhiro Iwamatsu
79f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS6ABCR_A, CS6ABCR_D
8058453b00SNobuhiro Iwamatsu
81f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS0WCR_A, CS0WCR_D
8258453b00SNobuhiro Iwamatsu
83f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS4WCR_A, CS4WCR_D
8458453b00SNobuhiro Iwamatsu
85f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5AWCR_A, CS5AWCR_D
8658453b00SNobuhiro Iwamatsu
87f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5BWCR_A, CS5BWCR_D
8858453b00SNobuhiro Iwamatsu
89f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS6AWCR_A, CS6AWCR_D
9058453b00SNobuhiro Iwamatsu
9158453b00SNobuhiro Iwamatsu	! SDRAM initialization
92f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDCR_A, SDCR_D
9358453b00SNobuhiro Iwamatsu
94f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDWCR_A, SDWCR_D
9558453b00SNobuhiro Iwamatsu
96f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDPCR_A, SDPCR_D
9758453b00SNobuhiro Iwamatsu
98f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RTCOR_A, RTCOR_D
9958453b00SNobuhiro Iwamatsu
100f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RTCNT_A, RTCNT_D
10158453b00SNobuhiro Iwamatsu
102f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RTCSR_A, RTCSR_D
10358453b00SNobuhiro Iwamatsu
104f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RFCR_A, RFCR_D
10558453b00SNobuhiro Iwamatsu
106c9935c99SNobuhiro Iwamatsu	write8	SDMR3_A, SDMR3_D
10758453b00SNobuhiro Iwamatsu
10858453b00SNobuhiro Iwamatsu	! BL bit off (init = ON) (?!?)
10958453b00SNobuhiro Iwamatsu
11058453b00SNobuhiro Iwamatsu	stc	sr, r0				! BL bit off(init=ON)
11158453b00SNobuhiro Iwamatsu	mov.l	SR_MASK_D, r1
11258453b00SNobuhiro Iwamatsu	and	r1, r0
11358453b00SNobuhiro Iwamatsu	ldc	r0, sr
11458453b00SNobuhiro Iwamatsu
11558453b00SNobuhiro Iwamatsu	rts
11658453b00SNobuhiro Iwamatsu	mov	#0, r0
11758453b00SNobuhiro Iwamatsu
11858453b00SNobuhiro Iwamatsu	.align	4
11958453b00SNobuhiro Iwamatsu
12058453b00SNobuhiro IwamatsuCCR_A:		.long	CCR
12158453b00SNobuhiro IwamatsuMMUCR_A:	.long	MMUCR
12258453b00SNobuhiro IwamatsuMSTPCR0_A:	.long	MSTPCR0
12358453b00SNobuhiro IwamatsuMSTPCR2_A:	.long	MSTPCR2
12458453b00SNobuhiro IwamatsuPFC_PULCR_A:	.long	PULCR
12558453b00SNobuhiro IwamatsuPFC_DRVCR_A:	.long	DRVCR
12658453b00SNobuhiro IwamatsuSBSCR_A:	.long	SBSCR
12758453b00SNobuhiro IwamatsuPSCR_A:		.long	PSCR
12858453b00SNobuhiro IwamatsuRWTCSR_A:	.long	RWTCSR
12958453b00SNobuhiro IwamatsuRWTCNT_A:	.long	RWTCNT
13058453b00SNobuhiro IwamatsuFRQCR_A:	.long	FRQCR
13158453b00SNobuhiro IwamatsuPLLCR_A:	.long	PLLCR
13258453b00SNobuhiro IwamatsuDLLFRQ_A:	.long	DLLFRQ
13358453b00SNobuhiro Iwamatsu
13458453b00SNobuhiro IwamatsuCCR_D:		.long	0x00000800
13558453b00SNobuhiro IwamatsuCCR_D_2:	.long	0x00000103
13658453b00SNobuhiro IwamatsuMMUCR_D:	.long	0x00000004
13758453b00SNobuhiro IwamatsuMSTPCR0_D:	.long	0x00001001
13858453b00SNobuhiro IwamatsuMSTPCR2_D:	.long	0xffffffff
13958453b00SNobuhiro IwamatsuPFC_PULCR_D:	.long	0x6000
14058453b00SNobuhiro IwamatsuPFC_DRVCR_D:	.long	0x0464
14158453b00SNobuhiro IwamatsuFRQCR_D:	.long	0x07033639
14258453b00SNobuhiro IwamatsuPLLCR_D:	.long	0x00005000
143b81786cfSNobuhiro IwamatsuDLLFRQ_D:	.long	0x000004F6
14458453b00SNobuhiro Iwamatsu
14558453b00SNobuhiro IwamatsuCMNCR_A:	.long	CMNCR
146b81786cfSNobuhiro IwamatsuCMNCR_D:	.long	0x0000001B
147b81786cfSNobuhiro IwamatsuCS0BCR_A:	.long	CS0BCR
14858453b00SNobuhiro IwamatsuCS0BCR_D:	.long	0x24920400
149b81786cfSNobuhiro IwamatsuCS4BCR_A:	.long	CS4BCR
150b81786cfSNobuhiro IwamatsuCS4BCR_D:	.long	0x00003400
151b81786cfSNobuhiro IwamatsuCS5ABCR_A:	.long	CS5ABCR
15258453b00SNobuhiro IwamatsuCS5ABCR_D:	.long	0x24920400
153b81786cfSNobuhiro IwamatsuCS5BBCR_A:	.long	CS5BBCR
15458453b00SNobuhiro IwamatsuCS5BBCR_D:	.long	0x24920400
155b81786cfSNobuhiro IwamatsuCS6ABCR_A:	.long	CS6ABCR
15658453b00SNobuhiro IwamatsuCS6ABCR_D:	.long	0x24920400
15758453b00SNobuhiro Iwamatsu
15858453b00SNobuhiro IwamatsuCS0WCR_A:	.long	CS0WCR
15958453b00SNobuhiro IwamatsuCS0WCR_D:	.long	0x00000380
16058453b00SNobuhiro IwamatsuCS4WCR_A:	.long	CS4WCR
161b81786cfSNobuhiro IwamatsuCS4WCR_D:	.long	0x00110080
16258453b00SNobuhiro IwamatsuCS5AWCR_A:	.long	CS5AWCR
16358453b00SNobuhiro IwamatsuCS5AWCR_D:	.long	0x00000300
16458453b00SNobuhiro IwamatsuCS5BWCR_A:	.long	CS5BWCR
16558453b00SNobuhiro IwamatsuCS5BWCR_D:	.long	0x00000300
16658453b00SNobuhiro IwamatsuCS6AWCR_A:	.long	CS6AWCR
16758453b00SNobuhiro IwamatsuCS6AWCR_D:	.long	0x00000300
16858453b00SNobuhiro Iwamatsu
16958453b00SNobuhiro IwamatsuSDCR_A:		.long	SBSC_SDCR
170b81786cfSNobuhiro IwamatsuSDCR_D:		.long	0x80160809
17158453b00SNobuhiro IwamatsuSDWCR_A:	.long	SBSC_SDWCR
172b81786cfSNobuhiro IwamatsuSDWCR_D:	.long	0x0014450C
17358453b00SNobuhiro IwamatsuSDPCR_A:	.long	SBSC_SDPCR
17458453b00SNobuhiro IwamatsuSDPCR_D:	.long	0x00000087
17558453b00SNobuhiro IwamatsuRTCOR_A:	.long	SBSC_RTCOR
17658453b00SNobuhiro IwamatsuRTCNT_A:	.long	SBSC_RTCNT
17758453b00SNobuhiro IwamatsuRTCNT_D:	.long	0xA55A0012
178b81786cfSNobuhiro IwamatsuRTCOR_D:	.long	0xA55A001C
17958453b00SNobuhiro IwamatsuRTCSR_A:	.long	SBSC_RTCSR
18058453b00SNobuhiro IwamatsuRFCR_A:		.long	SBSC_RFCR
18158453b00SNobuhiro IwamatsuRFCR_D:		.long	0xA55A0221
182b81786cfSNobuhiro IwamatsuRTCSR_D:	.long	0xA55A009a
183b81786cfSNobuhiro IwamatsuSDMR3_A:	.long	0xFE581180
184c9935c99SNobuhiro IwamatsuSDMR3_D:	.long	0x0
18558453b00SNobuhiro Iwamatsu
18658453b00SNobuhiro IwamatsuSR_MASK_D:	.long	0xEFFFFF0F
18758453b00SNobuhiro Iwamatsu
18858453b00SNobuhiro Iwamatsu	.align	2
18958453b00SNobuhiro Iwamatsu
19058453b00SNobuhiro IwamatsuSBSCR_D:	.word	0x0044
19158453b00SNobuhiro IwamatsuPSCR_D:		.word	0x0000
19258453b00SNobuhiro IwamatsuRWTCSR_D_1:	.word	0xA507
193b81786cfSNobuhiro IwamatsuRWTCSR_D_2:	.word	0xA504
19458453b00SNobuhiro IwamatsuRWTCNT_D:	.word	0x5A00
195