mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 20:18:18 +00:00 
			
		
		
		
	When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
		
			
				
	
	
		
			260 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			260 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * Copyright (C) 2008 Renesas Solutions Corp.
 | |
|  * Copyright (C) 2008 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
 | |
|  * Copyright (C) 2007 Kenati Technologies, Inc.
 | |
|  *
 | |
|  * board/sh7763rdp/lowlevel_init.S
 | |
|  */
 | |
| 
 | |
| #include <config.h>
 | |
| 
 | |
| #include <asm/processor.h>
 | |
| #include <asm/macro.h>
 | |
| 
 | |
| 	.global	lowlevel_init
 | |
| 
 | |
| 	.text
 | |
| 	.align	2
 | |
| 
 | |
| lowlevel_init:
 | |
| 
 | |
| 	write32	WDTCSR_A, WDTCSR_D	/* Watchdog Control / Status Register */
 | |
| 
 | |
| 	write32	WDTST_A, WDTST_D	/* Watchdog Stop Time Register */
 | |
| 
 | |
| 	write32	WDTBST_A, WDTBST_D	/*
 | |
| 					 * 0xFFCC0008
 | |
| 					 * Watchdog Base Stop Time Register
 | |
| 					 */
 | |
| 
 | |
| 	write32	CCR_A, CCR_CACHE_ICI_D	/* Address of Cache Control Register */
 | |
| 					/* Instruction Cache Invalidate */
 | |
| 
 | |
| 	write32	MMUCR_A, MMU_CONTROL_TI_D	/* MMU Control Register */
 | |
| 						/* TI == TLB Invalidate bit */
 | |
| 
 | |
| 	write32	MSTPCR0_A, MSTPCR0_D	/* Address of Power Control Register 0 */
 | |
| 
 | |
| 	write32	MSTPCR1_A, MSTPCR1_D	/* Address of Power Control Register 1 */
 | |
| 
 | |
| 	write32	RAMCR_A, RAMCR_D
 | |
| 
 | |
| 	mov.l	MMSELR_A, r1
 | |
| 	mov.l	MMSELR_D, r0
 | |
| 	synco
 | |
| 	mov.l	r0, @r1
 | |
| 
 | |
| 	mov.l	@r1, r2		/* execute two reads after setting MMSELR */
 | |
| 	mov.l	@r1, r2
 | |
| 	synco
 | |
| 
 | |
| 	/* issue memory read */
 | |
| 	mov.l	DDRSD_START_A, r1	/* memory address to read*/
 | |
| 	mov.l	@r1, r0
 | |
| 	synco
 | |
| 
 | |
| 	write32	MIM8_A, MIM8_D
 | |
| 
 | |
| 	write32	MIMC_A, MIMC_D1
 | |
| 
 | |
| 	write32	STRC_A, STRC_D
 | |
| 
 | |
| 	write32	SDR4_A, SDR4_D
 | |
| 
 | |
| 	write32	MIMC_A, MIMC_D2
 | |
| 
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 
 | |
| 	write32	SCR4_A, SCR4_D3
 | |
| 
 | |
| 	write32	SCR4_A, SCR4_D2
 | |
| 
 | |
| 	write32	SDMR02000_A, SDMR02000_D
 | |
| 
 | |
| 	write32	SDMR00B08_A, SDMR00B08_D
 | |
| 
 | |
| 	write32	SCR4_A, SCR4_D2
 | |
| 
 | |
| 	write32	SCR4_A, SCR4_D4
 | |
| 
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 
 | |
| 	write32	SCR4_A, SCR4_D4
 | |
| 
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 	nop
 | |
| 
 | |
| 	write32	SDMR00308_A, SDMR00308_D
 | |
| 
 | |
| 	write32	MIMC_A, MIMC_D3
 | |
| 
 | |
| 	mov.l	SCR4_A, r1
 | |
| 	mov.l	SCR4_D1, r0
 | |
| 	mov.l	DELAY60_D, r3
 | |
| 
 | |
| delay_loop_60:
 | |
| 	mov.l	r0, @r1
 | |
| 	dt	r3
 | |
| 	bf	delay_loop_60
 | |
| 	nop
 | |
| 
 | |
| 	write32	CCR_A, CCR_CACHE_D_2	/* Address of Cache Control Register */
 | |
| 
 | |
| bsc_init:
 | |
| 	write32	BCR_A, BCR_D
 | |
| 
 | |
| 	write32	CS0BCR_A, CS0BCR_D
 | |
| 
 | |
| 	write32	CS1BCR_A, CS1BCR_D
 | |
| 
 | |
| 	write32	CS2BCR_A, CS2BCR_D
 | |
| 
 | |
| 	write32	CS4BCR_A, CS4BCR_D
 | |
| 
 | |
| 	write32	CS5BCR_A, CS5BCR_D
 | |
| 
 | |
| 	write32	CS6BCR_A, CS6BCR_D
 | |
| 
 | |
| 	write32	CS0WCR_A, CS0WCR_D
 | |
| 
 | |
| 	write32	CS1WCR_A, CS1WCR_D
 | |
| 
 | |
| 	write32	CS2WCR_A, CS2WCR_D
 | |
| 
 | |
| 	write32	CS4WCR_A, CS4WCR_D
 | |
| 
 | |
| 	write32	CS5WCR_A, CS5WCR_D
 | |
| 
 | |
| 	write32	CS6WCR_A, CS6WCR_D
 | |
| 
 | |
| 	write32	CS5PCR_A, CS5PCR_D
 | |
| 
 | |
| 	write32	CS6PCR_A, CS6PCR_D
 | |
| 
 | |
| 	mov.l	DELAY200_D, r3
 | |
| 
 | |
| delay_loop_200:
 | |
| 	dt	r3
 | |
| 	bf	delay_loop_200
 | |
| 	nop
 | |
| 
 | |
| 	write16	PSEL0_A, PSEL0_D
 | |
| 
 | |
| 	write16	PSEL1_A, PSEL1_D
 | |
| 
 | |
| 	write32	ICR0_A, ICR0_D
 | |
| 
 | |
| 	stc sr, r0	/* BL bit off(init=ON) */
 | |
| 	mov.l	SR_MASK_D, r1
 | |
| 	and r1, r0
 | |
| 	ldc r0, sr
 | |
| 
 | |
| 	rts
 | |
| 	nop
 | |
| 
 | |
| 	.align	2
 | |
| 
 | |
| DELAY60_D:	.long	60
 | |
| DELAY200_D:	.long	17800
 | |
| 
 | |
| CCR_A:		.long	0xFF00001C
 | |
| MMUCR_A:	.long	0xFF000010
 | |
| RAMCR_A:	.long	0xFF000074
 | |
| 
 | |
| /* Low power mode control */
 | |
| MSTPCR0_A:	.long	0xFFC80030
 | |
| MSTPCR1_A:	.long	0xFFC80038
 | |
| 
 | |
| /* RWBT */
 | |
| WDTST_A:	.long	0xFFCC0000
 | |
| WDTCSR_A:	.long	0xFFCC0004
 | |
| WDTBST_A:	.long	0xFFCC0008
 | |
| 
 | |
| /* BSC */
 | |
| MMSELR_A:	.long	0xFE600020
 | |
| BCR_A:		.long	0xFF801000
 | |
| CS0BCR_A:	.long	0xFF802000
 | |
| CS1BCR_A:	.long	0xFF802010
 | |
| CS2BCR_A:	.long	0xFF802020
 | |
| CS4BCR_A:	.long	0xFF802040
 | |
| CS5BCR_A:	.long	0xFF802050
 | |
| CS6BCR_A:	.long	0xFF802060
 | |
| CS0WCR_A:	.long	0xFF802008
 | |
| CS1WCR_A:	.long	0xFF802018
 | |
| CS2WCR_A:	.long	0xFF802028
 | |
| CS4WCR_A:	.long	0xFF802048
 | |
| CS5WCR_A:	.long	0xFF802058
 | |
| CS6WCR_A:	.long	0xFF802068
 | |
| CS5PCR_A:	.long	0xFF802070
 | |
| CS6PCR_A:	.long	0xFF802080
 | |
| DDRSD_START_A:	.long	0xAC000000
 | |
| 
 | |
| /* INTC */
 | |
| ICR0_A:		.long	0xFFD00000
 | |
| 
 | |
| /* DDR I/F */
 | |
| MIM8_A:		.long	0xFE800008
 | |
| MIMC_A:		.long	0xFE80000C
 | |
| SCR4_A:		.long	0xFE800014
 | |
| STRC_A:		.long	0xFE80001C
 | |
| SDR4_A:		.long	0xFE800034
 | |
| SDMR00308_A:	.long	0xFE900308
 | |
| SDMR00B08_A:	.long	0xFE900B08
 | |
| SDMR02000_A:	.long	0xFE902000
 | |
| 
 | |
| /* GPIO */
 | |
| PSEL0_A:	.long	0xFFEF0070
 | |
| PSEL1_A:	.long	0xFFEF0072
 | |
| 
 | |
| CCR_CACHE_ICI_D:.long	0x00000800
 | |
| CCR_CACHE_D_2:	.long	0x00000103
 | |
| MMU_CONTROL_TI_D:.long	0x00000004
 | |
| RAMCR_D:	.long	0x00000200
 | |
| MSTPCR0_D:	.long	0x00000000
 | |
| MSTPCR1_D:	.long	0x00000000
 | |
| 
 | |
| MMSELR_D:	.long	0xa5a50000
 | |
| BCR_D:		.long	0x00000000
 | |
| CS0BCR_D:	.long	0x77777770
 | |
| CS1BCR_D:	.long	0x77777670
 | |
| CS2BCR_D:	.long	0x77777670
 | |
| CS4BCR_D:	.long	0x77777670
 | |
| CS5BCR_D:	.long	0x77777670
 | |
| CS6BCR_D:	.long	0x77777670
 | |
| CS0WCR_D:	.long	0x7777770F
 | |
| CS1WCR_D:	.long	0x22000002
 | |
| CS2WCR_D:	.long	0x7777770F
 | |
| CS4WCR_D:	.long	0x7777770F
 | |
| CS5WCR_D:	.long	0x7777770F
 | |
| CS6WCR_D:	.long	0x7777770F
 | |
| CS5PCR_D:	.long	0x77000000
 | |
| CS6PCR_D:	.long	0x77000000
 | |
| ICR0_D:		.long	0x00E00000
 | |
| MIM8_D:		.long	0x00000000
 | |
| MIMC_D1:	.long	0x01d10008
 | |
| MIMC_D2:	.long	0x01d10009
 | |
| MIMC_D3:	.long	0x01d10209
 | |
| SCR4_D1:	.long	0x00000001
 | |
| SCR4_D2:	.long	0x00000002
 | |
| SCR4_D3:	.long	0x00000003
 | |
| SCR4_D4:	.long	0x00000004
 | |
| STRC_D:		.long	0x000f3980
 | |
| SDR4_D:		.long	0x00000300
 | |
| SDMR00308_D:	.long	0x00000000
 | |
| SDMR00B08_D:	.long	0x00000000
 | |
| SDMR02000_D:	.long	0x00000000
 | |
| PSEL0_D:	.word	0x00000001
 | |
| PSEL1_D:	.word	0x00000244
 | |
| SR_MASK_D:	.long	0xEFFFFF0F
 | |
| WDTST_D:	.long	0x5A000FFF
 | |
| WDTCSR_D:	.long	0xA5000000
 | |
| WDTBST_D:	.long	0x55000000
 |