xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-mx25/macro.h (revision 326ea986ac150acdc7656d57fca647db80b50158)
139f0023eSMatthias Weisser /*
239f0023eSMatthias Weisser  * (C) Copyright 2011
339f0023eSMatthias Weisser  * Matthias Weisser <weisserm@arcor.de>
439f0023eSMatthias Weisser  *
539f0023eSMatthias Weisser  * (C) Copyright 2009 DENX Software Engineering
639f0023eSMatthias Weisser  * Author: John Rigby <jrigby@gmail.com>
739f0023eSMatthias Weisser  *
839f0023eSMatthias Weisser  * Common asm macros for imx25
939f0023eSMatthias Weisser  *
10*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
1139f0023eSMatthias Weisser  */
1239f0023eSMatthias Weisser 
1339f0023eSMatthias Weisser #ifndef __ASM_ARM_ARCH_MACRO_H__
1439f0023eSMatthias Weisser #define __ASM_ARM_ARCH_MACRO_H__
1539f0023eSMatthias Weisser #ifdef __ASSEMBLY__
1639f0023eSMatthias Weisser 
1739f0023eSMatthias Weisser #include <asm/arch/imx-regs.h>
18a4814a69SStefano Babic #include <generated/asm-offsets.h>
1985d993ceSBenoît Thébaudeau #include <asm/macro.h>
2039f0023eSMatthias Weisser 
2185d993ceSBenoît Thébaudeau /*
2285d993ceSBenoît Thébaudeau  * AIPS setup - Only setup MPROTx registers.
2385d993ceSBenoît Thébaudeau  * The PACR default values are good.
2485d993ceSBenoît Thébaudeau  *
2585d993ceSBenoît Thébaudeau  * Default argument values:
2685d993ceSBenoît Thébaudeau  *  - MPR: Set all MPROTx to be non-bufferable, trusted for R/W, not forced to
2785d993ceSBenoît Thébaudeau  *    user-mode.
2885d993ceSBenoît Thébaudeau  */
2985d993ceSBenoît Thébaudeau .macro init_aips mpr=0x77777777
3085d993ceSBenoît Thébaudeau 	ldr	r0, =IMX_AIPS1_BASE
3185d993ceSBenoît Thébaudeau 	ldr	r1, =\mpr
3285d993ceSBenoît Thébaudeau 	str	r1, [r0, #AIPS_MPR_0_7]
3385d993ceSBenoît Thébaudeau 	str	r1, [r0, #AIPS_MPR_8_15]
3485d993ceSBenoît Thébaudeau 	ldr	r2, =IMX_AIPS2_BASE
3585d993ceSBenoît Thébaudeau 	str	r1, [r2, #AIPS_MPR_0_7]
3685d993ceSBenoît Thébaudeau 	str	r1, [r2, #AIPS_MPR_8_15]
3739f0023eSMatthias Weisser .endm
3839f0023eSMatthias Weisser 
3985d993ceSBenoît Thébaudeau /*
4085d993ceSBenoît Thébaudeau  * MAX (Multi-Layer AHB Crossbar Switch) setup
4185d993ceSBenoît Thébaudeau  *
4285d993ceSBenoît Thébaudeau  * Default argument values:
4385d993ceSBenoît Thébaudeau  *  - MPR: priority is IAHB > DAHB > USBOTG > RTIC > eSDHC2/SDMA
4485d993ceSBenoît Thébaudeau  *  - SGPCR: always park on last master
4585d993ceSBenoît Thébaudeau  *  - MGPCR: restore default values
4685d993ceSBenoît Thébaudeau  */
4785d993ceSBenoît Thébaudeau .macro init_max mpr=0x00043210, sgpcr=0x00000010, mgpcr=0x00000000
4885d993ceSBenoît Thébaudeau 	ldr	r0, =IMX_MAX_BASE
4985d993ceSBenoît Thébaudeau 	ldr	r1, =\mpr
5085d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR0]	/* for S0 */
5185d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR1]	/* for S1 */
5285d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR2]	/* for S2 */
5385d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR3]	/* for S3 */
5485d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR4]	/* for S4 */
5585d993ceSBenoît Thébaudeau 	ldr	r1, =\sgpcr
5685d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR0]	/* for S0 */
5785d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR1]	/* for S1 */
5885d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR2]	/* for S2 */
5985d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR3]	/* for S3 */
6085d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR4]	/* for S4 */
6185d993ceSBenoît Thébaudeau 	ldr	r1, =\mgpcr
6285d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR0]	/* for M0 */
6385d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR1]	/* for M1 */
6485d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR2]	/* for M2 */
6585d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR3]	/* for M3 */
6685d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR4]	/* for M4 */
6785d993ceSBenoît Thébaudeau .endm
6839f0023eSMatthias Weisser 
6985d993ceSBenoît Thébaudeau /*
7085d993ceSBenoît Thébaudeau  * M3IF setup
7185d993ceSBenoît Thébaudeau  *
7285d993ceSBenoît Thébaudeau  * Default argument values:
7385d993ceSBenoît Thébaudeau  *  - CTL:
7485d993ceSBenoît Thébaudeau  * MRRP[0] = LCDC on priority list (1 << 0)			= 0x00000001
7585d993ceSBenoît Thébaudeau  * MRRP[1] = MAX1 not on priority list (0 << 1)			= 0x00000000
7685d993ceSBenoît Thébaudeau  * MRRP[2] = MAX0 not on priority list (0 << 2)			= 0x00000000
7785d993ceSBenoît Thébaudeau  * MRRP[3] = USBH not on priority list (0 << 3)			= 0x00000000
7885d993ceSBenoît Thébaudeau  * MRRP[4] = SDMA not on priority list (0 << 4)			= 0x00000000
7985d993ceSBenoît Thébaudeau  * MRRP[5] = eSDHC1/ATA/FEC not on priority list (0 << 5)	= 0x00000000
8085d993ceSBenoît Thébaudeau  * MRRP[6] = LCDC/SLCDC/MAX2 not on priority list (0 << 6)	= 0x00000000
8185d993ceSBenoît Thébaudeau  * MRRP[7] = CSI not on priority list (0 << 7)			= 0x00000000
8285d993ceSBenoît Thébaudeau  *								------------
8385d993ceSBenoît Thébaudeau  *								  0x00000001
8485d993ceSBenoît Thébaudeau  */
8585d993ceSBenoît Thébaudeau .macro init_m3if ctl=0x00000001
8685d993ceSBenoît Thébaudeau 	/* M3IF Control Register (M3IFCTL) */
8785d993ceSBenoît Thébaudeau 	write32	IMX_M3IF_CTRL_BASE, \ctl
8839f0023eSMatthias Weisser .endm
8939f0023eSMatthias Weisser 
9039f0023eSMatthias Weisser #endif /* __ASSEMBLY__ */
9139f0023eSMatthias Weisser #endif /* __ASM_ARM_ARCH_MACRO_H__ */
92