xref: /rk3399_rockchip-uboot/board/ms7722se/lowlevel_init.S (revision 7682a99826a624d3764656b5bb31f88e2f8b235b)
16c0bbdccSNobuhiro Iwamatsu/*
26c0bbdccSNobuhiro Iwamatsu * Copyright (C) 2007
36c0bbdccSNobuhiro Iwamatsu * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
46c0bbdccSNobuhiro Iwamatsu *
56c0bbdccSNobuhiro Iwamatsu * Copyright (C) 2007
66c0bbdccSNobuhiro Iwamatsu * Kenati Technologies, Inc.
76c0bbdccSNobuhiro Iwamatsu *
86c0bbdccSNobuhiro Iwamatsu * board/ms7722se/lowlevel_init.S
96c0bbdccSNobuhiro Iwamatsu *
10*1a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
116c0bbdccSNobuhiro Iwamatsu */
126c0bbdccSNobuhiro Iwamatsu
136c0bbdccSNobuhiro Iwamatsu#include <config.h>
146c0bbdccSNobuhiro Iwamatsu
156c0bbdccSNobuhiro Iwamatsu#include <asm/processor.h>
16f7e78f3bSJean-Christophe PLAGNIOL-VILLARD#include <asm/macro.h>
176c0bbdccSNobuhiro Iwamatsu
186c0bbdccSNobuhiro Iwamatsu/*
196c0bbdccSNobuhiro Iwamatsu * Board specific low level init code, called _very_ early in the
206c0bbdccSNobuhiro Iwamatsu * startup sequence. Relocation to SDRAM has not happened yet, no
216c0bbdccSNobuhiro Iwamatsu * stack is available, bss section has not been initialised, etc.
226c0bbdccSNobuhiro Iwamatsu *
236c0bbdccSNobuhiro Iwamatsu * (Note: As no stack is available, no subroutines can be called...).
246c0bbdccSNobuhiro Iwamatsu */
256c0bbdccSNobuhiro Iwamatsu
266c0bbdccSNobuhiro Iwamatsu	.global	lowlevel_init
276c0bbdccSNobuhiro Iwamatsu
286c0bbdccSNobuhiro Iwamatsu	.text
296c0bbdccSNobuhiro Iwamatsu	.align	2
306c0bbdccSNobuhiro Iwamatsu
316c0bbdccSNobuhiro Iwamatsulowlevel_init:
326c0bbdccSNobuhiro Iwamatsu
33f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	/*
34f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	 * Cache Control Register
35f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	 * Instruction Cache Invalidate
36f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	 */
37f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CCR_A, CCR_D
386c0bbdccSNobuhiro Iwamatsu
39f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	/*
40f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	 * Address of MMU Control Register
41f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	 * TI == TLB Invalidate bit
42f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	 */
43f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MMUCR_A, MMUCR_D
446c0bbdccSNobuhiro Iwamatsu
45b5d10a13SNobuhiro Iwamatsu	/* Address of Power Control Register 0 */
46f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MSTPCR0_A, MSTPCR0_D
476c0bbdccSNobuhiro Iwamatsu
48b5d10a13SNobuhiro Iwamatsu	/* Address of Power Control Register 2 */
49f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	MSTPCR2_A, MSTPCR2_D
506c0bbdccSNobuhiro Iwamatsu
51f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	SBSCR_A, SBSCR_D
526c0bbdccSNobuhiro Iwamatsu
53f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PSCR_A, PSCR_D
546c0bbdccSNobuhiro Iwamatsu
55b5d10a13SNobuhiro Iwamatsu	/* 0xA4520004 (Watchdog Control / Status Register) */
56f7e78f3bSJean-Christophe PLAGNIOL-VILLARD!	write16	RWTCSR_A, RWTCSR_D_1	/* 0xA507 -> timer_STOP/WDT_CLK=max */
576c0bbdccSNobuhiro Iwamatsu
58b5d10a13SNobuhiro Iwamatsu	/* 0xA4520000 (Watchdog Count Register) */
59f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	RWTCNT_A, RWTCNT_D	/*0x5A00 -> Clear */
606c0bbdccSNobuhiro Iwamatsu
61b5d10a13SNobuhiro Iwamatsu	/* 0xA4520004 (Watchdog Control / Status Register) */
62f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	RWTCSR_A, RWTCSR_D_2	/* 0xA504 -> timer_STOP/CLK=500ms */
636c0bbdccSNobuhiro Iwamatsu
64b5d10a13SNobuhiro Iwamatsu	/* 0xA4150000 Frequency control register */
65f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	FRQCR_A, FRQCR_D
666c0bbdccSNobuhiro Iwamatsu
67f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CCR_A, CCR_D_2
686c0bbdccSNobuhiro Iwamatsu
696c0bbdccSNobuhiro Iwamatsubsc_init:
706c0bbdccSNobuhiro Iwamatsu
71f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PSELA_A, PSELA_D
726c0bbdccSNobuhiro Iwamatsu
73f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	DRVCR_A, DRVCR_D
746c0bbdccSNobuhiro Iwamatsu
75f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PCCR_A, PCCR_D
766c0bbdccSNobuhiro Iwamatsu
77f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PECR_A, PECR_D
786c0bbdccSNobuhiro Iwamatsu
79f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PJCR_A, PJCR_D
806c0bbdccSNobuhiro Iwamatsu
81f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write16	PXCR_A, PXCR_D
826c0bbdccSNobuhiro Iwamatsu
83f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CMNCR_A, CMNCR_D
846c0bbdccSNobuhiro Iwamatsu
85f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS0BCR_A, CS0BCR_D
866c0bbdccSNobuhiro Iwamatsu
87f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS2BCR_A, CS2BCR_D
886c0bbdccSNobuhiro Iwamatsu
89f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS4BCR_A, CS4BCR_D
906c0bbdccSNobuhiro Iwamatsu
91f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5ABCR_A, CS5ABCR_D
926c0bbdccSNobuhiro Iwamatsu
93f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5BBCR_A, CS5BBCR_D
946c0bbdccSNobuhiro Iwamatsu
95f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS6ABCR_A, CS6ABCR_D
966c0bbdccSNobuhiro Iwamatsu
97f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS0WCR_A, CS0WCR_D
986c0bbdccSNobuhiro Iwamatsu
99f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS2WCR_A, CS2WCR_D
1006c0bbdccSNobuhiro Iwamatsu
101f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS4WCR_A, CS4WCR_D
1026c0bbdccSNobuhiro Iwamatsu
103f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5AWCR_A, CS5AWCR_D
1046c0bbdccSNobuhiro Iwamatsu
105f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS5BWCR_A, CS5BWCR_D
1066c0bbdccSNobuhiro Iwamatsu
107f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	CS6AWCR_A, CS6AWCR_D
1086c0bbdccSNobuhiro Iwamatsu
1096c0bbdccSNobuhiro Iwamatsu	! SDRAM initialization
110f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDCR_A, SDCR_D
1116c0bbdccSNobuhiro Iwamatsu
112f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDWCR_A, SDWCR_D
1136c0bbdccSNobuhiro Iwamatsu
114f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	SDPCR_A, SDPCR_D
1156c0bbdccSNobuhiro Iwamatsu
116f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RTCOR_A, RTCOR_D
1176c0bbdccSNobuhiro Iwamatsu
118f7e78f3bSJean-Christophe PLAGNIOL-VILLARD	write32	RTCSR_A, RTCSR_D
1196c0bbdccSNobuhiro Iwamatsu
120c9935c99SNobuhiro Iwamatsu	write8	SDMR3_A, SDMR3_D
1216c0bbdccSNobuhiro Iwamatsu
1226c0bbdccSNobuhiro Iwamatsu	! BL bit off (init = ON) (?!?)
1236c0bbdccSNobuhiro Iwamatsu
1246c0bbdccSNobuhiro Iwamatsu	stc	sr, r0				! BL bit off(init=ON)
1256c0bbdccSNobuhiro Iwamatsu	mov.l	SR_MASK_D, r1
1266c0bbdccSNobuhiro Iwamatsu	and	r1, r0
1276c0bbdccSNobuhiro Iwamatsu	ldc	r0, sr
1286c0bbdccSNobuhiro Iwamatsu
1296c0bbdccSNobuhiro Iwamatsu	rts
1306c0bbdccSNobuhiro Iwamatsu	mov	#0, r0
1316c0bbdccSNobuhiro Iwamatsu
1326c0bbdccSNobuhiro Iwamatsu	.align	2
1336c0bbdccSNobuhiro Iwamatsu
1346c0bbdccSNobuhiro IwamatsuCCR_A:		.long	CCR
1356c0bbdccSNobuhiro IwamatsuMMUCR_A:	.long	MMUCR
1366c0bbdccSNobuhiro IwamatsuMSTPCR0_A:	.long	MSTPCR0
1376c0bbdccSNobuhiro IwamatsuMSTPCR2_A:	.long	MSTPCR2
1386c0bbdccSNobuhiro IwamatsuSBSCR_A:	.long	SBSCR
1396c0bbdccSNobuhiro IwamatsuPSCR_A:		.long	PSCR
1406c0bbdccSNobuhiro IwamatsuRWTCSR_A:	.long	RWTCSR
1416c0bbdccSNobuhiro IwamatsuRWTCNT_A:	.long	RWTCNT
1426c0bbdccSNobuhiro IwamatsuFRQCR_A:	.long	FRQCR
1436c0bbdccSNobuhiro Iwamatsu
1446c0bbdccSNobuhiro IwamatsuCCR_D:		.long	0x00000800
1456c0bbdccSNobuhiro IwamatsuCCR_D_2:	.long	0x00000103
1466c0bbdccSNobuhiro IwamatsuMMUCR_D:	.long	0x00000004
1476c0bbdccSNobuhiro IwamatsuMSTPCR0_D:	.long	0x00001001
1486c0bbdccSNobuhiro IwamatsuMSTPCR2_D:	.long	0xffffffff
1496c0bbdccSNobuhiro IwamatsuFRQCR_D:	.long	0x07022538
1506c0bbdccSNobuhiro Iwamatsu
1516c0bbdccSNobuhiro IwamatsuPSELA_A:	.long	0xa405014E
1526c0bbdccSNobuhiro IwamatsuPSELA_D:	.word	0x0A10
1536c0bbdccSNobuhiro Iwamatsu	.align 2
1546c0bbdccSNobuhiro Iwamatsu
1556c0bbdccSNobuhiro IwamatsuDRVCR_A:	.long	0xa405018A
1566c0bbdccSNobuhiro IwamatsuDRVCR_D:	.word	0x0554
1576c0bbdccSNobuhiro Iwamatsu	.align 2
1586c0bbdccSNobuhiro Iwamatsu
1596c0bbdccSNobuhiro IwamatsuPCCR_A:		.long	0xa4050104
1606c0bbdccSNobuhiro IwamatsuPCCR_D:		.word	0x8800
1616c0bbdccSNobuhiro Iwamatsu	.align 2
1626c0bbdccSNobuhiro Iwamatsu
1636c0bbdccSNobuhiro IwamatsuPECR_A:		.long	0xa4050108
1646c0bbdccSNobuhiro IwamatsuPECR_D:		.word	0x0000
1656c0bbdccSNobuhiro Iwamatsu	.align 2
1666c0bbdccSNobuhiro Iwamatsu
1676c0bbdccSNobuhiro IwamatsuPJCR_A:		.long	0xa4050110
1686c0bbdccSNobuhiro IwamatsuPJCR_D:		.word	0x1000
1696c0bbdccSNobuhiro Iwamatsu	.align 2
1706c0bbdccSNobuhiro Iwamatsu
1716c0bbdccSNobuhiro IwamatsuPXCR_A:		.long	0xa4050148
1726c0bbdccSNobuhiro IwamatsuPXCR_D:		.word	0x0AAA
1736c0bbdccSNobuhiro Iwamatsu	.align 2
1746c0bbdccSNobuhiro Iwamatsu
1756c0bbdccSNobuhiro IwamatsuCMNCR_A:	.long	CMNCR
1766c0bbdccSNobuhiro IwamatsuCMNCR_D:	.long	0x00000013
1776c0bbdccSNobuhiro IwamatsuCS0BCR_A:	.long	CS0BCR		! Flash bank 1
1786c0bbdccSNobuhiro IwamatsuCS0BCR_D:	.long	0x24920400
1796c0bbdccSNobuhiro IwamatsuCS2BCR_A:	.long	CS2BCR		! SRAM
1806c0bbdccSNobuhiro IwamatsuCS2BCR_D:	.long	0x24920400
1816c0bbdccSNobuhiro IwamatsuCS4BCR_A:	.long	CS4BCR		! FPGA, PCMCIA, USB, ext slot
1826c0bbdccSNobuhiro IwamatsuCS4BCR_D:	.long	0x24920400
1836c0bbdccSNobuhiro IwamatsuCS5ABCR_A:	.long	CS5ABCR		! Ext slot
1846c0bbdccSNobuhiro IwamatsuCS5ABCR_D:	.long	0x24920400
1856c0bbdccSNobuhiro IwamatsuCS5BBCR_A:	.long	CS5BBCR		! USB controller
1866c0bbdccSNobuhiro IwamatsuCS5BBCR_D:	.long	0x24920400
1876c0bbdccSNobuhiro IwamatsuCS6ABCR_A:	.long	CS6ABCR		! Ethernet
1886c0bbdccSNobuhiro IwamatsuCS6ABCR_D:	.long	0x24920400
1896c0bbdccSNobuhiro Iwamatsu
1906c0bbdccSNobuhiro IwamatsuCS0WCR_A:	.long	CS0WCR
1916c0bbdccSNobuhiro IwamatsuCS0WCR_D:	.long	0x00000300
1926c0bbdccSNobuhiro IwamatsuCS2WCR_A:	.long	CS2WCR
1936c0bbdccSNobuhiro IwamatsuCS2WCR_D:	.long	0x00000300
1946c0bbdccSNobuhiro IwamatsuCS4WCR_A:	.long	CS4WCR
1956c0bbdccSNobuhiro IwamatsuCS4WCR_D:	.long	0x00000300
1966c0bbdccSNobuhiro IwamatsuCS5AWCR_A:	.long	CS5AWCR
1976c0bbdccSNobuhiro IwamatsuCS5AWCR_D:	.long	0x00000300
1986c0bbdccSNobuhiro IwamatsuCS5BWCR_A:	.long	CS5BWCR
1996c0bbdccSNobuhiro IwamatsuCS5BWCR_D:	.long	0x00000300
2006c0bbdccSNobuhiro IwamatsuCS6AWCR_A:	.long	CS6AWCR
2016c0bbdccSNobuhiro IwamatsuCS6AWCR_D:	.long	0x00000300
2026c0bbdccSNobuhiro Iwamatsu
2036c0bbdccSNobuhiro IwamatsuSDCR_A:		.long	SBSC_SDCR
2046c0bbdccSNobuhiro IwamatsuSDCR_D:		.long	0x00020809
2056c0bbdccSNobuhiro IwamatsuSDWCR_A:	.long	SBSC_SDWCR
2066c0bbdccSNobuhiro IwamatsuSDWCR_D:	.long	0x00164d0d
2076c0bbdccSNobuhiro IwamatsuSDPCR_A:	.long	SBSC_SDPCR
2086c0bbdccSNobuhiro IwamatsuSDPCR_D:	.long	0x00000087
2096c0bbdccSNobuhiro IwamatsuRTCOR_A:	.long	SBSC_RTCOR
2106c0bbdccSNobuhiro IwamatsuRTCOR_D:	.long	0xA55A0034
2116c0bbdccSNobuhiro IwamatsuRTCSR_A:	.long	SBSC_RTCSR
2126c0bbdccSNobuhiro IwamatsuRTCSR_D:	.long	0xA55A0010
2136c0bbdccSNobuhiro IwamatsuSDMR3_A:	.long	0xFE500180
214c9935c99SNobuhiro IwamatsuSDMR3_D:	.long	0x0
2156c0bbdccSNobuhiro Iwamatsu
2166c0bbdccSNobuhiro Iwamatsu	.align	1
2176c0bbdccSNobuhiro Iwamatsu
2186c0bbdccSNobuhiro IwamatsuSBSCR_D:	.word	0x0040
2196c0bbdccSNobuhiro IwamatsuPSCR_D:		.word	0x0000
2206c0bbdccSNobuhiro IwamatsuRWTCSR_D_1:	.word	0xA507
2216c0bbdccSNobuhiro IwamatsuRWTCSR_D_2:	.word	0xA507
2226c0bbdccSNobuhiro IwamatsuRWTCNT_D:	.word	0x5A00
223b5d10a13SNobuhiro Iwamatsu	.align	2
2246c0bbdccSNobuhiro Iwamatsu
2256c0bbdccSNobuhiro IwamatsuSR_MASK_D:	.long	0xEFFFFF0F
226