123608e23SJason Liu /* 223608e23SJason Liu * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved. 323608e23SJason Liu * 423608e23SJason Liu * This program is free software; you can redistribute it and/or modify 523608e23SJason Liu * it under the terms of the GNU General Public License as published by 623608e23SJason Liu * the Free Software Foundation; either version 2 of the License, or 723608e23SJason Liu * (at your option) any later version. 823608e23SJason Liu 923608e23SJason Liu * This program is distributed in the hope that it will be useful, 1023608e23SJason Liu * but WITHOUT ANY WARRANTY; without even the implied warranty of 1123608e23SJason Liu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1223608e23SJason Liu * GNU General Public License for more details. 1323608e23SJason Liu 1423608e23SJason Liu * You should have received a copy of the GNU General Public License along 1523608e23SJason Liu * with this program; if not, write to the Free Software Foundation, Inc., 1623608e23SJason Liu * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 1723608e23SJason Liu */ 1823608e23SJason Liu 1923608e23SJason Liu #ifndef __ASM_ARCH_MX6_IMX_REGS_H__ 2023608e23SJason Liu #define __ASM_ARCH_MX6_IMX_REGS_H__ 2123608e23SJason Liu 2223608e23SJason Liu #define ROMCP_ARB_BASE_ADDR 0x00000000 2323608e23SJason Liu #define ROMCP_ARB_END_ADDR 0x000FFFFF 2423608e23SJason Liu #define CAAM_ARB_BASE_ADDR 0x00100000 2523608e23SJason Liu #define CAAM_ARB_END_ADDR 0x00103FFF 2623608e23SJason Liu #define APBH_DMA_ARB_BASE_ADDR 0x00110000 2723608e23SJason Liu #define APBH_DMA_ARB_END_ADDR 0x00117FFF 2823608e23SJason Liu #define HDMI_ARB_BASE_ADDR 0x00120000 2923608e23SJason Liu #define HDMI_ARB_END_ADDR 0x00128FFF 3023608e23SJason Liu #define GPU_3D_ARB_BASE_ADDR 0x00130000 3123608e23SJason Liu #define GPU_3D_ARB_END_ADDR 0x00133FFF 3223608e23SJason Liu #define GPU_2D_ARB_BASE_ADDR 0x00134000 3323608e23SJason Liu #define GPU_2D_ARB_END_ADDR 0x00137FFF 3423608e23SJason Liu #define DTCP_ARB_BASE_ADDR 0x00138000 3523608e23SJason Liu #define DTCP_ARB_END_ADDR 0x0013BFFF 3623608e23SJason Liu 3723608e23SJason Liu /* GPV - PL301 configuration ports */ 3823608e23SJason Liu #define GPV2_BASE_ADDR 0x00200000 3923608e23SJason Liu #define GPV3_BASE_ADDR 0x00300000 4023608e23SJason Liu #define GPV4_BASE_ADDR 0x00800000 4123608e23SJason Liu #define IRAM_BASE_ADDR 0x00900000 4223608e23SJason Liu #define SCU_BASE_ADDR 0x00A00000 4323608e23SJason Liu #define IC_INTERFACES_BASE_ADDR 0x00A00100 4423608e23SJason Liu #define GLOBAL_TIMER_BASE_ADDR 0x00A00200 4523608e23SJason Liu #define PRIVATE_TIMERS_WD_BASE_ADDR 0x00A00600 4623608e23SJason Liu #define IC_DISTRIBUTOR_BASE_ADDR 0x00A01000 4723608e23SJason Liu #define GPV0_BASE_ADDR 0x00B00000 4823608e23SJason Liu #define GPV1_BASE_ADDR 0x00C00000 4923608e23SJason Liu #define PCIE_ARB_BASE_ADDR 0x01000000 5023608e23SJason Liu #define PCIE_ARB_END_ADDR 0x01FFFFFF 5123608e23SJason Liu 5223608e23SJason Liu #define AIPS1_ARB_BASE_ADDR 0x02000000 5323608e23SJason Liu #define AIPS1_ARB_END_ADDR 0x020FFFFF 5423608e23SJason Liu #define AIPS2_ARB_BASE_ADDR 0x02100000 5523608e23SJason Liu #define AIPS2_ARB_END_ADDR 0x021FFFFF 5623608e23SJason Liu #define SATA_ARB_BASE_ADDR 0x02200000 5723608e23SJason Liu #define SATA_ARB_END_ADDR 0x02203FFF 5823608e23SJason Liu #define OPENVG_ARB_BASE_ADDR 0x02204000 5923608e23SJason Liu #define OPENVG_ARB_END_ADDR 0x02207FFF 6023608e23SJason Liu #define HSI_ARB_BASE_ADDR 0x02208000 6123608e23SJason Liu #define HSI_ARB_END_ADDR 0x0220BFFF 6223608e23SJason Liu #define IPU1_ARB_BASE_ADDR 0x02400000 6323608e23SJason Liu #define IPU1_ARB_END_ADDR 0x027FFFFF 6423608e23SJason Liu #define IPU2_ARB_BASE_ADDR 0x02800000 6523608e23SJason Liu #define IPU2_ARB_END_ADDR 0x02BFFFFF 6623608e23SJason Liu #define WEIM_ARB_BASE_ADDR 0x08000000 6723608e23SJason Liu #define WEIM_ARB_END_ADDR 0x0FFFFFFF 6823608e23SJason Liu 6923608e23SJason Liu #define MMDC0_ARB_BASE_ADDR 0x10000000 7023608e23SJason Liu #define MMDC0_ARB_END_ADDR 0x7FFFFFFF 7123608e23SJason Liu #define MMDC1_ARB_BASE_ADDR 0x80000000 7223608e23SJason Liu #define MMDC1_ARB_END_ADDR 0xFFFFFFFF 7323608e23SJason Liu 7423608e23SJason Liu /* Defines for Blocks connected via AIPS (SkyBlue) */ 7523608e23SJason Liu #define ATZ1_BASE_ADDR AIPS1_ARB_BASE_ADDR 7623608e23SJason Liu #define ATZ2_BASE_ADDR AIPS2_ARB_BASE_ADDR 7723608e23SJason Liu #define AIPS1_BASE_ADDR AIPS1_ON_BASE_ADDR 7823608e23SJason Liu #define AIPS2_BASE_ADDR AIPS2_ON_BASE_ADDR 7923608e23SJason Liu 8023608e23SJason Liu #define SPDIF_BASE_ADDR (ATZ1_BASE_ADDR + 0x04000) 8123608e23SJason Liu #define ECSPI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x08000) 8223608e23SJason Liu #define ECSPI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x0C000) 8323608e23SJason Liu #define ECSPI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x10000) 8423608e23SJason Liu #define ECSPI4_BASE_ADDR (ATZ1_BASE_ADDR + 0x14000) 8523608e23SJason Liu #define ECSPI5_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000) 8623608e23SJason Liu #define UART1_BASE (ATZ1_BASE_ADDR + 0x20000) 8723608e23SJason Liu #define ESAI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000) 8823608e23SJason Liu #define SSI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x28000) 8923608e23SJason Liu #define SSI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x2C000) 9023608e23SJason Liu #define SSI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x30000) 9123608e23SJason Liu #define ASRC_BASE_ADDR (ATZ1_BASE_ADDR + 0x34000) 9223608e23SJason Liu #define SPBA_BASE_ADDR (ATZ1_BASE_ADDR + 0x3C000) 9323608e23SJason Liu #define VPU_BASE_ADDR (ATZ1_BASE_ADDR + 0x40000) 9423608e23SJason Liu #define AIPS1_ON_BASE_ADDR (ATZ1_BASE_ADDR + 0x7C000) 9523608e23SJason Liu 9623608e23SJason Liu #define AIPS1_OFF_BASE_ADDR (ATZ1_BASE_ADDR + 0x80000) 9723608e23SJason Liu #define PWM1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x0000) 9823608e23SJason Liu #define PWM2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4000) 9923608e23SJason Liu #define PWM3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x8000) 10023608e23SJason Liu #define PWM4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0xC000) 10123608e23SJason Liu #define CAN1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x10000) 10223608e23SJason Liu #define CAN2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x14000) 10323608e23SJason Liu #define GPT1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x18000) 10423608e23SJason Liu #define GPIO1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x1C000) 10523608e23SJason Liu #define GPIO2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x20000) 10623608e23SJason Liu #define GPIO3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x24000) 10723608e23SJason Liu #define GPIO4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x28000) 10823608e23SJason Liu #define GPIO5_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x2C000) 10923608e23SJason Liu #define GPIO6_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000) 11023608e23SJason Liu #define GPIO7_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000) 11123608e23SJason Liu #define KPP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x38000) 11223608e23SJason Liu #define WDOG1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x3C000) 11323608e23SJason Liu #define WDOG2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x40000) 11423608e23SJason Liu #define CCM_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x44000) 11523608e23SJason Liu #define ANATOP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x48000) 11623608e23SJason Liu #define SNVS_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4C000) 11723608e23SJason Liu #define EPIT1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x50000) 11823608e23SJason Liu #define EPIT2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x54000) 11923608e23SJason Liu #define SRC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x58000) 12023608e23SJason Liu #define GPC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x5C000) 12123608e23SJason Liu #define IOMUXC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x60000) 12223608e23SJason Liu #define DCIC1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000) 12323608e23SJason Liu #define DCIC2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000) 12423608e23SJason Liu #define DMA_REQ_PORT_HOST_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000) 12523608e23SJason Liu 12623608e23SJason Liu #define AIPS2_ON_BASE_ADDR (ATZ2_BASE_ADDR + 0x7C000) 12723608e23SJason Liu #define AIPS2_OFF_BASE_ADDR (ATZ2_BASE_ADDR + 0x80000) 12823608e23SJason Liu #define CAAM_BASE_ADDR (ATZ2_BASE_ADDR) 12923608e23SJason Liu #define ARM_BASE_ADDR (ATZ2_BASE_ADDR + 0x40000) 13023608e23SJason Liu #define USBOH3_PL301_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x0000) 13123608e23SJason Liu #define USBOH3_USB_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4000) 13223608e23SJason Liu #define ENET_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x8000) 13323608e23SJason Liu #define MLB_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0xC000) 13423608e23SJason Liu #define USDHC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x10000) 13523608e23SJason Liu #define USDHC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x14000) 13623608e23SJason Liu #define USDHC3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x18000) 13723608e23SJason Liu #define USDHC4_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x1C000) 13823608e23SJason Liu #define I2C1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x20000) 13923608e23SJason Liu #define I2C2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x24000) 14023608e23SJason Liu #define I2C3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x28000) 14123608e23SJason Liu #define ROMCP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x2C000) 14223608e23SJason Liu #define MMDC_P0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x30000) 14323608e23SJason Liu #define MMDC_P1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000) 14423608e23SJason Liu #define WEIM_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x38000) 14523608e23SJason Liu #define OCOTP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x3C000) 14623608e23SJason Liu #define CSU_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x40000) 14723608e23SJason Liu #define IP2APB_PERFMON1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x44000) 14823608e23SJason Liu #define IP2APB_PERFMON2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000) 14923608e23SJason Liu #define IP2APB_PERFMON3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000) 15023608e23SJason Liu #define IP2APB_TZASC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x50000) 15123608e23SJason Liu #define IP2APB_TZASC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x54000) 15223608e23SJason Liu #define AUDMUX_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x58000) 15323608e23SJason Liu #define MIPI_CSI2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x5C000) 15423608e23SJason Liu #define MIPI_DSI_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000) 15523608e23SJason Liu #define VDOA_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000) 15623608e23SJason Liu #define UART2_BASE (AIPS2_OFF_BASE_ADDR + 0x68000) 15723608e23SJason Liu #define UART3_BASE (AIPS2_OFF_BASE_ADDR + 0x6C000) 15823608e23SJason Liu #define UART4_BASE (AIPS2_OFF_BASE_ADDR + 0x70000) 15923608e23SJason Liu #define UART5_BASE (AIPS2_OFF_BASE_ADDR + 0x74000) 16023608e23SJason Liu #define IP2APB_USBPHY1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x78000) 16123608e23SJason Liu #define IP2APB_USBPHY2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x7C000) 16223608e23SJason Liu 16323608e23SJason Liu #define CHIP_REV_1_0 0x10 16423608e23SJason Liu #define IRAM_SIZE 0x00040000 16523608e23SJason Liu #define IMX_IIM_BASE OCOTP_BASE_ADDR 16623608e23SJason Liu 16723608e23SJason Liu #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) 16823608e23SJason Liu #include <asm/types.h> 16923608e23SJason Liu 170be252b65SFabio Estevam extern void imx_get_mac_from_fuse(int dev_id, unsigned char *mac); 17123608e23SJason Liu 17223608e23SJason Liu /* System Reset Controller (SRC) */ 17323608e23SJason Liu struct src { 17423608e23SJason Liu u32 scr; 17523608e23SJason Liu u32 sbmr1; 17623608e23SJason Liu u32 srsr; 17723608e23SJason Liu u32 reserved1[2]; 17823608e23SJason Liu u32 sisr; 17923608e23SJason Liu u32 simr; 18023608e23SJason Liu u32 sbmr2; 18123608e23SJason Liu u32 gpr1; 18223608e23SJason Liu u32 gpr2; 18323608e23SJason Liu u32 gpr3; 18423608e23SJason Liu u32 gpr4; 18523608e23SJason Liu u32 gpr5; 18623608e23SJason Liu u32 gpr6; 18723608e23SJason Liu u32 gpr7; 18823608e23SJason Liu u32 gpr8; 18923608e23SJason Liu u32 gpr9; 19023608e23SJason Liu u32 gpr10; 19123608e23SJason Liu }; 19223608e23SJason Liu 19323608e23SJason Liu struct iim_regs { 19423608e23SJason Liu u32 ctrl; 19523608e23SJason Liu u32 ctrl_set; 19623608e23SJason Liu u32 ctrl_clr; 19723608e23SJason Liu u32 ctrl_tog; 19823608e23SJason Liu u32 timing; 19923608e23SJason Liu u32 rsvd0[3]; 20023608e23SJason Liu u32 data; 20123608e23SJason Liu u32 rsvd1[3]; 20223608e23SJason Liu u32 read_ctrl; 20323608e23SJason Liu u32 rsvd2[3]; 20423608e23SJason Liu u32 fuse_data; 20523608e23SJason Liu u32 rsvd3[3]; 20623608e23SJason Liu u32 sticky; 20723608e23SJason Liu u32 rsvd4[3]; 20823608e23SJason Liu u32 scs; 20923608e23SJason Liu u32 scs_set; 21023608e23SJason Liu u32 scs_clr; 21123608e23SJason Liu u32 scs_tog; 21223608e23SJason Liu u32 crc_addr; 21323608e23SJason Liu u32 rsvd5[3]; 21423608e23SJason Liu u32 crc_value; 21523608e23SJason Liu u32 rsvd6[3]; 21623608e23SJason Liu u32 version; 217*bd2e27c0SJason Liu u32 rsvd7[0xdb]; 21823608e23SJason Liu 21923608e23SJason Liu struct fuse_bank { 22023608e23SJason Liu u32 fuse_regs[0x20]; 22123608e23SJason Liu } bank[15]; 22223608e23SJason Liu }; 22323608e23SJason Liu 22423608e23SJason Liu struct fuse_bank4_regs { 22523608e23SJason Liu u32 sjc_resp_low; 22623608e23SJason Liu u32 rsvd0[3]; 22723608e23SJason Liu u32 sjc_resp_high; 22823608e23SJason Liu u32 rsvd1[3]; 22923608e23SJason Liu u32 mac_addr_low; 23023608e23SJason Liu u32 rsvd2[3]; 23123608e23SJason Liu u32 mac_addr_high; 23223608e23SJason Liu u32 rsvd3[0x13]; 23323608e23SJason Liu }; 23423608e23SJason Liu 23523608e23SJason Liu #endif /* __ASSEMBLER__*/ 23623608e23SJason Liu #endif /* __ASM_ARCH_MX6_IMX_REGS_H__ */ 237