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  *
1039f0023eSMatthias Weisser  * See file CREDITS for list of people who contributed to this
1139f0023eSMatthias Weisser  * project.
1239f0023eSMatthias Weisser  *
1339f0023eSMatthias Weisser  * This program is free software; you can redistribute it and/or
1439f0023eSMatthias Weisser  * modify it under the terms of the GNU General Public License as
1539f0023eSMatthias Weisser  * published by the Free Software Foundation; either version 2 of
1639f0023eSMatthias Weisser  * the License, or (at your option) any later version.
1739f0023eSMatthias Weisser  *
1839f0023eSMatthias Weisser  * This program is distributed in the hope that it will be useful,
1939f0023eSMatthias Weisser  * but WITHOUT ANY WARRANTY; without even the implied warranty of
2039f0023eSMatthias Weisser  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2139f0023eSMatthias Weisser  * GNU General Public License for more details.
2239f0023eSMatthias Weisser  *
2339f0023eSMatthias Weisser  * You should have received a copy of the GNU General Public License
2439f0023eSMatthias Weisser  * along with this program; if not, write to the Free Software
2539f0023eSMatthias Weisser  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
2639f0023eSMatthias Weisser  * MA 02111-1307 USA
2739f0023eSMatthias Weisser  */
2839f0023eSMatthias Weisser 
2939f0023eSMatthias Weisser #ifndef __ASM_ARM_ARCH_MACRO_H__
3039f0023eSMatthias Weisser #define __ASM_ARM_ARCH_MACRO_H__
3139f0023eSMatthias Weisser #ifdef __ASSEMBLY__
3239f0023eSMatthias Weisser 
3339f0023eSMatthias Weisser #include <asm/arch/imx-regs.h>
34a4814a69SStefano Babic #include <generated/asm-offsets.h>
35*85d993ceSBenoît Thébaudeau #include <asm/macro.h>
3639f0023eSMatthias Weisser 
37*85d993ceSBenoît Thébaudeau /*
38*85d993ceSBenoît Thébaudeau  * AIPS setup - Only setup MPROTx registers.
39*85d993ceSBenoît Thébaudeau  * The PACR default values are good.
40*85d993ceSBenoît Thébaudeau  *
41*85d993ceSBenoît Thébaudeau  * Default argument values:
42*85d993ceSBenoît Thébaudeau  *  - MPR: Set all MPROTx to be non-bufferable, trusted for R/W, not forced to
43*85d993ceSBenoît Thébaudeau  *    user-mode.
44*85d993ceSBenoît Thébaudeau  */
45*85d993ceSBenoît Thébaudeau .macro init_aips mpr=0x77777777
46*85d993ceSBenoît Thébaudeau 	ldr	r0, =IMX_AIPS1_BASE
47*85d993ceSBenoît Thébaudeau 	ldr	r1, =\mpr
48*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #AIPS_MPR_0_7]
49*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #AIPS_MPR_8_15]
50*85d993ceSBenoît Thébaudeau 	ldr	r2, =IMX_AIPS2_BASE
51*85d993ceSBenoît Thébaudeau 	str	r1, [r2, #AIPS_MPR_0_7]
52*85d993ceSBenoît Thébaudeau 	str	r1, [r2, #AIPS_MPR_8_15]
5339f0023eSMatthias Weisser .endm
5439f0023eSMatthias Weisser 
55*85d993ceSBenoît Thébaudeau /*
56*85d993ceSBenoît Thébaudeau  * MAX (Multi-Layer AHB Crossbar Switch) setup
57*85d993ceSBenoît Thébaudeau  *
58*85d993ceSBenoît Thébaudeau  * Default argument values:
59*85d993ceSBenoît Thébaudeau  *  - MPR: priority is IAHB > DAHB > USBOTG > RTIC > eSDHC2/SDMA
60*85d993ceSBenoît Thébaudeau  *  - SGPCR: always park on last master
61*85d993ceSBenoît Thébaudeau  *  - MGPCR: restore default values
62*85d993ceSBenoît Thébaudeau  */
63*85d993ceSBenoît Thébaudeau .macro init_max mpr=0x00043210, sgpcr=0x00000010, mgpcr=0x00000000
64*85d993ceSBenoît Thébaudeau 	ldr	r0, =IMX_MAX_BASE
65*85d993ceSBenoît Thébaudeau 	ldr	r1, =\mpr
66*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR0]	/* for S0 */
67*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR1]	/* for S1 */
68*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR2]	/* for S2 */
69*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR3]	/* for S3 */
70*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MPR4]	/* for S4 */
71*85d993ceSBenoît Thébaudeau 	ldr	r1, =\sgpcr
72*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR0]	/* for S0 */
73*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR1]	/* for S1 */
74*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR2]	/* for S2 */
75*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR3]	/* for S3 */
76*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_SGPCR4]	/* for S4 */
77*85d993ceSBenoît Thébaudeau 	ldr	r1, =\mgpcr
78*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR0]	/* for M0 */
79*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR1]	/* for M1 */
80*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR2]	/* for M2 */
81*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR3]	/* for M3 */
82*85d993ceSBenoît Thébaudeau 	str	r1, [r0, #MAX_MGPCR4]	/* for M4 */
83*85d993ceSBenoît Thébaudeau .endm
8439f0023eSMatthias Weisser 
85*85d993ceSBenoît Thébaudeau /*
86*85d993ceSBenoît Thébaudeau  * M3IF setup
87*85d993ceSBenoît Thébaudeau  *
88*85d993ceSBenoît Thébaudeau  * Default argument values:
89*85d993ceSBenoît Thébaudeau  *  - CTL:
90*85d993ceSBenoît Thébaudeau  * MRRP[0] = LCDC on priority list (1 << 0)			= 0x00000001
91*85d993ceSBenoît Thébaudeau  * MRRP[1] = MAX1 not on priority list (0 << 1)			= 0x00000000
92*85d993ceSBenoît Thébaudeau  * MRRP[2] = MAX0 not on priority list (0 << 2)			= 0x00000000
93*85d993ceSBenoît Thébaudeau  * MRRP[3] = USBH not on priority list (0 << 3)			= 0x00000000
94*85d993ceSBenoît Thébaudeau  * MRRP[4] = SDMA not on priority list (0 << 4)			= 0x00000000
95*85d993ceSBenoît Thébaudeau  * MRRP[5] = eSDHC1/ATA/FEC not on priority list (0 << 5)	= 0x00000000
96*85d993ceSBenoît Thébaudeau  * MRRP[6] = LCDC/SLCDC/MAX2 not on priority list (0 << 6)	= 0x00000000
97*85d993ceSBenoît Thébaudeau  * MRRP[7] = CSI not on priority list (0 << 7)			= 0x00000000
98*85d993ceSBenoît Thébaudeau  *								------------
99*85d993ceSBenoît Thébaudeau  *								  0x00000001
100*85d993ceSBenoît Thébaudeau  */
101*85d993ceSBenoît Thébaudeau .macro init_m3if ctl=0x00000001
102*85d993ceSBenoît Thébaudeau 	/* M3IF Control Register (M3IFCTL) */
103*85d993ceSBenoît Thébaudeau 	write32	IMX_M3IF_CTRL_BASE, \ctl
10439f0023eSMatthias Weisser .endm
10539f0023eSMatthias Weisser 
10639f0023eSMatthias Weisser #endif /* __ASSEMBLY__ */
10739f0023eSMatthias Weisser #endif /* __ASM_ARM_ARCH_MACRO_H__ */
108