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