123608e23SJason Liu /* 223608e23SJason Liu * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved. 323608e23SJason Liu * 41a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 523608e23SJason Liu */ 623608e23SJason Liu 723608e23SJason Liu #ifndef __ASM_ARCH_MX6_IMX_REGS_H__ 823608e23SJason Liu #define __ASM_ARCH_MX6_IMX_REGS_H__ 923608e23SJason Liu 108e99ecd7SBenoît Thébaudeau #define ARCH_MXC 118e99ecd7SBenoît Thébaudeau 1223608e23SJason Liu #define ROMCP_ARB_BASE_ADDR 0x00000000 1323608e23SJason Liu #define ROMCP_ARB_END_ADDR 0x000FFFFF 1425b4aa14SFabio Estevam 1525b4aa14SFabio Estevam #ifdef CONFIG_MX6SL 1625b4aa14SFabio Estevam #define GPU_2D_ARB_BASE_ADDR 0x02200000 1725b4aa14SFabio Estevam #define GPU_2D_ARB_END_ADDR 0x02203FFF 1825b4aa14SFabio Estevam #define OPENVG_ARB_BASE_ADDR 0x02204000 1925b4aa14SFabio Estevam #define OPENVG_ARB_END_ADDR 0x02207FFF 20bc32fc69SPeng Fan #elif (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 2105d54b82SFabio Estevam #define CAAM_ARB_BASE_ADDR 0x00100000 2205d54b82SFabio Estevam #define CAAM_ARB_END_ADDR 0x00107FFF 2305d54b82SFabio Estevam #define GPU_ARB_BASE_ADDR 0x01800000 2405d54b82SFabio Estevam #define GPU_ARB_END_ADDR 0x01803FFF 2505d54b82SFabio Estevam #define APBH_DMA_ARB_BASE_ADDR 0x01804000 2605d54b82SFabio Estevam #define APBH_DMA_ARB_END_ADDR 0x0180BFFF 2705d54b82SFabio Estevam #define M4_BOOTROM_BASE_ADDR 0x007F8000 2805d54b82SFabio Estevam 2956612bf6SPeng Fan #elif !defined(CONFIG_MX6SLL) 3023608e23SJason Liu #define CAAM_ARB_BASE_ADDR 0x00100000 3123608e23SJason Liu #define CAAM_ARB_END_ADDR 0x00103FFF 3223608e23SJason Liu #define APBH_DMA_ARB_BASE_ADDR 0x00110000 3323608e23SJason Liu #define APBH_DMA_ARB_END_ADDR 0x00117FFF 3423608e23SJason Liu #define HDMI_ARB_BASE_ADDR 0x00120000 3523608e23SJason Liu #define HDMI_ARB_END_ADDR 0x00128FFF 3623608e23SJason Liu #define GPU_3D_ARB_BASE_ADDR 0x00130000 3723608e23SJason Liu #define GPU_3D_ARB_END_ADDR 0x00133FFF 3823608e23SJason Liu #define GPU_2D_ARB_BASE_ADDR 0x00134000 3923608e23SJason Liu #define GPU_2D_ARB_END_ADDR 0x00137FFF 4023608e23SJason Liu #define DTCP_ARB_BASE_ADDR 0x00138000 4123608e23SJason Liu #define DTCP_ARB_END_ADDR 0x0013BFFF 4225b4aa14SFabio Estevam #endif /* CONFIG_MX6SL */ 4399193e30SStefan Roese 4499193e30SStefan Roese #define MXS_APBH_BASE APBH_DMA_ARB_BASE_ADDR 4599193e30SStefan Roese #define MXS_GPMI_BASE (APBH_DMA_ARB_BASE_ADDR + 0x02000) 4699193e30SStefan Roese #define MXS_BCH_BASE (APBH_DMA_ARB_BASE_ADDR + 0x04000) 4799193e30SStefan Roese 4823608e23SJason Liu /* GPV - PL301 configuration ports */ 4956612bf6SPeng Fan #if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || \ 5056612bf6SPeng Fan defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL)) 5125b4aa14SFabio Estevam #define GPV2_BASE_ADDR 0x00D00000 5205d54b82SFabio Estevam #define GPV3_BASE_ADDR 0x00E00000 5305d54b82SFabio Estevam #define GPV4_BASE_ADDR 0x00F00000 5405d54b82SFabio Estevam #define GPV5_BASE_ADDR 0x01000000 5505d54b82SFabio Estevam #define GPV6_BASE_ADDR 0x01100000 5605d54b82SFabio Estevam #define PCIE_ARB_BASE_ADDR 0x08000000 5705d54b82SFabio Estevam #define PCIE_ARB_END_ADDR 0x08FFFFFF 5805d54b82SFabio Estevam 5905d54b82SFabio Estevam #else 6056612bf6SPeng Fan #define GPV2_BASE_ADDR 0x00200000 6123608e23SJason Liu #define GPV3_BASE_ADDR 0x00300000 6223608e23SJason Liu #define GPV4_BASE_ADDR 0x00800000 6305d54b82SFabio Estevam #define PCIE_ARB_BASE_ADDR 0x01000000 6405d54b82SFabio Estevam #define PCIE_ARB_END_ADDR 0x01FFFFFF 6505d54b82SFabio Estevam #endif 6605d54b82SFabio Estevam 6723608e23SJason Liu #define IRAM_BASE_ADDR 0x00900000 6823608e23SJason Liu #define SCU_BASE_ADDR 0x00A00000 6923608e23SJason Liu #define IC_INTERFACES_BASE_ADDR 0x00A00100 7023608e23SJason Liu #define GLOBAL_TIMER_BASE_ADDR 0x00A00200 7123608e23SJason Liu #define PRIVATE_TIMERS_WD_BASE_ADDR 0x00A00600 7223608e23SJason Liu #define IC_DISTRIBUTOR_BASE_ADDR 0x00A01000 736d73c234SFabio Estevam #define L2_PL310_BASE 0x00A02000 7423608e23SJason Liu #define GPV0_BASE_ADDR 0x00B00000 7523608e23SJason Liu #define GPV1_BASE_ADDR 0x00C00000 7623608e23SJason Liu 7723608e23SJason Liu #define AIPS1_ARB_BASE_ADDR 0x02000000 7823608e23SJason Liu #define AIPS1_ARB_END_ADDR 0x020FFFFF 7923608e23SJason Liu #define AIPS2_ARB_BASE_ADDR 0x02100000 8023608e23SJason Liu #define AIPS2_ARB_END_ADDR 0x021FFFFF 81bc32fc69SPeng Fan /* AIPS3 only on i.MX6SX */ 82e8cdeefcSYe.Li #define AIPS3_ARB_BASE_ADDR 0x02200000 83e8cdeefcSYe.Li #define AIPS3_ARB_END_ADDR 0x022FFFFF 84bc32fc69SPeng Fan #ifdef CONFIG_MX6SX 8505d54b82SFabio Estevam #define WEIM_ARB_BASE_ADDR 0x50000000 8605d54b82SFabio Estevam #define WEIM_ARB_END_ADDR 0x57FFFFFF 87b93ab2eeSPeng Fan #define QSPI0_AMBA_BASE 0x60000000 88b93ab2eeSPeng Fan #define QSPI0_AMBA_END 0x6FFFFFFF 89b93ab2eeSPeng Fan #define QSPI1_AMBA_BASE 0x70000000 90b93ab2eeSPeng Fan #define QSPI1_AMBA_END 0x7FFFFFFF 91bc32fc69SPeng Fan #elif defined(CONFIG_MX6UL) 92bc32fc69SPeng Fan #define WEIM_ARB_BASE_ADDR 0x50000000 93bc32fc69SPeng Fan #define WEIM_ARB_END_ADDR 0x57FFFFFF 94bc32fc69SPeng Fan #define QSPI0_AMBA_BASE 0x60000000 95bc32fc69SPeng Fan #define QSPI0_AMBA_END 0x6FFFFFFF 9656612bf6SPeng Fan #elif !defined(CONFIG_MX6SLL) 9723608e23SJason Liu #define SATA_ARB_BASE_ADDR 0x02200000 9823608e23SJason Liu #define SATA_ARB_END_ADDR 0x02203FFF 9923608e23SJason Liu #define OPENVG_ARB_BASE_ADDR 0x02204000 10023608e23SJason Liu #define OPENVG_ARB_END_ADDR 0x02207FFF 10123608e23SJason Liu #define HSI_ARB_BASE_ADDR 0x02208000 10223608e23SJason Liu #define HSI_ARB_END_ADDR 0x0220BFFF 10323608e23SJason Liu #define IPU1_ARB_BASE_ADDR 0x02400000 10423608e23SJason Liu #define IPU1_ARB_END_ADDR 0x027FFFFF 10523608e23SJason Liu #define IPU2_ARB_BASE_ADDR 0x02800000 10623608e23SJason Liu #define IPU2_ARB_END_ADDR 0x02BFFFFF 10723608e23SJason Liu #define WEIM_ARB_BASE_ADDR 0x08000000 10823608e23SJason Liu #define WEIM_ARB_END_ADDR 0x0FFFFFFF 10905d54b82SFabio Estevam #endif 11023608e23SJason Liu 11156612bf6SPeng Fan #if (defined(CONFIG_MX6SLL) || defined(CONFIG_MX6SL) || \ 11256612bf6SPeng Fan defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 11325b4aa14SFabio Estevam #define MMDC0_ARB_BASE_ADDR 0x80000000 11425b4aa14SFabio Estevam #define MMDC0_ARB_END_ADDR 0xFFFFFFFF 11525b4aa14SFabio Estevam #define MMDC1_ARB_BASE_ADDR 0xC0000000 11625b4aa14SFabio Estevam #define MMDC1_ARB_END_ADDR 0xFFFFFFFF 11725b4aa14SFabio Estevam #else 11823608e23SJason Liu #define MMDC0_ARB_BASE_ADDR 0x10000000 11923608e23SJason Liu #define MMDC0_ARB_END_ADDR 0x7FFFFFFF 12023608e23SJason Liu #define MMDC1_ARB_BASE_ADDR 0x80000000 12123608e23SJason Liu #define MMDC1_ARB_END_ADDR 0xFFFFFFFF 12225b4aa14SFabio Estevam #endif 12323608e23SJason Liu 12405d54b82SFabio Estevam #ifndef CONFIG_MX6SX 12505d4df1dSFabio Estevam #define IPU_SOC_BASE_ADDR IPU1_ARB_BASE_ADDR 12605d4df1dSFabio Estevam #define IPU_SOC_OFFSET 0x00200000 12705d54b82SFabio Estevam #endif 12805d4df1dSFabio Estevam 12923608e23SJason Liu /* Defines for Blocks connected via AIPS (SkyBlue) */ 13023608e23SJason Liu #define ATZ1_BASE_ADDR AIPS1_ARB_BASE_ADDR 13123608e23SJason Liu #define ATZ2_BASE_ADDR AIPS2_ARB_BASE_ADDR 13250a082a8SAdrian Alonso #define ATZ3_BASE_ADDR AIPS3_ARB_BASE_ADDR 13323608e23SJason Liu #define AIPS1_BASE_ADDR AIPS1_ON_BASE_ADDR 13423608e23SJason Liu #define AIPS2_BASE_ADDR AIPS2_ON_BASE_ADDR 13550a082a8SAdrian Alonso #define AIPS3_BASE_ADDR AIPS3_ON_BASE_ADDR 13623608e23SJason Liu 13723608e23SJason Liu #define SPDIF_BASE_ADDR (ATZ1_BASE_ADDR + 0x04000) 13823608e23SJason Liu #define ECSPI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x08000) 13923608e23SJason Liu #define ECSPI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x0C000) 14023608e23SJason Liu #define ECSPI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x10000) 14123608e23SJason Liu #define ECSPI4_BASE_ADDR (ATZ1_BASE_ADDR + 0x14000) 14256612bf6SPeng Fan 14356612bf6SPeng Fan #define MX6SL_UART5_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000) 14456612bf6SPeng Fan #define MX6SLL_UART4_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000) 14556612bf6SPeng Fan #define MX6UL_UART7_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000) 14656612bf6SPeng Fan #define MX6SL_UART2_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000) 14756612bf6SPeng Fan #define MX6SLL_UART2_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000) 14856612bf6SPeng Fan #define MX6UL_UART8_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000) 14956612bf6SPeng Fan #define MX6SL_UART3_BASE_ADDR (ATZ1_BASE_ADDR + 0x34000) 15056612bf6SPeng Fan #define MX6SLL_UART3_BASE_ADDR (ATZ1_BASE_ADDR + 0x34000) 15156612bf6SPeng Fan #define MX6SL_UART4_BASE_ADDR (ATZ1_BASE_ADDR + 0x38000) 15256612bf6SPeng Fan 15305d54b82SFabio Estevam #ifndef CONFIG_MX6SX 15423608e23SJason Liu #define ECSPI5_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000) 15505d54b82SFabio Estevam #endif 15656612bf6SPeng Fan #define UART1_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x20000) 15723608e23SJason Liu #define UART1_BASE (ATZ1_BASE_ADDR + 0x20000) 15823608e23SJason Liu #define ESAI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000) 15951560f0bSStefan Roese #define UART8_BASE (ATZ1_BASE_ADDR + 0x24000) 16023608e23SJason Liu #define SSI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x28000) 16123608e23SJason Liu #define SSI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x2C000) 16223608e23SJason Liu #define SSI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x30000) 16323608e23SJason Liu #define ASRC_BASE_ADDR (ATZ1_BASE_ADDR + 0x34000) 16425b4aa14SFabio Estevam 16505d54b82SFabio Estevam #ifndef CONFIG_MX6SX 16623608e23SJason Liu #define SPBA_BASE_ADDR (ATZ1_BASE_ADDR + 0x3C000) 16723608e23SJason Liu #define VPU_BASE_ADDR (ATZ1_BASE_ADDR + 0x40000) 16805d54b82SFabio Estevam #endif 16923608e23SJason Liu #define AIPS1_ON_BASE_ADDR (ATZ1_BASE_ADDR + 0x7C000) 17023608e23SJason Liu 17123608e23SJason Liu #define AIPS1_OFF_BASE_ADDR (ATZ1_BASE_ADDR + 0x80000) 17223608e23SJason Liu #define PWM1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x0000) 17323608e23SJason Liu #define PWM2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4000) 17423608e23SJason Liu #define PWM3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x8000) 17523608e23SJason Liu #define PWM4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0xC000) 17623608e23SJason Liu #define CAN1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x10000) 17723608e23SJason Liu #define CAN2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x14000) 17856612bf6SPeng Fan /* QOSC on i.MX6SLL */ 17956612bf6SPeng Fan #define QOSC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x14000) 18023608e23SJason Liu #define GPT1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x18000) 18123608e23SJason Liu #define GPIO1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x1C000) 18223608e23SJason Liu #define GPIO2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x20000) 18323608e23SJason Liu #define GPIO3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x24000) 18423608e23SJason Liu #define GPIO4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x28000) 18523608e23SJason Liu #define GPIO5_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x2C000) 18607e1c0aeSPeng Fan #define MX6UL_SNVS_LP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000) 18723608e23SJason Liu #define GPIO6_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000) 18823608e23SJason Liu #define GPIO7_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000) 18923608e23SJason Liu #define KPP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x38000) 19023608e23SJason Liu #define WDOG1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x3C000) 19123608e23SJason Liu #define WDOG2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x40000) 1923f467529SWolfgang Grandegger #define ANATOP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x48000) 1933f467529SWolfgang Grandegger #define USB_PHY0_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x49000) 1943f467529SWolfgang Grandegger #define USB_PHY1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4a000) 19523608e23SJason Liu #define CCM_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x44000) 19623608e23SJason Liu #define SNVS_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4C000) 19723608e23SJason Liu #define EPIT1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x50000) 19823608e23SJason Liu #define EPIT2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x54000) 19923608e23SJason Liu #define SRC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x58000) 20023608e23SJason Liu #define GPC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x5C000) 20123608e23SJason Liu #define IOMUXC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x60000) 20256612bf6SPeng Fan #define IOMUXC_GPR_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000) 20356612bf6SPeng Fan #ifdef CONFIG_MX6SLL 20456612bf6SPeng Fan #define CSI_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000) 20556612bf6SPeng Fan #define SDMA_PORT_HOST_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000) 20656612bf6SPeng Fan #define PXP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x70000) 20756612bf6SPeng Fan #define EPDC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000) 20856612bf6SPeng Fan #define DCP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x7C000) 20956612bf6SPeng Fan #elif defined(CONFIG_MX6SL) 21025b4aa14SFabio Estevam #define CSI_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000) 21125b4aa14SFabio Estevam #define SIPIX_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000) 21225b4aa14SFabio Estevam #define SDMA_PORT_HOST_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000) 21356612bf6SPeng Fan #elif defined(CONFIG_MX6SX) 21405d54b82SFabio Estevam #define CANFD1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000) 21505d54b82SFabio Estevam #define SDMA_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000) 21605d54b82SFabio Estevam #define CANFD2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x70000) 21705d54b82SFabio Estevam #define SEMAPHORE1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000) 21805d54b82SFabio Estevam #define SEMAPHORE2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x78000) 21905d54b82SFabio Estevam #define RDC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x7C000) 22025b4aa14SFabio Estevam #else 22123608e23SJason Liu #define DCIC1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000) 22223608e23SJason Liu #define DCIC2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000) 22323608e23SJason Liu #define DMA_REQ_PORT_HOST_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000) 22425b4aa14SFabio Estevam #endif 22523608e23SJason Liu 22656612bf6SPeng Fan #define MX6SL_LCDIF_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x78000) 22756612bf6SPeng Fan #define MX6SLL_LCDIF_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x78000) 22856612bf6SPeng Fan 22923608e23SJason Liu #define AIPS2_ON_BASE_ADDR (ATZ2_BASE_ADDR + 0x7C000) 23023608e23SJason Liu #define AIPS2_OFF_BASE_ADDR (ATZ2_BASE_ADDR + 0x80000) 23150a082a8SAdrian Alonso #define AIPS3_ON_BASE_ADDR (ATZ3_BASE_ADDR + 0x7C000) 23250a082a8SAdrian Alonso #define AIPS3_OFF_BASE_ADDR (ATZ3_BASE_ADDR + 0x80000) 23323608e23SJason Liu #define CAAM_BASE_ADDR (ATZ2_BASE_ADDR) 23423608e23SJason Liu #define ARM_BASE_ADDR (ATZ2_BASE_ADDR + 0x40000) 2350200020bSRaul Cardenas 236e99d7193SAlex Porosanu #define CONFIG_SYS_FSL_SEC_OFFSET 0 237e99d7193SAlex Porosanu #define CONFIG_SYS_FSL_SEC_ADDR (CAAM_BASE_ADDR + \ 238e99d7193SAlex Porosanu CONFIG_SYS_FSL_SEC_OFFSET) 239e99d7193SAlex Porosanu #define CONFIG_SYS_FSL_JR0_OFFSET 0x1000 240e99d7193SAlex Porosanu #define CONFIG_SYS_FSL_JR0_ADDR (CAAM_BASE_ADDR + \ 241e99d7193SAlex Porosanu CONFIG_SYS_FSL_JR0_OFFSET) 242e99d7193SAlex Porosanu #define CONFIG_SYS_FSL_MAX_NUM_OF_SEC 1 2430200020bSRaul Cardenas 2445546ad07SYe.Li #define USB_PL301_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x0000) 2455546ad07SYe.Li #define USB_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4000) 24625b4aa14SFabio Estevam 24723608e23SJason Liu #define ENET_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x8000) 24825b4aa14SFabio Estevam #ifdef CONFIG_MX6SL 24925b4aa14SFabio Estevam #define MSHC_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0xC000) 25025b4aa14SFabio Estevam #else 25123608e23SJason Liu #define MLB_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0xC000) 25225b4aa14SFabio Estevam #endif 25325b4aa14SFabio Estevam 25423608e23SJason Liu #define USDHC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x10000) 25523608e23SJason Liu #define USDHC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x14000) 25623608e23SJason Liu #define USDHC3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x18000) 25723608e23SJason Liu #define USDHC4_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x1C000) 25823608e23SJason Liu #define I2C1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x20000) 25923608e23SJason Liu #define I2C2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x24000) 26023608e23SJason Liu #define I2C3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x28000) 26123608e23SJason Liu #define ROMCP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x2C000) 26223608e23SJason Liu #define MMDC_P0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x30000) 26356612bf6SPeng Fan /* i.MX6SL/SLL */ 26425b4aa14SFabio Estevam #define RNGB_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000) 265bc32fc69SPeng Fan #ifdef CONFIG_MX6UL 266bc32fc69SPeng Fan #define ENET2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000) 26725b4aa14SFabio Estevam #else 268bc32fc69SPeng Fan /* i.MX6SX */ 269bc32fc69SPeng Fan #define ENET2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000) 27025b4aa14SFabio Estevam #endif 271bc32fc69SPeng Fan /* i.MX6DQ/SDL */ 272bc32fc69SPeng Fan #define MMDC_P1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000) 27325b4aa14SFabio Estevam 27423608e23SJason Liu #define WEIM_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x38000) 27523608e23SJason Liu #define OCOTP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x3C000) 27623608e23SJason Liu #define CSU_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x40000) 27756612bf6SPeng Fan #ifdef CONFIG_MX6SLL 27856612bf6SPeng Fan #define IOMUXC_GPR_SNVS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x44000) 27956612bf6SPeng Fan #define IOMUXC_SNVS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000) 28056612bf6SPeng Fan #endif 28123608e23SJason Liu #define IP2APB_PERFMON1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x44000) 28223608e23SJason Liu #define IP2APB_PERFMON2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000) 283b1ce1fb5SPeng Fan #define MX6UL_LCDIF1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000) 284bdfb2d4dSPeng Fan #define MX6ULL_LCDIF1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000) 28505d54b82SFabio Estevam #ifdef CONFIG_MX6SX 28605d54b82SFabio Estevam #define DEBUG_MONITOR_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000) 28705d54b82SFabio Estevam #else 28823608e23SJason Liu #define IP2APB_PERFMON3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000) 28905d54b82SFabio Estevam #endif 29023608e23SJason Liu #define IP2APB_TZASC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x50000) 291bc32fc69SPeng Fan #ifdef CONFIG_MX6UL 292bc32fc69SPeng Fan #define QSPI0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000) 2939999fc09SFabio Estevam #define UART6_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x7C000) 294bc32fc69SPeng Fan #elif defined(CONFIG_MX6SX) 29505d54b82SFabio Estevam #define SAI1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x54000) 29623608e23SJason Liu #define AUDMUX_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x58000) 29705d54b82SFabio Estevam #define SAI2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x5C000) 298b93ab2eeSPeng Fan #define QSPI0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000) 299b93ab2eeSPeng Fan #define QSPI1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000) 30005d54b82SFabio Estevam #else 301bc32fc69SPeng Fan #define IP2APB_TZASC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x54000) 30223608e23SJason Liu #define MIPI_CSI2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x5C000) 30323608e23SJason Liu #define MIPI_DSI_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000) 30423608e23SJason Liu #define VDOA_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000) 30505d54b82SFabio Estevam #endif 306bc32fc69SPeng Fan #define MX6UL_WDOG3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000) 30723608e23SJason Liu #define UART2_BASE (AIPS2_OFF_BASE_ADDR + 0x68000) 30823608e23SJason Liu #define UART3_BASE (AIPS2_OFF_BASE_ADDR + 0x6C000) 30923608e23SJason Liu #define UART4_BASE (AIPS2_OFF_BASE_ADDR + 0x70000) 31023608e23SJason Liu #define UART5_BASE (AIPS2_OFF_BASE_ADDR + 0x74000) 31121a26940SHeiko Schocher #define I2C4_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x78000) 31223608e23SJason Liu #define IP2APB_USBPHY1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x78000) 31323608e23SJason Liu #define IP2APB_USBPHY2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x7C000) 31456612bf6SPeng Fan /* i.MX6SLL */ 31556612bf6SPeng Fan #define MTR_MASTER_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x7C000) 31623608e23SJason Liu 31705d54b82SFabio Estevam #ifdef CONFIG_MX6SX 31805d54b82SFabio Estevam #define GIS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x04000) 31905d54b82SFabio Estevam #define DCIC1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x0C000) 32005d54b82SFabio Estevam #define DCIC2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x10000) 32105d54b82SFabio Estevam #define CSI1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x14000) 32205d54b82SFabio Estevam #define PXP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x18000) 32305d54b82SFabio Estevam #define CSI2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x1C000) 32405d54b82SFabio Estevam #define VADC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x28000) 32505d54b82SFabio Estevam #define VDEC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x2C000) 32605d54b82SFabio Estevam #define SPBA_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x3C000) 32705d54b82SFabio Estevam #define AIPS3_CONFIG_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x7C000) 32805d54b82SFabio Estevam #define ADC1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x80000) 32905d54b82SFabio Estevam #define ADC2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x84000) 33005d54b82SFabio Estevam #define ECSPI5_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x8C000) 33105d54b82SFabio Estevam #define HS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x90000) 33205d54b82SFabio Estevam #define MU_MCU_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x94000) 33305d54b82SFabio Estevam #define CANFD_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x98000) 33405d54b82SFabio Estevam #define MU_DSP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x9C000) 33505d54b82SFabio Estevam #define UART6_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA0000) 33605d54b82SFabio Estevam #define PWM5_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA4000) 33705d54b82SFabio Estevam #define PWM6_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA8000) 33805d54b82SFabio Estevam #define PWM7_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xAC000) 33905d54b82SFabio Estevam #define PWM8_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xB0000) 340bdfb2d4dSPeng Fan #elif defined(CONFIG_MX6ULL) 341bdfb2d4dSPeng Fan #define AIPS3_CONFIG_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x7C000) 342bdfb2d4dSPeng Fan #define DCP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x80000) 343bdfb2d4dSPeng Fan #define RNGB_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x84000) 344bdfb2d4dSPeng Fan #define UART8_IPS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x88000) 345bdfb2d4dSPeng Fan #define EPDC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x8C000) 346bdfb2d4dSPeng Fan #define IOMUXC_SNVS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x90000) 347bdfb2d4dSPeng Fan #define SNVS_GPR_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x94000) 34805d54b82SFabio Estevam #endif 349b1ce1fb5SPeng Fan /* Only for i.MX6SX */ 350b1ce1fb5SPeng Fan #define LCDIF2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x24000) 351b1ce1fb5SPeng Fan #define MX6SX_LCDIF1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x20000) 352bc32fc69SPeng Fan #define MX6SX_WDOG3_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x88000) 353bc32fc69SPeng Fan 35456612bf6SPeng Fan #if !(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || \ 35556612bf6SPeng Fan defined(CONFIG_MX6SLL) || defined(CONFIG_MX6SL)) 35623608e23SJason Liu #define IRAM_SIZE 0x00040000 35705d54b82SFabio Estevam #else 35805d54b82SFabio Estevam #define IRAM_SIZE 0x00020000 35905d54b82SFabio Estevam #endif 36028774cbaSTroy Kisky #define FEC_QUIRK_ENET_MAC 36123608e23SJason Liu 362*552a848eSStefano Babic #include <asm/mach-imx/regs-lcdif.h> 36323608e23SJason Liu #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) 36423608e23SJason Liu #include <asm/types.h> 36523608e23SJason Liu 366b1ce1fb5SPeng Fan /* only for i.MX6SX/UL */ 367bdfb2d4dSPeng Fan #define WDOG3_BASE_ADDR ((is_mx6ul() ? \ 3680c890879SPeng Fan MX6UL_WDOG3_BASE_ADDR : MX6SX_WDOG3_BASE_ADDR)) 36956612bf6SPeng Fan #define LCDIF1_BASE_ADDR ((is_cpu_type(MXC_CPU_MX6SLL)) ? \ 37056612bf6SPeng Fan MX6SLL_LCDIF_BASE_ADDR : \ 37156612bf6SPeng Fan (is_cpu_type(MXC_CPU_MX6SL)) ? \ 37256612bf6SPeng Fan MX6SL_LCDIF_BASE_ADDR : \ 37356612bf6SPeng Fan ((is_cpu_type(MXC_CPU_MX6UL)) ? \ 374bdfb2d4dSPeng Fan MX6UL_LCDIF1_BASE_ADDR : \ 375bdfb2d4dSPeng Fan ((is_mx6ull()) ? \ 37656612bf6SPeng Fan MX6ULL_LCDIF1_BASE_ADDR : MX6SX_LCDIF1_BASE_ADDR))) 377b1ce1fb5SPeng Fan 378b1ce1fb5SPeng Fan 379be252b65SFabio Estevam extern void imx_get_mac_from_fuse(int dev_id, unsigned char *mac); 38023608e23SJason Liu 381a76df709SGabriel Huau #define SRC_SCR_CORE_1_RESET_OFFSET 14 382a76df709SGabriel Huau #define SRC_SCR_CORE_1_RESET_MASK (1<<SRC_SCR_CORE_1_RESET_OFFSET) 383a76df709SGabriel Huau #define SRC_SCR_CORE_2_RESET_OFFSET 15 384a76df709SGabriel Huau #define SRC_SCR_CORE_2_RESET_MASK (1<<SRC_SCR_CORE_2_RESET_OFFSET) 385a76df709SGabriel Huau #define SRC_SCR_CORE_3_RESET_OFFSET 16 386a76df709SGabriel Huau #define SRC_SCR_CORE_3_RESET_MASK (1<<SRC_SCR_CORE_3_RESET_OFFSET) 387a76df709SGabriel Huau #define SRC_SCR_CORE_1_ENABLE_OFFSET 22 388a76df709SGabriel Huau #define SRC_SCR_CORE_1_ENABLE_MASK (1<<SRC_SCR_CORE_1_ENABLE_OFFSET) 389a76df709SGabriel Huau #define SRC_SCR_CORE_2_ENABLE_OFFSET 23 390a76df709SGabriel Huau #define SRC_SCR_CORE_2_ENABLE_MASK (1<<SRC_SCR_CORE_2_ENABLE_OFFSET) 391a76df709SGabriel Huau #define SRC_SCR_CORE_3_ENABLE_OFFSET 24 392a76df709SGabriel Huau #define SRC_SCR_CORE_3_ENABLE_MASK (1<<SRC_SCR_CORE_3_ENABLE_OFFSET) 393a76df709SGabriel Huau 394613e0106SPeng Fan struct rdc_regs { 395613e0106SPeng Fan u32 vir; /* Version information */ 396613e0106SPeng Fan u32 reserved1[8]; 397613e0106SPeng Fan u32 stat; /* Status */ 398613e0106SPeng Fan u32 intctrl; /* Interrupt and Control */ 399613e0106SPeng Fan u32 intstat; /* Interrupt Status */ 400613e0106SPeng Fan u32 reserved2[116]; 401613e0106SPeng Fan u32 mda[32]; /* Master Domain Assignment */ 402613e0106SPeng Fan u32 reserved3[96]; 403613e0106SPeng Fan u32 pdap[104]; /* Peripheral Domain Access Permissions */ 404613e0106SPeng Fan u32 reserved4[88]; 405613e0106SPeng Fan struct { 406613e0106SPeng Fan u32 mrsa; /* Memory Region Start Address */ 407613e0106SPeng Fan u32 mrea; /* Memory Region End Address */ 408613e0106SPeng Fan u32 mrc; /* Memory Region Control */ 409613e0106SPeng Fan u32 mrvs; /* Memory Region Violation Status */ 410613e0106SPeng Fan } mem_region[55]; 411613e0106SPeng Fan }; 412613e0106SPeng Fan 413613e0106SPeng Fan struct rdc_sema_regs { 414613e0106SPeng Fan u8 gate[64]; /* Gate */ 415613e0106SPeng Fan u16 rstgt; /* Reset Gate */ 416613e0106SPeng Fan }; 417613e0106SPeng Fan 418573960acSFabio Estevam /* WEIM registers */ 419573960acSFabio Estevam struct weim { 420573960acSFabio Estevam u32 cs0gcr1; 421573960acSFabio Estevam u32 cs0gcr2; 422573960acSFabio Estevam u32 cs0rcr1; 423573960acSFabio Estevam u32 cs0rcr2; 424573960acSFabio Estevam u32 cs0wcr1; 425573960acSFabio Estevam u32 cs0wcr2; 426573960acSFabio Estevam 427573960acSFabio Estevam u32 cs1gcr1; 428573960acSFabio Estevam u32 cs1gcr2; 429573960acSFabio Estevam u32 cs1rcr1; 430573960acSFabio Estevam u32 cs1rcr2; 431573960acSFabio Estevam u32 cs1wcr1; 432573960acSFabio Estevam u32 cs1wcr2; 433573960acSFabio Estevam 434573960acSFabio Estevam u32 cs2gcr1; 435573960acSFabio Estevam u32 cs2gcr2; 436573960acSFabio Estevam u32 cs2rcr1; 437573960acSFabio Estevam u32 cs2rcr2; 438573960acSFabio Estevam u32 cs2wcr1; 439573960acSFabio Estevam u32 cs2wcr2; 440573960acSFabio Estevam 441573960acSFabio Estevam u32 cs3gcr1; 442573960acSFabio Estevam u32 cs3gcr2; 443573960acSFabio Estevam u32 cs3rcr1; 444573960acSFabio Estevam u32 cs3rcr2; 445573960acSFabio Estevam u32 cs3wcr1; 446573960acSFabio Estevam u32 cs3wcr2; 447573960acSFabio Estevam 448573960acSFabio Estevam u32 unused[12]; 449573960acSFabio Estevam 450573960acSFabio Estevam u32 wcr; 451573960acSFabio Estevam u32 wiar; 452573960acSFabio Estevam u32 ear; 453573960acSFabio Estevam }; 454573960acSFabio Estevam 45523608e23SJason Liu /* System Reset Controller (SRC) */ 45623608e23SJason Liu struct src { 45723608e23SJason Liu u32 scr; 45823608e23SJason Liu u32 sbmr1; 45923608e23SJason Liu u32 srsr; 46023608e23SJason Liu u32 reserved1[2]; 46123608e23SJason Liu u32 sisr; 46223608e23SJason Liu u32 simr; 46323608e23SJason Liu u32 sbmr2; 46423608e23SJason Liu u32 gpr1; 46523608e23SJason Liu u32 gpr2; 46623608e23SJason Liu u32 gpr3; 46723608e23SJason Liu u32 gpr4; 46823608e23SJason Liu u32 gpr5; 46923608e23SJason Liu u32 gpr6; 47023608e23SJason Liu u32 gpr7; 47123608e23SJason Liu u32 gpr8; 47223608e23SJason Liu u32 gpr9; 47323608e23SJason Liu u32 gpr10; 47423608e23SJason Liu }; 47523608e23SJason Liu 4767b54f5a8SJagan Teki #define src_base ((struct src *)SRC_BASE_ADDR) 4777b54f5a8SJagan Teki 4780623d375SPeng Fan #define SRC_SCR_M4_ENABLE_OFFSET 22 4790623d375SPeng Fan #define SRC_SCR_M4_ENABLE_MASK (1 << 22) 4800623d375SPeng Fan #define SRC_SCR_M4C_NON_SCLR_RST_OFFSET 4 4810623d375SPeng Fan #define SRC_SCR_M4C_NON_SCLR_RST_MASK (1 << 4) 4820623d375SPeng Fan 4833a217731SFabio Estevam /* GPR1 bitfields */ 484d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_APP_CLK_REQ_N BIT(30) 485d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_PCIE_EXIT_L1 BIT(28) 486d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_PCIE_RDY_L23 BIT(27) 487d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_PCIE_ENTER_L1 BIT(26) 488d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_MIPI_COLOR_SW BIT(25) 489d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_DPI_OFF BIT(24) 490d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_EXC_MON_SLVE BIT(22) 4913a217731SFabio Estevam #define IOMUXC_GPR1_ENET_CLK_SEL_OFFSET 21 4923a217731SFabio Estevam #define IOMUXC_GPR1_ENET_CLK_SEL_MASK (1 << IOMUXC_GPR1_ENET_CLK_SEL_OFFSET) 493d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_MIPI_IPU2_MUX_IOMUX BIT(20) 494d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_MIPI_IPU1_MUX_IOMUX BIT(19) 495d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_PCIE_TEST_PD BIT(18) 496d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_IPU_VPU_MUX_IPU2 BIT(17) 497d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_PCIE_REF_CLK_EN BIT(16) 498d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_USB_EXP_MODE BIT(15) 499d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_PCIE_INT BIT(14) 5004a4d3a7dSHeiko Schocher #define IOMUXC_GPR1_USB_OTG_ID_OFFSET 13 5014a4d3a7dSHeiko Schocher #define IOMUXC_GPR1_USB_OTG_ID_SEL_MASK (1 << IOMUXC_GPR1_USB_OTG_ID_OFFSET) 502d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_GINT BIT(12) 503d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ADDRS3_MASK (0x3 << 10) 504d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ADDRS3_32MB (0x0 << 10) 505d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ADDRS3_64MB (0x1 << 10) 506d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ADDRS3_128MB (0x2 << 10) 507d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ACT_CS3 BIT(9) 508d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ADDRS2_MASK (0x3 << 7) 509d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ACT_CS2 BIT(6) 510d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ADDRS1_MASK (0x3 << 4) 511d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ACT_CS1 BIT(3) 512d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ADDRS0_OFFSET (1) 513d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ADDRS0_MASK (0x3 << 1) 514d62f2f8cSHeiko Schocher #define IOMUXC_GPR1_ACT_CS0 BIT(0) 5153a217731SFabio Estevam 516a83e1b7bSEric Nelson /* GPR3 bitfields */ 517a83e1b7bSEric Nelson #define IOMUXC_GPR3_GPU_DBG_OFFSET 29 518a83e1b7bSEric Nelson #define IOMUXC_GPR3_GPU_DBG_MASK (3<<IOMUXC_GPR3_GPU_DBG_OFFSET) 519a83e1b7bSEric Nelson #define IOMUXC_GPR3_BCH_WR_CACHE_CTL_OFFSET 28 520a83e1b7bSEric Nelson #define IOMUXC_GPR3_BCH_WR_CACHE_CTL_MASK (1<<IOMUXC_GPR3_BCH_WR_CACHE_CTL_OFFSET) 521a83e1b7bSEric Nelson #define IOMUXC_GPR3_BCH_RD_CACHE_CTL_OFFSET 27 522a83e1b7bSEric Nelson #define IOMUXC_GPR3_BCH_RD_CACHE_CTL_MASK (1<<IOMUXC_GPR3_BCH_RD_CACHE_CTL_OFFSET) 523a83e1b7bSEric Nelson #define IOMUXC_GPR3_uSDHCx_WR_CACHE_CTL_OFFSET 26 524a83e1b7bSEric Nelson #define IOMUXC_GPR3_uSDHCx_WR_CACHE_CTL_MASK (1<<IOMUXC_GPR3_uSDHCx_WR_CACHE_CTL_OFFSET) 525a83e1b7bSEric Nelson #define IOMUXC_GPR3_uSDHCx_RD_CACHE_CTL_OFFSET 25 526a83e1b7bSEric Nelson #define IOMUXC_GPR3_uSDHCx_RD_CACHE_CTL_MASK (1<<IOMUXC_GPR3_uSDHCx_RD_CACHE_CTL_OFFSET) 527a83e1b7bSEric Nelson #define IOMUXC_GPR3_OCRAM_CTL_OFFSET 21 528a83e1b7bSEric Nelson #define IOMUXC_GPR3_OCRAM_CTL_MASK (0xf<<IOMUXC_GPR3_OCRAM_CTL_OFFSET) 529a83e1b7bSEric Nelson #define IOMUXC_GPR3_OCRAM_STATUS_OFFSET 17 530a83e1b7bSEric Nelson #define IOMUXC_GPR3_OCRAM_STATUS_MASK (0xf<<IOMUXC_GPR3_OCRAM_STATUS_OFFSET) 531a83e1b7bSEric Nelson #define IOMUXC_GPR3_CORE3_DBG_ACK_EN_OFFSET 16 532a83e1b7bSEric Nelson #define IOMUXC_GPR3_CORE3_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE3_DBG_ACK_EN_OFFSET) 533a83e1b7bSEric Nelson #define IOMUXC_GPR3_CORE2_DBG_ACK_EN_OFFSET 15 534a83e1b7bSEric Nelson #define IOMUXC_GPR3_CORE2_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE2_DBG_ACK_EN_OFFSET) 535a83e1b7bSEric Nelson #define IOMUXC_GPR3_CORE1_DBG_ACK_EN_OFFSET 14 536a83e1b7bSEric Nelson #define IOMUXC_GPR3_CORE1_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE1_DBG_ACK_EN_OFFSET) 537a83e1b7bSEric Nelson #define IOMUXC_GPR3_CORE0_DBG_ACK_EN_OFFSET 13 538a83e1b7bSEric Nelson #define IOMUXC_GPR3_CORE0_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE0_DBG_ACK_EN_OFFSET) 539a83e1b7bSEric Nelson #define IOMUXC_GPR3_TZASC2_BOOT_LOCK_OFFSET 12 540a83e1b7bSEric Nelson #define IOMUXC_GPR3_TZASC2_BOOT_LOCK_MASK (1<<IOMUXC_GPR3_TZASC2_BOOT_LOCK_OFFSET) 541a83e1b7bSEric Nelson #define IOMUXC_GPR3_TZASC1_BOOT_LOCK_OFFSET 11 542a83e1b7bSEric Nelson #define IOMUXC_GPR3_TZASC1_BOOT_LOCK_MASK (1<<IOMUXC_GPR3_TZASC1_BOOT_LOCK_OFFSET) 543a83e1b7bSEric Nelson #define IOMUXC_GPR3_IPU_DIAG_OFFSET 10 544a83e1b7bSEric Nelson #define IOMUXC_GPR3_IPU_DIAG_MASK (1<<IOMUXC_GPR3_IPU_DIAG_OFFSET) 545a83e1b7bSEric Nelson 546a83e1b7bSEric Nelson #define IOMUXC_GPR3_MUX_SRC_IPU1_DI0 0 547a83e1b7bSEric Nelson #define IOMUXC_GPR3_MUX_SRC_IPU1_DI1 1 548a83e1b7bSEric Nelson #define IOMUXC_GPR3_MUX_SRC_IPU2_DI0 2 549a83e1b7bSEric Nelson #define IOMUXC_GPR3_MUX_SRC_IPU2_DI1 3 550a83e1b7bSEric Nelson 551a83e1b7bSEric Nelson #define IOMUXC_GPR3_LVDS1_MUX_CTL_OFFSET 8 552a83e1b7bSEric Nelson #define IOMUXC_GPR3_LVDS1_MUX_CTL_MASK (3<<IOMUXC_GPR3_LVDS1_MUX_CTL_OFFSET) 553a83e1b7bSEric Nelson 554a83e1b7bSEric Nelson #define IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET 6 555a83e1b7bSEric Nelson #define IOMUXC_GPR3_LVDS0_MUX_CTL_MASK (3<<IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET) 556a83e1b7bSEric Nelson 557a83e1b7bSEric Nelson #define IOMUXC_GPR3_MIPI_MUX_CTL_OFFSET 4 558a83e1b7bSEric Nelson #define IOMUXC_GPR3_MIPI_MUX_CTL_MASK (3<<IOMUXC_GPR3_MIPI_MUX_CTL_OFFSET) 559a83e1b7bSEric Nelson 560a83e1b7bSEric Nelson #define IOMUXC_GPR3_HDMI_MUX_CTL_OFFSET 2 561a83e1b7bSEric Nelson #define IOMUXC_GPR3_HDMI_MUX_CTL_MASK (3<<IOMUXC_GPR3_HDMI_MUX_CTL_OFFSET) 562a83e1b7bSEric Nelson 563d62f2f8cSHeiko Schocher /* gpr12 bitfields */ 564d62f2f8cSHeiko Schocher #define IOMUXC_GPR12_ARMP_IPG_CLK_EN BIT(27) 565d62f2f8cSHeiko Schocher #define IOMUXC_GPR12_ARMP_AHB_CLK_EN BIT(26) 566d62f2f8cSHeiko Schocher #define IOMUXC_GPR12_ARMP_ATB_CLK_EN BIT(25) 567d62f2f8cSHeiko Schocher #define IOMUXC_GPR12_ARMP_APB_CLK_EN BIT(24) 568d62f2f8cSHeiko Schocher #define IOMUXC_GPR12_DEVICE_TYPE (0xf << 12) 569d62f2f8cSHeiko Schocher #define IOMUXC_GPR12_PCIE_CTL_2 BIT(10) 570d62f2f8cSHeiko Schocher #define IOMUXC_GPR12_LOS_LEVEL (0x1f << 4) 571a83e1b7bSEric Nelson 572de710a14SEric Nelson struct iomuxc { 573bc32fc69SPeng Fan #if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 574aeadf065SFabio Estevam u8 reserved[0x4000]; 575aeadf065SFabio Estevam #endif 576de710a14SEric Nelson u32 gpr[14]; 577de710a14SEric Nelson }; 578de710a14SEric Nelson 579ac17dcf6SFabio Estevam struct gpc { 580ac17dcf6SFabio Estevam u32 cntr; 581ac17dcf6SFabio Estevam u32 pgr; 582ac17dcf6SFabio Estevam u32 imr1; 583ac17dcf6SFabio Estevam u32 imr2; 584ac17dcf6SFabio Estevam u32 imr3; 585ac17dcf6SFabio Estevam u32 imr4; 586ac17dcf6SFabio Estevam u32 isr1; 587ac17dcf6SFabio Estevam u32 isr2; 588ac17dcf6SFabio Estevam u32 isr3; 589ac17dcf6SFabio Estevam u32 isr4; 590ac17dcf6SFabio Estevam }; 591ac17dcf6SFabio Estevam 592de710a14SEric Nelson #define IOMUXC_GPR2_COUNTER_RESET_VAL_OFFSET 20 593de710a14SEric Nelson #define IOMUXC_GPR2_COUNTER_RESET_VAL_MASK (3<<IOMUXC_GPR2_COUNTER_RESET_VAL_OFFSET) 594de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CLK_SHIFT_OFFSET 16 595de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CLK_SHIFT_MASK (7<<IOMUXC_GPR2_LVDS_CLK_SHIFT_OFFSET) 596de710a14SEric Nelson 597de710a14SEric Nelson #define IOMUXC_GPR2_BGREF_RRMODE_OFFSET 15 598de710a14SEric Nelson #define IOMUXC_GPR2_BGREF_RRMODE_MASK (1<<IOMUXC_GPR2_BGREF_RRMODE_OFFSET) 599de710a14SEric Nelson #define IOMUXC_GPR2_BGREF_RRMODE_INTERNAL_RES (1<<IOMUXC_GPR2_BGREF_RRMODE_OFFSET) 600de710a14SEric Nelson #define IOMUXC_GPR2_BGREF_RRMODE_EXTERNAL_RES (0<<IOMUXC_GPR2_BGREF_RRMODE_OFFSET) 601de710a14SEric Nelson #define IOMUXC_GPR2_VSYNC_ACTIVE_HIGH 0 602de710a14SEric Nelson #define IOMUXC_GPR2_VSYNC_ACTIVE_LOW 1 603de710a14SEric Nelson 604de710a14SEric Nelson #define IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET 10 605de710a14SEric Nelson #define IOMUXC_GPR2_DI1_VS_POLARITY_MASK (1<<IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET) 606de710a14SEric Nelson #define IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_HIGH (IOMUXC_GPR2_VSYNC_ACTIVE_HIGH<<IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET) 607de710a14SEric Nelson #define IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_LOW (IOMUXC_GPR2_VSYNC_ACTIVE_LOW<<IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET) 608de710a14SEric Nelson 609de710a14SEric Nelson #define IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET 9 610de710a14SEric Nelson #define IOMUXC_GPR2_DI0_VS_POLARITY_MASK (1<<IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET) 611de710a14SEric Nelson #define IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_HIGH (IOMUXC_GPR2_VSYNC_ACTIVE_HIGH<<IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET) 612de710a14SEric Nelson #define IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_LOW (IOMUXC_GPR2_VSYNC_ACTIVE_LOW<<IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET) 613de710a14SEric Nelson 614de710a14SEric Nelson #define IOMUXC_GPR2_BITMAP_SPWG 0 615de710a14SEric Nelson #define IOMUXC_GPR2_BITMAP_JEIDA 1 616de710a14SEric Nelson 617de710a14SEric Nelson #define IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET 8 618de710a14SEric Nelson #define IOMUXC_GPR2_BIT_MAPPING_CH1_MASK (1<<IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET) 619de710a14SEric Nelson #define IOMUXC_GPR2_BIT_MAPPING_CH1_JEIDA (IOMUXC_GPR2_BITMAP_JEIDA<<IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET) 620de710a14SEric Nelson #define IOMUXC_GPR2_BIT_MAPPING_CH1_SPWG (IOMUXC_GPR2_BITMAP_SPWG<<IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET) 621de710a14SEric Nelson 622de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_18 0 623de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_24 1 624de710a14SEric Nelson 625de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET 7 626de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_CH1_MASK (1<<IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET) 627de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_CH1_18BIT (IOMUXC_GPR2_DATA_WIDTH_18<<IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET) 628de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_CH1_24BIT (IOMUXC_GPR2_DATA_WIDTH_24<<IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET) 629de710a14SEric Nelson 630de710a14SEric Nelson #define IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET 6 631de710a14SEric Nelson #define IOMUXC_GPR2_BIT_MAPPING_CH0_MASK (1<<IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) 632de710a14SEric Nelson #define IOMUXC_GPR2_BIT_MAPPING_CH0_JEIDA (IOMUXC_GPR2_BITMAP_JEIDA<<IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) 633de710a14SEric Nelson #define IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG (IOMUXC_GPR2_BITMAP_SPWG<<IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) 634de710a14SEric Nelson 635de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET 5 636de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_CH0_MASK (1<<IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) 637de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT (IOMUXC_GPR2_DATA_WIDTH_18<<IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) 638de710a14SEric Nelson #define IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT (IOMUXC_GPR2_DATA_WIDTH_24<<IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) 639de710a14SEric Nelson 640de710a14SEric Nelson #define IOMUXC_GPR2_SPLIT_MODE_EN_OFFSET 4 641de710a14SEric Nelson #define IOMUXC_GPR2_SPLIT_MODE_EN_MASK (1<<IOMUXC_GPR2_SPLIT_MODE_EN_OFFSET) 642de710a14SEric Nelson 643de710a14SEric Nelson #define IOMUXC_GPR2_MODE_DISABLED 0 644de710a14SEric Nelson #define IOMUXC_GPR2_MODE_ENABLED_DI0 1 6457aa1e8bbSPierre Aubert #define IOMUXC_GPR2_MODE_ENABLED_DI1 3 646de710a14SEric Nelson 647de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET 2 648de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH1_MODE_MASK (3<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET) 649de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED (IOMUXC_GPR2_MODE_DISABLED<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET) 650de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH1_MODE_ENABLED_DI0 (IOMUXC_GPR2_MODE_ENABLED_DI0<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET) 651de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH1_MODE_ENABLED_DI1 (IOMUXC_GPR2_MODE_ENABLED_DI1<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET) 652de710a14SEric Nelson 653de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET 0 654de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH0_MODE_MASK (3<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) 655de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH0_MODE_DISABLED (IOMUXC_GPR2_MODE_DISABLED<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) 656de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0 (IOMUXC_GPR2_MODE_ENABLED_DI0<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) 657de710a14SEric Nelson #define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI1 (IOMUXC_GPR2_MODE_ENABLED_DI1<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) 658de710a14SEric Nelson 659d5c37c9cSEric Nelson /* ECSPI registers */ 660d5c37c9cSEric Nelson struct cspi_regs { 661d5c37c9cSEric Nelson u32 rxdata; 662d5c37c9cSEric Nelson u32 txdata; 663d5c37c9cSEric Nelson u32 ctrl; 664d5c37c9cSEric Nelson u32 cfg; 665d5c37c9cSEric Nelson u32 intr; 666d5c37c9cSEric Nelson u32 dma; 667d5c37c9cSEric Nelson u32 stat; 668d5c37c9cSEric Nelson u32 period; 669d5c37c9cSEric Nelson }; 670d5c37c9cSEric Nelson 671d5c37c9cSEric Nelson /* 672d5c37c9cSEric Nelson * CSPI register definitions 673d5c37c9cSEric Nelson */ 674d5c37c9cSEric Nelson #define MXC_ECSPI 675d5c37c9cSEric Nelson #define MXC_CSPICTRL_EN (1 << 0) 676d5c37c9cSEric Nelson #define MXC_CSPICTRL_MODE (1 << 1) 677d5c37c9cSEric Nelson #define MXC_CSPICTRL_XCH (1 << 2) 6780f1411bcSFabio Estevam #define MXC_CSPICTRL_MODE_MASK (0xf << 4) 679d5c37c9cSEric Nelson #define MXC_CSPICTRL_CHIPSELECT(x) (((x) & 0x3) << 12) 680d5c37c9cSEric Nelson #define MXC_CSPICTRL_BITCOUNT(x) (((x) & 0xfff) << 20) 681d5c37c9cSEric Nelson #define MXC_CSPICTRL_PREDIV(x) (((x) & 0xF) << 12) 682d5c37c9cSEric Nelson #define MXC_CSPICTRL_POSTDIV(x) (((x) & 0xF) << 8) 683d5c37c9cSEric Nelson #define MXC_CSPICTRL_SELCHAN(x) (((x) & 0x3) << 18) 684d5c37c9cSEric Nelson #define MXC_CSPICTRL_MAXBITS 0xfff 685d5c37c9cSEric Nelson #define MXC_CSPICTRL_TC (1 << 7) 686d5c37c9cSEric Nelson #define MXC_CSPICTRL_RXOVF (1 << 6) 687d5c37c9cSEric Nelson #define MXC_CSPIPERIOD_32KHZ (1 << 15) 688d5c37c9cSEric Nelson #define MAX_SPI_BYTES 32 689a0ae0091SHeiko Schocher #define SPI_MAX_NUM 4 690d5c37c9cSEric Nelson 691d5c37c9cSEric Nelson /* Bit position inside CTRL register to be associated with SS */ 692d5c37c9cSEric Nelson #define MXC_CSPICTRL_CHAN 18 693d5c37c9cSEric Nelson 694d5c37c9cSEric Nelson /* Bit position inside CON register to be associated with SS */ 695d7cbcc76SMarkus Niebel #define MXC_CSPICON_PHA 0 /* SCLK phase control */ 696d7cbcc76SMarkus Niebel #define MXC_CSPICON_POL 4 /* SCLK polarity */ 697d7cbcc76SMarkus Niebel #define MXC_CSPICON_SSPOL 12 /* SS polarity */ 698d7cbcc76SMarkus Niebel #define MXC_CSPICON_CTL 20 /* inactive state of SCLK */ 69956612bf6SPeng Fan #if defined(CONFIG_MX6SLL) || defined(CONFIG_MX6SL) || \ 70056612bf6SPeng Fan defined(CONFIG_MX6DL) || defined(CONFIG_MX6UL) 70125b4aa14SFabio Estevam #define MXC_SPI_BASE_ADDRESSES \ 70225b4aa14SFabio Estevam ECSPI1_BASE_ADDR, \ 70325b4aa14SFabio Estevam ECSPI2_BASE_ADDR, \ 70425b4aa14SFabio Estevam ECSPI3_BASE_ADDR, \ 70525b4aa14SFabio Estevam ECSPI4_BASE_ADDR 70625b4aa14SFabio Estevam #else 707d5c37c9cSEric Nelson #define MXC_SPI_BASE_ADDRESSES \ 708d5c37c9cSEric Nelson ECSPI1_BASE_ADDR, \ 709d5c37c9cSEric Nelson ECSPI2_BASE_ADDR, \ 710d5c37c9cSEric Nelson ECSPI3_BASE_ADDR, \ 711d5c37c9cSEric Nelson ECSPI4_BASE_ADDR, \ 712d5c37c9cSEric Nelson ECSPI5_BASE_ADDR 71325b4aa14SFabio Estevam #endif 714d5c37c9cSEric Nelson 7158f3ff11cSBenoît Thébaudeau struct ocotp_regs { 71623608e23SJason Liu u32 ctrl; 71723608e23SJason Liu u32 ctrl_set; 71823608e23SJason Liu u32 ctrl_clr; 71923608e23SJason Liu u32 ctrl_tog; 72023608e23SJason Liu u32 timing; 72123608e23SJason Liu u32 rsvd0[3]; 72223608e23SJason Liu u32 data; 72323608e23SJason Liu u32 rsvd1[3]; 72423608e23SJason Liu u32 read_ctrl; 72523608e23SJason Liu u32 rsvd2[3]; 7268f3ff11cSBenoît Thébaudeau u32 read_fuse_data; 72723608e23SJason Liu u32 rsvd3[3]; 7288f3ff11cSBenoît Thébaudeau u32 sw_sticky; 72923608e23SJason Liu u32 rsvd4[3]; 73023608e23SJason Liu u32 scs; 73123608e23SJason Liu u32 scs_set; 73223608e23SJason Liu u32 scs_clr; 73323608e23SJason Liu u32 scs_tog; 73423608e23SJason Liu u32 crc_addr; 73523608e23SJason Liu u32 rsvd5[3]; 73623608e23SJason Liu u32 crc_value; 73723608e23SJason Liu u32 rsvd6[3]; 73823608e23SJason Liu u32 version; 739bd2e27c0SJason Liu u32 rsvd7[0xdb]; 74023608e23SJason Liu 7417296a023SPeng Fan /* fuse banks */ 74223608e23SJason Liu struct fuse_bank { 74323608e23SJason Liu u32 fuse_regs[0x20]; 7447296a023SPeng Fan } bank[0]; 74523608e23SJason Liu }; 74623608e23SJason Liu 7476adbd302SBenoît Thébaudeau struct fuse_bank0_regs { 7486adbd302SBenoît Thébaudeau u32 lock; 7496adbd302SBenoît Thébaudeau u32 rsvd0[3]; 7506adbd302SBenoît Thébaudeau u32 uid_low; 7516adbd302SBenoît Thébaudeau u32 rsvd1[3]; 7526adbd302SBenoît Thébaudeau u32 uid_high; 753b83c709eSStefano Babic u32 rsvd2[3]; 7541730af1bSPeng Fan u32 cfg2; 7551730af1bSPeng Fan u32 rsvd3[3]; 7561730af1bSPeng Fan u32 cfg3; 7571730af1bSPeng Fan u32 rsvd4[3]; 7581730af1bSPeng Fan u32 cfg4; 7591730af1bSPeng Fan u32 rsvd5[3]; 760b83c709eSStefano Babic u32 cfg5; 761b83c709eSStefano Babic u32 rsvd6[3]; 7621730af1bSPeng Fan u32 cfg6; 7631730af1bSPeng Fan u32 rsvd7[3]; 7646adbd302SBenoît Thébaudeau }; 7656adbd302SBenoît Thébaudeau 766d43e0ab4STim Harvey struct fuse_bank1_regs { 767d43e0ab4STim Harvey u32 mem0; 768d43e0ab4STim Harvey u32 rsvd0[3]; 769d43e0ab4STim Harvey u32 mem1; 770d43e0ab4STim Harvey u32 rsvd1[3]; 771d43e0ab4STim Harvey u32 mem2; 772d43e0ab4STim Harvey u32 rsvd2[3]; 773d43e0ab4STim Harvey u32 mem3; 774d43e0ab4STim Harvey u32 rsvd3[3]; 775d43e0ab4STim Harvey u32 mem4; 776d43e0ab4STim Harvey u32 rsvd4[3]; 777d43e0ab4STim Harvey u32 ana0; 778d43e0ab4STim Harvey u32 rsvd5[3]; 779d43e0ab4STim Harvey u32 ana1; 780d43e0ab4STim Harvey u32 rsvd6[3]; 781d43e0ab4STim Harvey u32 ana2; 782d43e0ab4STim Harvey u32 rsvd7[3]; 783d43e0ab4STim Harvey }; 784d43e0ab4STim Harvey 78505d54b82SFabio Estevam struct fuse_bank4_regs { 78605d54b82SFabio Estevam u32 sjc_resp_low; 78705d54b82SFabio Estevam u32 rsvd0[3]; 78805d54b82SFabio Estevam u32 sjc_resp_high; 78905d54b82SFabio Estevam u32 rsvd1[3]; 790d4d1dd67SYe Li u32 mac_addr0; 79105d54b82SFabio Estevam u32 rsvd2[3]; 792d4d1dd67SYe Li u32 mac_addr1; 79305d54b82SFabio Estevam u32 rsvd3[3]; 794d4d1dd67SYe Li u32 mac_addr2; /*For i.MX6SX and i.MX6UL*/ 79505d54b82SFabio Estevam u32 rsvd4[7]; 79605d54b82SFabio Estevam u32 gp1; 797bc32fc69SPeng Fan u32 rsvd5[3]; 798bc32fc69SPeng Fan u32 gp2; 799bc32fc69SPeng Fan u32 rsvd6[3]; 80005d54b82SFabio Estevam }; 80123608e23SJason Liu 802f2f77458SJason Liu struct aipstz_regs { 803f2f77458SJason Liu u32 mprot0; 804f2f77458SJason Liu u32 mprot1; 805f2f77458SJason Liu u32 rsvd[0xe]; 806f2f77458SJason Liu u32 opacr0; 807f2f77458SJason Liu u32 opacr1; 808f2f77458SJason Liu u32 opacr2; 809f2f77458SJason Liu u32 opacr3; 810f2f77458SJason Liu u32 opacr4; 811f2f77458SJason Liu }; 812f2f77458SJason Liu 813a7683867SFabio Estevam struct anatop_regs { 814a7683867SFabio Estevam u32 pll_sys; /* 0x000 */ 815a7683867SFabio Estevam u32 pll_sys_set; /* 0x004 */ 816a7683867SFabio Estevam u32 pll_sys_clr; /* 0x008 */ 817a7683867SFabio Estevam u32 pll_sys_tog; /* 0x00c */ 818a7683867SFabio Estevam u32 usb1_pll_480_ctrl; /* 0x010 */ 819a7683867SFabio Estevam u32 usb1_pll_480_ctrl_set; /* 0x014 */ 820a7683867SFabio Estevam u32 usb1_pll_480_ctrl_clr; /* 0x018 */ 821a7683867SFabio Estevam u32 usb1_pll_480_ctrl_tog; /* 0x01c */ 822a7683867SFabio Estevam u32 usb2_pll_480_ctrl; /* 0x020 */ 823a7683867SFabio Estevam u32 usb2_pll_480_ctrl_set; /* 0x024 */ 824a7683867SFabio Estevam u32 usb2_pll_480_ctrl_clr; /* 0x028 */ 825a7683867SFabio Estevam u32 usb2_pll_480_ctrl_tog; /* 0x02c */ 826a7683867SFabio Estevam u32 pll_528; /* 0x030 */ 827a7683867SFabio Estevam u32 pll_528_set; /* 0x034 */ 828a7683867SFabio Estevam u32 pll_528_clr; /* 0x038 */ 829a7683867SFabio Estevam u32 pll_528_tog; /* 0x03c */ 830a7683867SFabio Estevam u32 pll_528_ss; /* 0x040 */ 831a7683867SFabio Estevam u32 rsvd0[3]; 832a7683867SFabio Estevam u32 pll_528_num; /* 0x050 */ 833a7683867SFabio Estevam u32 rsvd1[3]; 834a7683867SFabio Estevam u32 pll_528_denom; /* 0x060 */ 835a7683867SFabio Estevam u32 rsvd2[3]; 836a7683867SFabio Estevam u32 pll_audio; /* 0x070 */ 837a7683867SFabio Estevam u32 pll_audio_set; /* 0x074 */ 838a7683867SFabio Estevam u32 pll_audio_clr; /* 0x078 */ 839a7683867SFabio Estevam u32 pll_audio_tog; /* 0x07c */ 840a7683867SFabio Estevam u32 pll_audio_num; /* 0x080 */ 841a7683867SFabio Estevam u32 rsvd3[3]; 842a7683867SFabio Estevam u32 pll_audio_denom; /* 0x090 */ 843a7683867SFabio Estevam u32 rsvd4[3]; 844a7683867SFabio Estevam u32 pll_video; /* 0x0a0 */ 845a7683867SFabio Estevam u32 pll_video_set; /* 0x0a4 */ 846a7683867SFabio Estevam u32 pll_video_clr; /* 0x0a8 */ 847a7683867SFabio Estevam u32 pll_video_tog; /* 0x0ac */ 848a7683867SFabio Estevam u32 pll_video_num; /* 0x0b0 */ 849a7683867SFabio Estevam u32 rsvd5[3]; 850a7683867SFabio Estevam u32 pll_video_denom; /* 0x0c0 */ 851a7683867SFabio Estevam u32 rsvd6[3]; 852a7683867SFabio Estevam u32 pll_mlb; /* 0x0d0 */ 853a7683867SFabio Estevam u32 pll_mlb_set; /* 0x0d4 */ 854a7683867SFabio Estevam u32 pll_mlb_clr; /* 0x0d8 */ 855a7683867SFabio Estevam u32 pll_mlb_tog; /* 0x0dc */ 856a7683867SFabio Estevam u32 pll_enet; /* 0x0e0 */ 857a7683867SFabio Estevam u32 pll_enet_set; /* 0x0e4 */ 858a7683867SFabio Estevam u32 pll_enet_clr; /* 0x0e8 */ 859a7683867SFabio Estevam u32 pll_enet_tog; /* 0x0ec */ 860a7683867SFabio Estevam u32 pfd_480; /* 0x0f0 */ 861a7683867SFabio Estevam u32 pfd_480_set; /* 0x0f4 */ 862a7683867SFabio Estevam u32 pfd_480_clr; /* 0x0f8 */ 863a7683867SFabio Estevam u32 pfd_480_tog; /* 0x0fc */ 864a7683867SFabio Estevam u32 pfd_528; /* 0x100 */ 865a7683867SFabio Estevam u32 pfd_528_set; /* 0x104 */ 866a7683867SFabio Estevam u32 pfd_528_clr; /* 0x108 */ 867a7683867SFabio Estevam u32 pfd_528_tog; /* 0x10c */ 868a7683867SFabio Estevam u32 reg_1p1; /* 0x110 */ 869a7683867SFabio Estevam u32 reg_1p1_set; /* 0x114 */ 870a7683867SFabio Estevam u32 reg_1p1_clr; /* 0x118 */ 871a7683867SFabio Estevam u32 reg_1p1_tog; /* 0x11c */ 872a7683867SFabio Estevam u32 reg_3p0; /* 0x120 */ 873a7683867SFabio Estevam u32 reg_3p0_set; /* 0x124 */ 874a7683867SFabio Estevam u32 reg_3p0_clr; /* 0x128 */ 875a7683867SFabio Estevam u32 reg_3p0_tog; /* 0x12c */ 876a7683867SFabio Estevam u32 reg_2p5; /* 0x130 */ 877a7683867SFabio Estevam u32 reg_2p5_set; /* 0x134 */ 878a7683867SFabio Estevam u32 reg_2p5_clr; /* 0x138 */ 879a7683867SFabio Estevam u32 reg_2p5_tog; /* 0x13c */ 880a7683867SFabio Estevam u32 reg_core; /* 0x140 */ 881a7683867SFabio Estevam u32 reg_core_set; /* 0x144 */ 882a7683867SFabio Estevam u32 reg_core_clr; /* 0x148 */ 883a7683867SFabio Estevam u32 reg_core_tog; /* 0x14c */ 884a7683867SFabio Estevam u32 ana_misc0; /* 0x150 */ 885a7683867SFabio Estevam u32 ana_misc0_set; /* 0x154 */ 886a7683867SFabio Estevam u32 ana_misc0_clr; /* 0x158 */ 887a7683867SFabio Estevam u32 ana_misc0_tog; /* 0x15c */ 888a7683867SFabio Estevam u32 ana_misc1; /* 0x160 */ 889a7683867SFabio Estevam u32 ana_misc1_set; /* 0x164 */ 890a7683867SFabio Estevam u32 ana_misc1_clr; /* 0x168 */ 891a7683867SFabio Estevam u32 ana_misc1_tog; /* 0x16c */ 892a7683867SFabio Estevam u32 ana_misc2; /* 0x170 */ 893a7683867SFabio Estevam u32 ana_misc2_set; /* 0x174 */ 894a7683867SFabio Estevam u32 ana_misc2_clr; /* 0x178 */ 895a7683867SFabio Estevam u32 ana_misc2_tog; /* 0x17c */ 896a7683867SFabio Estevam u32 tempsense0; /* 0x180 */ 897a7683867SFabio Estevam u32 tempsense0_set; /* 0x184 */ 898a7683867SFabio Estevam u32 tempsense0_clr; /* 0x188 */ 899a7683867SFabio Estevam u32 tempsense0_tog; /* 0x18c */ 900a7683867SFabio Estevam u32 tempsense1; /* 0x190 */ 901a7683867SFabio Estevam u32 tempsense1_set; /* 0x194 */ 902a7683867SFabio Estevam u32 tempsense1_clr; /* 0x198 */ 903a7683867SFabio Estevam u32 tempsense1_tog; /* 0x19c */ 904a7683867SFabio Estevam u32 usb1_vbus_detect; /* 0x1a0 */ 905a7683867SFabio Estevam u32 usb1_vbus_detect_set; /* 0x1a4 */ 906a7683867SFabio Estevam u32 usb1_vbus_detect_clr; /* 0x1a8 */ 907a7683867SFabio Estevam u32 usb1_vbus_detect_tog; /* 0x1ac */ 908a7683867SFabio Estevam u32 usb1_chrg_detect; /* 0x1b0 */ 909a7683867SFabio Estevam u32 usb1_chrg_detect_set; /* 0x1b4 */ 910a7683867SFabio Estevam u32 usb1_chrg_detect_clr; /* 0x1b8 */ 911a7683867SFabio Estevam u32 usb1_chrg_detect_tog; /* 0x1bc */ 912a7683867SFabio Estevam u32 usb1_vbus_det_stat; /* 0x1c0 */ 913a7683867SFabio Estevam u32 usb1_vbus_det_stat_set; /* 0x1c4 */ 914a7683867SFabio Estevam u32 usb1_vbus_det_stat_clr; /* 0x1c8 */ 915a7683867SFabio Estevam u32 usb1_vbus_det_stat_tog; /* 0x1cc */ 916a7683867SFabio Estevam u32 usb1_chrg_det_stat; /* 0x1d0 */ 917a7683867SFabio Estevam u32 usb1_chrg_det_stat_set; /* 0x1d4 */ 918a7683867SFabio Estevam u32 usb1_chrg_det_stat_clr; /* 0x1d8 */ 919a7683867SFabio Estevam u32 usb1_chrg_det_stat_tog; /* 0x1dc */ 920a7683867SFabio Estevam u32 usb1_loopback; /* 0x1e0 */ 921a7683867SFabio Estevam u32 usb1_loopback_set; /* 0x1e4 */ 922a7683867SFabio Estevam u32 usb1_loopback_clr; /* 0x1e8 */ 923a7683867SFabio Estevam u32 usb1_loopback_tog; /* 0x1ec */ 924a7683867SFabio Estevam u32 usb1_misc; /* 0x1f0 */ 925a7683867SFabio Estevam u32 usb1_misc_set; /* 0x1f4 */ 926a7683867SFabio Estevam u32 usb1_misc_clr; /* 0x1f8 */ 927a7683867SFabio Estevam u32 usb1_misc_tog; /* 0x1fc */ 928a7683867SFabio Estevam u32 usb2_vbus_detect; /* 0x200 */ 929a7683867SFabio Estevam u32 usb2_vbus_detect_set; /* 0x204 */ 930a7683867SFabio Estevam u32 usb2_vbus_detect_clr; /* 0x208 */ 931a7683867SFabio Estevam u32 usb2_vbus_detect_tog; /* 0x20c */ 932a7683867SFabio Estevam u32 usb2_chrg_detect; /* 0x210 */ 933a7683867SFabio Estevam u32 usb2_chrg_detect_set; /* 0x214 */ 934a7683867SFabio Estevam u32 usb2_chrg_detect_clr; /* 0x218 */ 935a7683867SFabio Estevam u32 usb2_chrg_detect_tog; /* 0x21c */ 936a7683867SFabio Estevam u32 usb2_vbus_det_stat; /* 0x220 */ 937a7683867SFabio Estevam u32 usb2_vbus_det_stat_set; /* 0x224 */ 938a7683867SFabio Estevam u32 usb2_vbus_det_stat_clr; /* 0x228 */ 939a7683867SFabio Estevam u32 usb2_vbus_det_stat_tog; /* 0x22c */ 940a7683867SFabio Estevam u32 usb2_chrg_det_stat; /* 0x230 */ 941a7683867SFabio Estevam u32 usb2_chrg_det_stat_set; /* 0x234 */ 942a7683867SFabio Estevam u32 usb2_chrg_det_stat_clr; /* 0x238 */ 943a7683867SFabio Estevam u32 usb2_chrg_det_stat_tog; /* 0x23c */ 944a7683867SFabio Estevam u32 usb2_loopback; /* 0x240 */ 945a7683867SFabio Estevam u32 usb2_loopback_set; /* 0x244 */ 946a7683867SFabio Estevam u32 usb2_loopback_clr; /* 0x248 */ 947a7683867SFabio Estevam u32 usb2_loopback_tog; /* 0x24c */ 948a7683867SFabio Estevam u32 usb2_misc; /* 0x250 */ 949a7683867SFabio Estevam u32 usb2_misc_set; /* 0x254 */ 950a7683867SFabio Estevam u32 usb2_misc_clr; /* 0x258 */ 951a7683867SFabio Estevam u32 usb2_misc_tog; /* 0x25c */ 952a7683867SFabio Estevam u32 digprog; /* 0x260 */ 95320332a06STroy Kisky u32 reserved1[7]; 95420332a06STroy Kisky u32 digprog_sololite; /* 0x280 */ 955a7683867SFabio Estevam }; 956a7683867SFabio Estevam 9573fc4176dSEric Nelson #define ANATOP_PFD_FRAC_SHIFT(n) ((n)*8) 9583fc4176dSEric Nelson #define ANATOP_PFD_FRAC_MASK(n) (0x3f<<ANATOP_PFD_FRAC_SHIFT(n)) 9593fc4176dSEric Nelson #define ANATOP_PFD_STABLE_SHIFT(n) (6+((n)*8)) 9603fc4176dSEric Nelson #define ANATOP_PFD_STABLE_MASK(n) (1<<ANATOP_PFD_STABLE_SHIFT(n)) 9613fc4176dSEric Nelson #define ANATOP_PFD_CLKGATE_SHIFT(n) (7+((n)*8)) 9623fc4176dSEric Nelson #define ANATOP_PFD_CLKGATE_MASK(n) (1<<ANATOP_PFD_CLKGATE_SHIFT(n)) 963e66ad6e7SEric Nelson 96476c91e66SFabio Estevam struct wdog_regs { 96576c91e66SFabio Estevam u16 wcr; /* Control */ 96676c91e66SFabio Estevam u16 wsr; /* Service */ 96776c91e66SFabio Estevam u16 wrsr; /* Reset Status */ 96876c91e66SFabio Estevam u16 wicr; /* Interrupt Control */ 96976c91e66SFabio Estevam u16 wmcr; /* Miscellaneous Control */ 97076c91e66SFabio Estevam }; 97176c91e66SFabio Estevam 972aafe4020SHeiko Schocher #define PWMCR_PRESCALER(x) (((x - 1) & 0xFFF) << 4) 973aafe4020SHeiko Schocher #define PWMCR_DOZEEN (1 << 24) 974aafe4020SHeiko Schocher #define PWMCR_WAITEN (1 << 23) 975aafe4020SHeiko Schocher #define PWMCR_DBGEN (1 << 22) 976aafe4020SHeiko Schocher #define PWMCR_CLKSRC_IPG_HIGH (2 << 16) 977aafe4020SHeiko Schocher #define PWMCR_CLKSRC_IPG (1 << 16) 978aafe4020SHeiko Schocher #define PWMCR_EN (1 << 0) 979aafe4020SHeiko Schocher 980aafe4020SHeiko Schocher struct pwm_regs { 981aafe4020SHeiko Schocher u32 cr; 982aafe4020SHeiko Schocher u32 sr; 983aafe4020SHeiko Schocher u32 ir; 984aafe4020SHeiko Schocher u32 sar; 985aafe4020SHeiko Schocher u32 pr; 986aafe4020SHeiko Schocher u32 cnr; 987aafe4020SHeiko Schocher }; 98823608e23SJason Liu #endif /* __ASSEMBLER__*/ 98923608e23SJason Liu #endif /* __ASM_ARCH_MX6_IMX_REGS_H__ */ 990