mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +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>
		
			
				
	
	
		
			126 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
 | |
|  *
 | |
|  * (C) Copyright 2008-2010 Freescale Semiconductor, Inc.
 | |
|  */
 | |
| 
 | |
| #include <asm/arch/imx-regs.h>
 | |
| #include <generated/asm-offsets.h>
 | |
| #include <asm/macro.h>
 | |
| 
 | |
| /*
 | |
|  * AIPS setup - Only setup MPROTx registers.
 | |
|  * The PACR default values are good.
 | |
|  *
 | |
|  * Default argument values:
 | |
|  *  - MPR: Set all MPROTx to be non-bufferable, trusted for R/W, not forced to
 | |
|  *    user-mode.
 | |
|  *  - OPACR: Clear the on and off peripheral modules Supervisor Protect bit for
 | |
|  *    SDMA to access them.
 | |
|  */
 | |
| .macro init_aips mpr=0x77777777, opacr=0x00000000
 | |
| 	ldr	r0, =AIPS1_BASE_ADDR
 | |
| 	ldr	r1, =\mpr
 | |
| 	str	r1, [r0, #AIPS_MPR_0_7]
 | |
| 	str	r1, [r0, #AIPS_MPR_8_15]
 | |
| 	ldr	r2, =AIPS2_BASE_ADDR
 | |
| 	str	r1, [r2, #AIPS_MPR_0_7]
 | |
| 	str	r1, [r2, #AIPS_MPR_8_15]
 | |
| 
 | |
| 	/* Did not change the AIPS control registers access type. */
 | |
| 	ldr	r1, =\opacr
 | |
| 	str	r1, [r0, #AIPS_OPACR_0_7]
 | |
| 	str	r1, [r0, #AIPS_OPACR_8_15]
 | |
| 	str	r1, [r0, #AIPS_OPACR_16_23]
 | |
| 	str	r1, [r0, #AIPS_OPACR_24_31]
 | |
| 	str	r1, [r0, #AIPS_OPACR_32_39]
 | |
| 	str	r1, [r2, #AIPS_OPACR_0_7]
 | |
| 	str	r1, [r2, #AIPS_OPACR_8_15]
 | |
| 	str	r1, [r2, #AIPS_OPACR_16_23]
 | |
| 	str	r1, [r2, #AIPS_OPACR_24_31]
 | |
| 	str	r1, [r2, #AIPS_OPACR_32_39]
 | |
| .endm
 | |
| 
 | |
| /*
 | |
|  * MAX (Multi-Layer AHB Crossbar Switch) setup
 | |
|  *
 | |
|  * Default argument values:
 | |
|  *  - MPR: priority is M4 > M2 > M3 > M5 > M0 > M1
 | |
|  *  - SGPCR: always park on last master
 | |
|  *  - MGPCR: restore default values
 | |
|  */
 | |
| .macro init_max mpr=0x00302154, sgpcr=0x00000010, mgpcr=0x00000000
 | |
| 	ldr	r0, =MAX_BASE_ADDR
 | |
| 	ldr	r1, =\mpr
 | |
| 	str	r1, [r0, #MAX_MPR0]	/* for S0 */
 | |
| 	str	r1, [r0, #MAX_MPR1]	/* for S1 */
 | |
| 	str	r1, [r0, #MAX_MPR2]	/* for S2 */
 | |
| 	str	r1, [r0, #MAX_MPR3]	/* for S3 */
 | |
| 	str	r1, [r0, #MAX_MPR4]	/* for S4 */
 | |
| 	ldr	r1, =\sgpcr
 | |
| 	str	r1, [r0, #MAX_SGPCR0]	/* for S0 */
 | |
| 	str	r1, [r0, #MAX_SGPCR1]	/* for S1 */
 | |
| 	str	r1, [r0, #MAX_SGPCR2]	/* for S2 */
 | |
| 	str	r1, [r0, #MAX_SGPCR3]	/* for S3 */
 | |
| 	str	r1, [r0, #MAX_SGPCR4]	/* for S4 */
 | |
| 	ldr	r1, =\mgpcr
 | |
| 	str	r1, [r0, #MAX_MGPCR0]	/* for M0 */
 | |
| 	str	r1, [r0, #MAX_MGPCR1]	/* for M1 */
 | |
| 	str	r1, [r0, #MAX_MGPCR2]	/* for M2 */
 | |
| 	str	r1, [r0, #MAX_MGPCR3]	/* for M3 */
 | |
| 	str	r1, [r0, #MAX_MGPCR4]	/* for M4 */
 | |
| 	str	r1, [r0, #MAX_MGPCR5]	/* for M5 */
 | |
| .endm
 | |
| 
 | |
| /*
 | |
|  * M3IF setup
 | |
|  *
 | |
|  * Default argument values:
 | |
|  *  - CTL:
 | |
|  * MRRP[0] = L2CC0 not on priority list (0 << 0)	= 0x00000000
 | |
|  * MRRP[1] = L2CC1 not on priority list (0 << 1)	= 0x00000000
 | |
|  * MRRP[2] = MBX not on priority list (0 << 2)		= 0x00000000
 | |
|  * MRRP[3] = MAX1 not on priority list (0 << 3)		= 0x00000000
 | |
|  * MRRP[4] = SDMA not on priority list (0 << 4)		= 0x00000000
 | |
|  * MRRP[5] = MPEG4 not on priority list (0 << 5)	= 0x00000000
 | |
|  * MRRP[6] = IPU1 on priority list (1 << 6)		= 0x00000040
 | |
|  * MRRP[7] = IPU2 not on priority list (0 << 7)		= 0x00000000
 | |
|  *							------------
 | |
|  *							  0x00000040
 | |
|  */
 | |
| .macro init_m3if ctl=0x00000040
 | |
| 	/* M3IF Control Register (M3IFCTL) */
 | |
| 	write32	M3IF_BASE_ADDR, \ctl
 | |
| .endm
 | |
| 
 | |
| .macro core_init
 | |
| 	mrc	p15, 0, r1, c1, c0, 0
 | |
| 
 | |
| 	/* Set branch prediction enable */
 | |
| 	mrc	p15, 0, r0, c1, c0, 1
 | |
| 	orr	r0, r0, #7
 | |
| 	mcr	p15, 0, r0, c1, c0, 1
 | |
| 	orr	r1, r1, #1 << 11
 | |
| 
 | |
| 	/* Set unaligned access enable */
 | |
| 	orr	r1, r1, #1 << 22
 | |
| 
 | |
| 	/* Set low int latency enable */
 | |
| 	orr	r1, r1, #1 << 21
 | |
| 
 | |
| 	mcr	p15, 0, r1, c1, c0, 0
 | |
| 
 | |
| 	mov	r0, #0
 | |
| 
 | |
| 	mcr	p15, 0, r0, c15, c2, 4
 | |
| 
 | |
| 	mcr	p15, 0, r0, c7, c7, 0	/* Invalidate I cache and D cache */
 | |
| 	mcr	p15, 0, r0, c8, c7, 0	/* Invalidate TLBs */
 | |
| 	mcr	p15, 0, r0, c7, c10, 4	/* Drain the write buffer */
 | |
| 
 | |
| 	/* Setup the Peripheral Port Memory Remap Register */
 | |
| 	ldr	r0, =0x40000015		/* Start from AIPS 2-GB region */
 | |
| 	mcr	p15, 0, r0, c15, c2, 4
 | |
| .endm
 |