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