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