1ff9f475dSJason Liu /* 2ff9f475dSJason Liu * (C) Copyright 2009 Freescale Semiconductor, Inc. 3ff9f475dSJason Liu * 4ff9f475dSJason Liu * See file CREDITS for list of people who contributed to this 5ff9f475dSJason Liu * project. 6ff9f475dSJason Liu * 7ff9f475dSJason Liu * This program is free software; you can redistribute it and/or 8ff9f475dSJason Liu * modify it under the terms of the GNU General Public License as 9ff9f475dSJason Liu * published by the Free Software Foundation; either version 2 of 10ff9f475dSJason Liu * the License, or (at your option) any later version. 11ff9f475dSJason Liu * 12ff9f475dSJason Liu * This program is distributed in the hope that it will be useful, 13ff9f475dSJason Liu * but WITHOUT ANY WARRANTY; without even the implied warranty of 14ff9f475dSJason Liu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15ff9f475dSJason Liu * GNU General Public License for more details. 16ff9f475dSJason Liu * 17ff9f475dSJason Liu * You should have received a copy of the GNU General Public License 18ff9f475dSJason Liu * along with this program; if not, write to the Free Software 19ff9f475dSJason Liu * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 20ff9f475dSJason Liu * MA 02111-1307 USA 21ff9f475dSJason Liu */ 22ff9f475dSJason Liu 23595f3e56SLiu Hui-R64343 #ifndef __ASM_ARCH_MX5_IMX_REGS_H__ 24595f3e56SLiu Hui-R64343 #define __ASM_ARCH_MX5_IMX_REGS_H__ 25ff9f475dSJason Liu 26595f3e56SLiu Hui-R64343 #if defined(CONFIG_MX51) 271ab027cbSShawn Guo #define IRAM_BASE_ADDR 0x1FFE0000 /* internal ram */ 28ff9f475dSJason Liu #define IPU_CTRL_BASE_ADDR 0x40000000 29595f3e56SLiu Hui-R64343 #define SPBA0_BASE_ADDR 0x70000000 30595f3e56SLiu Hui-R64343 #define AIPS1_BASE_ADDR 0x73F00000 31595f3e56SLiu Hui-R64343 #define AIPS2_BASE_ADDR 0x83F00000 32595f3e56SLiu Hui-R64343 #define CSD0_BASE_ADDR 0x90000000 33595f3e56SLiu Hui-R64343 #define CSD1_BASE_ADDR 0xA0000000 34595f3e56SLiu Hui-R64343 #define NFC_BASE_ADDR_AXI 0xCFFF0000 35ac4020e3SFabio Estevam #define CS1_BASE_ADDR 0xB8000000 36595f3e56SLiu Hui-R64343 #elif defined(CONFIG_MX53) 37595f3e56SLiu Hui-R64343 #define IPU_CTRL_BASE_ADDR 0x18000000 38595f3e56SLiu Hui-R64343 #define SPBA0_BASE_ADDR 0x50000000 39595f3e56SLiu Hui-R64343 #define AIPS1_BASE_ADDR 0x53F00000 40595f3e56SLiu Hui-R64343 #define AIPS2_BASE_ADDR 0x63F00000 41595f3e56SLiu Hui-R64343 #define CSD0_BASE_ADDR 0x70000000 42595f3e56SLiu Hui-R64343 #define CSD1_BASE_ADDR 0xB0000000 43595f3e56SLiu Hui-R64343 #define NFC_BASE_ADDR_AXI 0xF7FF0000 44595f3e56SLiu Hui-R64343 #define IRAM_BASE_ADDR 0xF8000000 45ac4020e3SFabio Estevam #define CS1_BASE_ADDR 0xF4000000 46d87c85ceSStefano Babic #define SATA_BASE_ADDR 0x10000000 47595f3e56SLiu Hui-R64343 #else 48595f3e56SLiu Hui-R64343 #error "CPU_TYPE not defined" 49595f3e56SLiu Hui-R64343 #endif 50595f3e56SLiu Hui-R64343 51595f3e56SLiu Hui-R64343 #define IRAM_SIZE 0x00020000 /* 128 KB */ 52ff9f475dSJason Liu 53ff9f475dSJason Liu /* 54ff9f475dSJason Liu * SPBA global module enabled #0 55ff9f475dSJason Liu */ 56ff9f475dSJason Liu #define MMC_SDHC1_BASE_ADDR (SPBA0_BASE_ADDR + 0x00004000) 57ff9f475dSJason Liu #define MMC_SDHC2_BASE_ADDR (SPBA0_BASE_ADDR + 0x00008000) 5840f6fffeSStefano Babic #define UART3_BASE (SPBA0_BASE_ADDR + 0x0000C000) 59ff9f475dSJason Liu #define CSPI1_BASE_ADDR (SPBA0_BASE_ADDR + 0x00010000) 60ff9f475dSJason Liu #define SSI2_BASE_ADDR (SPBA0_BASE_ADDR + 0x00014000) 61ff9f475dSJason Liu #define MMC_SDHC3_BASE_ADDR (SPBA0_BASE_ADDR + 0x00020000) 62ff9f475dSJason Liu #define MMC_SDHC4_BASE_ADDR (SPBA0_BASE_ADDR + 0x00024000) 63ff9f475dSJason Liu #define SPDIF_BASE_ADDR (SPBA0_BASE_ADDR + 0x00028000) 64ff9f475dSJason Liu #define ATA_DMA_BASE_ADDR (SPBA0_BASE_ADDR + 0x00030000) 65ff9f475dSJason Liu #define SLIM_DMA_BASE_ADDR (SPBA0_BASE_ADDR + 0x00034000) 66ff9f475dSJason Liu #define HSI2C_DMA_BASE_ADDR (SPBA0_BASE_ADDR + 0x00038000) 67ff9f475dSJason Liu #define SPBA_CTRL_BASE_ADDR (SPBA0_BASE_ADDR + 0x0003C000) 68ff9f475dSJason Liu 69ff9f475dSJason Liu /* 70ff9f475dSJason Liu * AIPS 1 71ff9f475dSJason Liu */ 72ff9f475dSJason Liu #define OTG_BASE_ADDR (AIPS1_BASE_ADDR + 0x00080000) 73ff9f475dSJason Liu #define GPIO1_BASE_ADDR (AIPS1_BASE_ADDR + 0x00084000) 74ff9f475dSJason Liu #define GPIO2_BASE_ADDR (AIPS1_BASE_ADDR + 0x00088000) 75ff9f475dSJason Liu #define GPIO3_BASE_ADDR (AIPS1_BASE_ADDR + 0x0008C000) 76ff9f475dSJason Liu #define GPIO4_BASE_ADDR (AIPS1_BASE_ADDR + 0x00090000) 77ff9f475dSJason Liu #define KPP_BASE_ADDR (AIPS1_BASE_ADDR + 0x00094000) 78ff9f475dSJason Liu #define WDOG1_BASE_ADDR (AIPS1_BASE_ADDR + 0x00098000) 79ff9f475dSJason Liu #define WDOG2_BASE_ADDR (AIPS1_BASE_ADDR + 0x0009C000) 80ff9f475dSJason Liu #define GPT1_BASE_ADDR (AIPS1_BASE_ADDR + 0x000A0000) 81ff9f475dSJason Liu #define SRTC_BASE_ADDR (AIPS1_BASE_ADDR + 0x000A4000) 82ff9f475dSJason Liu #define IOMUXC_BASE_ADDR (AIPS1_BASE_ADDR + 0x000A8000) 83ff9f475dSJason Liu #define EPIT1_BASE_ADDR (AIPS1_BASE_ADDR + 0x000AC000) 84ff9f475dSJason Liu #define EPIT2_BASE_ADDR (AIPS1_BASE_ADDR + 0x000B0000) 85ff9f475dSJason Liu #define PWM1_BASE_ADDR (AIPS1_BASE_ADDR + 0x000B4000) 86ff9f475dSJason Liu #define PWM2_BASE_ADDR (AIPS1_BASE_ADDR + 0x000B8000) 8740f6fffeSStefano Babic #define UART1_BASE (AIPS1_BASE_ADDR + 0x000BC000) 8840f6fffeSStefano Babic #define UART2_BASE (AIPS1_BASE_ADDR + 0x000C0000) 89ff9f475dSJason Liu #define SRC_BASE_ADDR (AIPS1_BASE_ADDR + 0x000D0000) 90ff9f475dSJason Liu #define CCM_BASE_ADDR (AIPS1_BASE_ADDR + 0x000D4000) 91ff9f475dSJason Liu #define GPC_BASE_ADDR (AIPS1_BASE_ADDR + 0x000D8000) 92ff9f475dSJason Liu 93595f3e56SLiu Hui-R64343 #if defined(CONFIG_MX53) 94595f3e56SLiu Hui-R64343 #define GPIO5_BASE_ADDR (AIPS1_BASE_ADDR + 0x000DC000) 95595f3e56SLiu Hui-R64343 #define GPIO6_BASE_ADDR (AIPS1_BASE_ADDR + 0x000E0000) 96595f3e56SLiu Hui-R64343 #define GPIO7_BASE_ADDR (AIPS1_BASE_ADDR + 0x000E4000) 974a9677e5SStefano Babic #define UART4_BASE_ADDR (AIPS1_BASE_ADDR + 0x000F0000) 98595f3e56SLiu Hui-R64343 #endif 99ff9f475dSJason Liu /* 100ff9f475dSJason Liu * AIPS 2 101ff9f475dSJason Liu */ 102ff9f475dSJason Liu #define PLL1_BASE_ADDR (AIPS2_BASE_ADDR + 0x00080000) 103ff9f475dSJason Liu #define PLL2_BASE_ADDR (AIPS2_BASE_ADDR + 0x00084000) 104ff9f475dSJason Liu #define PLL3_BASE_ADDR (AIPS2_BASE_ADDR + 0x00088000) 105bf2eaf51SMarek Vasut #ifdef CONFIG_MX53 106bf2eaf51SMarek Vasut #define PLL4_BASE_ADDR (AIPS2_BASE_ADDR + 0x0008c000) 107bf2eaf51SMarek Vasut #endif 108ff9f475dSJason Liu #define AHBMAX_BASE_ADDR (AIPS2_BASE_ADDR + 0x00094000) 109ff9f475dSJason Liu #define IIM_BASE_ADDR (AIPS2_BASE_ADDR + 0x00098000) 110ff9f475dSJason Liu #define CSU_BASE_ADDR (AIPS2_BASE_ADDR + 0x0009C000) 111ff9f475dSJason Liu #define ARM_BASE_ADDR (AIPS2_BASE_ADDR + 0x000A0000) 112ff9f475dSJason Liu #define OWIRE_BASE_ADDR (AIPS2_BASE_ADDR + 0x000A4000) 113ff9f475dSJason Liu #define FIRI_BASE_ADDR (AIPS2_BASE_ADDR + 0x000A8000) 114ff9f475dSJason Liu #define CSPI2_BASE_ADDR (AIPS2_BASE_ADDR + 0x000AC000) 115ff9f475dSJason Liu #define SDMA_BASE_ADDR (AIPS2_BASE_ADDR + 0x000B0000) 116ff9f475dSJason Liu #define SCC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000B4000) 117ff9f475dSJason Liu #define ROMCP_BASE_ADDR (AIPS2_BASE_ADDR + 0x000B8000) 118ff9f475dSJason Liu #define RTIC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000BC000) 119ff9f475dSJason Liu #define CSPI3_BASE_ADDR (AIPS2_BASE_ADDR + 0x000C0000) 120ff9f475dSJason Liu #define I2C2_BASE_ADDR (AIPS2_BASE_ADDR + 0x000C4000) 121ff9f475dSJason Liu #define I2C1_BASE_ADDR (AIPS2_BASE_ADDR + 0x000C8000) 122ff9f475dSJason Liu #define SSI1_BASE_ADDR (AIPS2_BASE_ADDR + 0x000CC000) 123ff9f475dSJason Liu #define AUDMUX_BASE_ADDR (AIPS2_BASE_ADDR + 0x000D0000) 124ff9f475dSJason Liu #define M4IF_BASE_ADDR (AIPS2_BASE_ADDR + 0x000D8000) 125ff9f475dSJason Liu #define ESDCTL_BASE_ADDR (AIPS2_BASE_ADDR + 0x000D9000) 126ff9f475dSJason Liu #define WEIM_BASE_ADDR (AIPS2_BASE_ADDR + 0x000DA000) 127ff9f475dSJason Liu #define NFC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000DB000) 128ff9f475dSJason Liu #define EMI_BASE_ADDR (AIPS2_BASE_ADDR + 0x000DBF00) 129ff9f475dSJason Liu #define MIPI_HSC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000DC000) 130ff9f475dSJason Liu #define ATA_BASE_ADDR (AIPS2_BASE_ADDR + 0x000E0000) 131ff9f475dSJason Liu #define SIM_BASE_ADDR (AIPS2_BASE_ADDR + 0x000E4000) 132ff9f475dSJason Liu #define SSI3BASE_ADDR (AIPS2_BASE_ADDR + 0x000E8000) 133ff9f475dSJason Liu #define FEC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000EC000) 134ff9f475dSJason Liu #define TVE_BASE_ADDR (AIPS2_BASE_ADDR + 0x000F0000) 135ff9f475dSJason Liu #define VPU_BASE_ADDR (AIPS2_BASE_ADDR + 0x000F4000) 136ff9f475dSJason Liu #define SAHARA_BASE_ADDR (AIPS2_BASE_ADDR + 0x000F8000) 137ff9f475dSJason Liu 1384a9677e5SStefano Babic #if defined(CONFIG_MX53) 1394a9677e5SStefano Babic #define UART5_BASE_ADDR (AIPS2_BASE_ADDR + 0x00090000) 1404a9677e5SStefano Babic #endif 1414a9677e5SStefano Babic 142ff9f475dSJason Liu /* 143ac4020e3SFabio Estevam * WEIM CSnGCR1 144ac4020e3SFabio Estevam */ 145ac4020e3SFabio Estevam #define CSEN 1 146ac4020e3SFabio Estevam #define SWR (1 << 1) 147ac4020e3SFabio Estevam #define SRD (1 << 2) 148ac4020e3SFabio Estevam #define MUM (1 << 3) 149ac4020e3SFabio Estevam #define WFL (1 << 4) 150ac4020e3SFabio Estevam #define RFL (1 << 5) 151ac4020e3SFabio Estevam #define CRE (1 << 6) 152ac4020e3SFabio Estevam #define CREP (1 << 7) 153ac4020e3SFabio Estevam #define BL(x) (((x) & 0x7) << 8) 154ac4020e3SFabio Estevam #define WC (1 << 11) 155ac4020e3SFabio Estevam #define BCD(x) (((x) & 0x3) << 12) 156ac4020e3SFabio Estevam #define BCS(x) (((x) & 0x3) << 14) 157ac4020e3SFabio Estevam #define DSZ(x) (((x) & 0x7) << 16) 158ac4020e3SFabio Estevam #define SP (1 << 19) 159ac4020e3SFabio Estevam #define CSREC(x) (((x) & 0x7) << 20) 160ac4020e3SFabio Estevam #define AUS (1 << 23) 161ac4020e3SFabio Estevam #define GBC(x) (((x) & 0x7) << 24) 162ac4020e3SFabio Estevam #define WP (1 << 27) 163ac4020e3SFabio Estevam #define PSZ(x) (((x) & 0x0f << 28) 164ac4020e3SFabio Estevam 165ac4020e3SFabio Estevam /* 166ac4020e3SFabio Estevam * WEIM CSnGCR2 167ac4020e3SFabio Estevam */ 168ac4020e3SFabio Estevam #define ADH(x) (((x) & 0x3)) 169ac4020e3SFabio Estevam #define DAPS(x) (((x) & 0x0f << 4) 170ac4020e3SFabio Estevam #define DAE (1 << 8) 171ac4020e3SFabio Estevam #define DAP (1 << 9) 172ac4020e3SFabio Estevam #define MUX16_BYP (1 << 12) 173ac4020e3SFabio Estevam 174ac4020e3SFabio Estevam /* 175ac4020e3SFabio Estevam * WEIM CSnRCR1 176ac4020e3SFabio Estevam */ 177ac4020e3SFabio Estevam #define RCSN(x) (((x) & 0x7)) 178ac4020e3SFabio Estevam #define RCSA(x) (((x) & 0x7) << 4) 179ac4020e3SFabio Estevam #define OEN(x) (((x) & 0x7) << 8) 180ac4020e3SFabio Estevam #define OEA(x) (((x) & 0x7) << 12) 181ac4020e3SFabio Estevam #define RADVN(x) (((x) & 0x7) << 16) 182ac4020e3SFabio Estevam #define RAL (1 << 19) 183ac4020e3SFabio Estevam #define RADVA(x) (((x) & 0x7) << 20) 184ac4020e3SFabio Estevam #define RWSC(x) (((x) & 0x3f) << 24) 185ac4020e3SFabio Estevam 186ac4020e3SFabio Estevam /* 187ac4020e3SFabio Estevam * WEIM CSnRCR2 188ac4020e3SFabio Estevam */ 189ac4020e3SFabio Estevam #define RBEN(x) (((x) & 0x7)) 190ac4020e3SFabio Estevam #define RBE (1 << 3) 191ac4020e3SFabio Estevam #define RBEA(x) (((x) & 0x7) << 4) 192ac4020e3SFabio Estevam #define RL(x) (((x) & 0x3) << 8) 193ac4020e3SFabio Estevam #define PAT(x) (((x) & 0x7) << 12) 194ac4020e3SFabio Estevam #define APR (1 << 15) 195ac4020e3SFabio Estevam 196ac4020e3SFabio Estevam /* 197ac4020e3SFabio Estevam * WEIM CSnWCR1 198ac4020e3SFabio Estevam */ 199ac4020e3SFabio Estevam #define WCSN(x) (((x) & 0x7)) 200ac4020e3SFabio Estevam #define WCSA(x) (((x) & 0x7) << 3) 201ac4020e3SFabio Estevam #define WEN(x) (((x) & 0x7) << 6) 202ac4020e3SFabio Estevam #define WEA(x) (((x) & 0x7) << 9) 203ac4020e3SFabio Estevam #define WBEN(x) (((x) & 0x7) << 12) 204ac4020e3SFabio Estevam #define WBEA(x) (((x) & 0x7) << 15) 205ac4020e3SFabio Estevam #define WADVN(x) (((x) & 0x7) << 18) 206ac4020e3SFabio Estevam #define WADVA(x) (((x) & 0x7) << 21) 207ac4020e3SFabio Estevam #define WWSC(x) (((x) & 0x3f) << 24) 208ac4020e3SFabio Estevam #define WBED1 (1 << 30) 209ac4020e3SFabio Estevam #define WAL (1 << 31) 210ac4020e3SFabio Estevam 211ac4020e3SFabio Estevam /* 212ac4020e3SFabio Estevam * WEIM CSnWCR2 213ac4020e3SFabio Estevam */ 214ac4020e3SFabio Estevam #define WBED 1 215ac4020e3SFabio Estevam 216ac4020e3SFabio Estevam /* 217ac4020e3SFabio Estevam * WEIM WCR 218ac4020e3SFabio Estevam */ 219ac4020e3SFabio Estevam #define BCM 1 220ac4020e3SFabio Estevam #define GBCD(x) (((x) & 0x3) << 1) 221ac4020e3SFabio Estevam #define INTEN (1 << 4) 222ac4020e3SFabio Estevam #define INTPOL (1 << 5) 223ac4020e3SFabio Estevam #define WDOG_EN (1 << 8) 224ac4020e3SFabio Estevam #define WDOG_LIMIT(x) (((x) & 0x3) << 9) 225ac4020e3SFabio Estevam 226a6e961c2SFabio Estevam #define CS0_128 0 227a6e961c2SFabio Estevam #define CS0_64M_CS1_64M 1 228a6e961c2SFabio Estevam #define CS0_64M_CS1_32M_CS2_32M 2 229a6e961c2SFabio Estevam #define CS0_32M_CS1_32M_CS2_32M_CS3_32M 3 230a6e961c2SFabio Estevam 231ac4020e3SFabio Estevam /* 23208c61a58SEric Nelson * CSPI register definitions 23308c61a58SEric Nelson */ 23408c61a58SEric Nelson #define MXC_ECSPI 23508c61a58SEric Nelson #define MXC_CSPICTRL_EN (1 << 0) 23608c61a58SEric Nelson #define MXC_CSPICTRL_MODE (1 << 1) 23708c61a58SEric Nelson #define MXC_CSPICTRL_XCH (1 << 2) 23808c61a58SEric Nelson #define MXC_CSPICTRL_CHIPSELECT(x) (((x) & 0x3) << 12) 23908c61a58SEric Nelson #define MXC_CSPICTRL_BITCOUNT(x) (((x) & 0xfff) << 20) 24008c61a58SEric Nelson #define MXC_CSPICTRL_PREDIV(x) (((x) & 0xF) << 12) 24108c61a58SEric Nelson #define MXC_CSPICTRL_POSTDIV(x) (((x) & 0xF) << 8) 24208c61a58SEric Nelson #define MXC_CSPICTRL_SELCHAN(x) (((x) & 0x3) << 18) 24308c61a58SEric Nelson #define MXC_CSPICTRL_MAXBITS 0xfff 24408c61a58SEric Nelson #define MXC_CSPICTRL_TC (1 << 7) 24508c61a58SEric Nelson #define MXC_CSPICTRL_RXOVF (1 << 6) 24608c61a58SEric Nelson #define MXC_CSPIPERIOD_32KHZ (1 << 15) 24708c61a58SEric Nelson #define MAX_SPI_BYTES 32 24808c61a58SEric Nelson 24908c61a58SEric Nelson /* Bit position inside CTRL register to be associated with SS */ 25008c61a58SEric Nelson #define MXC_CSPICTRL_CHAN 18 25108c61a58SEric Nelson 25208c61a58SEric Nelson /* Bit position inside CON register to be associated with SS */ 25308c61a58SEric Nelson #define MXC_CSPICON_POL 4 25408c61a58SEric Nelson #define MXC_CSPICON_PHA 0 25508c61a58SEric Nelson #define MXC_CSPICON_SSPOL 12 25608c61a58SEric Nelson #define MXC_SPI_BASE_ADDRESSES \ 25708c61a58SEric Nelson CSPI1_BASE_ADDR, \ 25808c61a58SEric Nelson CSPI2_BASE_ADDR, \ 25908c61a58SEric Nelson CSPI3_BASE_ADDR, 26008c61a58SEric Nelson 26108c61a58SEric Nelson /* 262ff9f475dSJason Liu * Number of GPIO pins per port 263ff9f475dSJason Liu */ 264ff9f475dSJason Liu #define GPIO_NUM_PIN 32 265ff9f475dSJason Liu 266ff9f475dSJason Liu #define IIM_SREV 0x24 267ff9f475dSJason Liu #define ROM_SI_REV 0x48 268ff9f475dSJason Liu 269ff9f475dSJason Liu #define NFC_BUF_SIZE 0x1000 270ff9f475dSJason Liu 271ff9f475dSJason Liu /* M4IF */ 272ff9f475dSJason Liu #define M4IF_FBPM0 0x40 273ff9f475dSJason Liu #define M4IF_FIDBP 0x48 274ff9f475dSJason Liu 275ff9f475dSJason Liu /* Assuming 24MHz input clock with doubler ON */ 276ff9f475dSJason Liu /* MFI PDF */ 2779db1bfa1SDavid Jander #define DP_OP_864 ((8 << 4) + ((1 - 1) << 0)) 2789db1bfa1SDavid Jander #define DP_MFD_864 (180 - 1) /* PL Dither mode */ 2799db1bfa1SDavid Jander #define DP_MFN_864 180 2809db1bfa1SDavid Jander #define DP_MFN_800_DIT 60 /* PL Dither mode */ 2819db1bfa1SDavid Jander 282ff9f475dSJason Liu #define DP_OP_850 ((8 << 4) + ((1 - 1) << 0)) 283ff9f475dSJason Liu #define DP_MFD_850 (48 - 1) 284ff9f475dSJason Liu #define DP_MFN_850 41 285ff9f475dSJason Liu 286ff9f475dSJason Liu #define DP_OP_800 ((8 << 4) + ((1 - 1) << 0)) 287ff9f475dSJason Liu #define DP_MFD_800 (3 - 1) 288ff9f475dSJason Liu #define DP_MFN_800 1 289ff9f475dSJason Liu 290ff9f475dSJason Liu #define DP_OP_700 ((7 << 4) + ((1 - 1) << 0)) 291ff9f475dSJason Liu #define DP_MFD_700 (24 - 1) 292ff9f475dSJason Liu #define DP_MFN_700 7 293ff9f475dSJason Liu 294ff9f475dSJason Liu #define DP_OP_665 ((6 << 4) + ((1 - 1) << 0)) 295ff9f475dSJason Liu #define DP_MFD_665 (96 - 1) 296ff9f475dSJason Liu #define DP_MFN_665 89 297ff9f475dSJason Liu 298ff9f475dSJason Liu #define DP_OP_532 ((5 << 4) + ((1 - 1) << 0)) 299ff9f475dSJason Liu #define DP_MFD_532 (24 - 1) 300ff9f475dSJason Liu #define DP_MFN_532 13 301ff9f475dSJason Liu 302ff9f475dSJason Liu #define DP_OP_400 ((8 << 4) + ((2 - 1) << 0)) 303ff9f475dSJason Liu #define DP_MFD_400 (3 - 1) 304ff9f475dSJason Liu #define DP_MFN_400 1 305ff9f475dSJason Liu 306ff9f475dSJason Liu #define DP_OP_216 ((6 << 4) + ((3 - 1) << 0)) 307ff9f475dSJason Liu #define DP_MFD_216 (4 - 1) 308ff9f475dSJason Liu #define DP_MFN_216 3 309ff9f475dSJason Liu 310ff9f475dSJason Liu #define CHIP_REV_1_0 0x10 311ff9f475dSJason Liu #define CHIP_REV_1_1 0x11 312ff9f475dSJason Liu #define CHIP_REV_2_0 0x20 313ff9f475dSJason Liu #define CHIP_REV_2_5 0x25 314ff9f475dSJason Liu #define CHIP_REV_3_0 0x30 315ff9f475dSJason Liu 316ff9f475dSJason Liu #define BOARD_REV_1_0 0x0 317ff9f475dSJason Liu #define BOARD_REV_2_0 0x1 318ff9f475dSJason Liu 319565e39c5SLiu Hui-R64343 #define IMX_IIM_BASE (IIM_BASE_ADDR) 320565e39c5SLiu Hui-R64343 321ff9f475dSJason Liu #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) 322ff9f475dSJason Liu #include <asm/types.h> 323ff9f475dSJason Liu 324ff9f475dSJason Liu #define __REG(x) (*((volatile u32 *)(x))) 325ff9f475dSJason Liu #define __REG16(x) (*((volatile u16 *)(x))) 326ff9f475dSJason Liu #define __REG8(x) (*((volatile u8 *)(x))) 327ff9f475dSJason Liu 328ff9f475dSJason Liu struct clkctl { 329ff9f475dSJason Liu u32 ccr; 330ff9f475dSJason Liu u32 ccdr; 331ff9f475dSJason Liu u32 csr; 332ff9f475dSJason Liu u32 ccsr; 333ff9f475dSJason Liu u32 cacrr; 334ff9f475dSJason Liu u32 cbcdr; 335ff9f475dSJason Liu u32 cbcmr; 336ff9f475dSJason Liu u32 cscmr1; 337ff9f475dSJason Liu u32 cscmr2; 338ff9f475dSJason Liu u32 cscdr1; 339ff9f475dSJason Liu u32 cs1cdr; 340ff9f475dSJason Liu u32 cs2cdr; 341ff9f475dSJason Liu u32 cdcdr; 342ff9f475dSJason Liu u32 chsccdr; 343ff9f475dSJason Liu u32 cscdr2; 344ff9f475dSJason Liu u32 cscdr3; 345ff9f475dSJason Liu u32 cscdr4; 346ff9f475dSJason Liu u32 cwdr; 347ff9f475dSJason Liu u32 cdhipr; 348ff9f475dSJason Liu u32 cdcr; 349ff9f475dSJason Liu u32 ctor; 350ff9f475dSJason Liu u32 clpcr; 351ff9f475dSJason Liu u32 cisr; 352ff9f475dSJason Liu u32 cimr; 353ff9f475dSJason Liu u32 ccosr; 354ff9f475dSJason Liu u32 cgpr; 355ff9f475dSJason Liu u32 ccgr0; 356ff9f475dSJason Liu u32 ccgr1; 357ff9f475dSJason Liu u32 ccgr2; 358ff9f475dSJason Liu u32 ccgr3; 359ff9f475dSJason Liu u32 ccgr4; 360ff9f475dSJason Liu u32 ccgr5; 361ff9f475dSJason Liu u32 ccgr6; 3620edf8b5bSStefano Babic #if defined(CONFIG_MX53) 3630edf8b5bSStefano Babic u32 ccgr7; 3640edf8b5bSStefano Babic #endif 365ff9f475dSJason Liu u32 cmeor; 366ff9f475dSJason Liu }; 367ff9f475dSJason Liu 3680edf8b5bSStefano Babic /* DPLL registers */ 3690edf8b5bSStefano Babic struct dpll { 3700edf8b5bSStefano Babic u32 dp_ctl; 3710edf8b5bSStefano Babic u32 dp_config; 3720edf8b5bSStefano Babic u32 dp_op; 3730edf8b5bSStefano Babic u32 dp_mfd; 3740edf8b5bSStefano Babic u32 dp_mfn; 3750edf8b5bSStefano Babic u32 dp_mfn_minus; 3760edf8b5bSStefano Babic u32 dp_mfn_plus; 3770edf8b5bSStefano Babic u32 dp_hfs_op; 3780edf8b5bSStefano Babic u32 dp_hfs_mfd; 3790edf8b5bSStefano Babic u32 dp_hfs_mfn; 3800edf8b5bSStefano Babic u32 dp_mfn_togc; 3810edf8b5bSStefano Babic u32 dp_destat; 3820edf8b5bSStefano Babic }; 383ff9f475dSJason Liu /* WEIM registers */ 384ff9f475dSJason Liu struct weim { 385ac4020e3SFabio Estevam u32 cs0gcr1; 386ac4020e3SFabio Estevam u32 cs0gcr2; 387ac4020e3SFabio Estevam u32 cs0rcr1; 388ac4020e3SFabio Estevam u32 cs0rcr2; 389ac4020e3SFabio Estevam u32 cs0wcr1; 390ac4020e3SFabio Estevam u32 cs0wcr2; 391ac4020e3SFabio Estevam u32 cs1gcr1; 392ac4020e3SFabio Estevam u32 cs1gcr2; 393ac4020e3SFabio Estevam u32 cs1rcr1; 394ac4020e3SFabio Estevam u32 cs1rcr2; 395ac4020e3SFabio Estevam u32 cs1wcr1; 396ac4020e3SFabio Estevam u32 cs1wcr2; 397ac4020e3SFabio Estevam u32 cs2gcr1; 398ac4020e3SFabio Estevam u32 cs2gcr2; 399ac4020e3SFabio Estevam u32 cs2rcr1; 400ac4020e3SFabio Estevam u32 cs2rcr2; 401ac4020e3SFabio Estevam u32 cs2wcr1; 402ac4020e3SFabio Estevam u32 cs2wcr2; 403ac4020e3SFabio Estevam u32 cs3gcr1; 404ac4020e3SFabio Estevam u32 cs3gcr2; 405ac4020e3SFabio Estevam u32 cs3rcr1; 406ac4020e3SFabio Estevam u32 cs3rcr2; 407ac4020e3SFabio Estevam u32 cs3wcr1; 408ac4020e3SFabio Estevam u32 cs3wcr2; 409ac4020e3SFabio Estevam u32 cs4gcr1; 410ac4020e3SFabio Estevam u32 cs4gcr2; 411ac4020e3SFabio Estevam u32 cs4rcr1; 412ac4020e3SFabio Estevam u32 cs4rcr2; 413ac4020e3SFabio Estevam u32 cs4wcr1; 414ac4020e3SFabio Estevam u32 cs4wcr2; 415ac4020e3SFabio Estevam u32 cs5gcr1; 416ac4020e3SFabio Estevam u32 cs5gcr2; 417ac4020e3SFabio Estevam u32 cs5rcr1; 418ac4020e3SFabio Estevam u32 cs5rcr2; 419ac4020e3SFabio Estevam u32 cs5wcr1; 420ac4020e3SFabio Estevam u32 cs5wcr2; 421ac4020e3SFabio Estevam u32 wcr; 422ac4020e3SFabio Estevam u32 wiar; 423ac4020e3SFabio Estevam u32 ear; 424ff9f475dSJason Liu }; 425ff9f475dSJason Liu 426a682b3f7SFabio Estevam #if defined(CONFIG_MX51) 427a682b3f7SFabio Estevam struct iomuxc { 428a682b3f7SFabio Estevam u32 gpr0; 429a682b3f7SFabio Estevam u32 gpr1; 430a682b3f7SFabio Estevam u32 omux0; 431a682b3f7SFabio Estevam u32 omux1; 432a682b3f7SFabio Estevam u32 omux2; 433a682b3f7SFabio Estevam u32 omux3; 434a682b3f7SFabio Estevam u32 omux4; 435a682b3f7SFabio Estevam }; 436a682b3f7SFabio Estevam #elif defined(CONFIG_MX53) 437a682b3f7SFabio Estevam struct iomuxc { 438a682b3f7SFabio Estevam u32 gpr0; 439a682b3f7SFabio Estevam u32 gpr1; 440a682b3f7SFabio Estevam u32 gpr2; 441a682b3f7SFabio Estevam u32 omux0; 442a682b3f7SFabio Estevam u32 omux1; 443a682b3f7SFabio Estevam u32 omux2; 444a682b3f7SFabio Estevam u32 omux3; 445a682b3f7SFabio Estevam u32 omux4; 446a682b3f7SFabio Estevam }; 447a682b3f7SFabio Estevam #endif 448a682b3f7SFabio Estevam 449ff9f475dSJason Liu /* System Reset Controller (SRC) */ 450ff9f475dSJason Liu struct src { 451ff9f475dSJason Liu u32 scr; 452ff9f475dSJason Liu u32 sbmr; 453ff9f475dSJason Liu u32 srsr; 454ff9f475dSJason Liu u32 reserved1[2]; 455ff9f475dSJason Liu u32 sisr; 456ff9f475dSJason Liu u32 simr; 457ff9f475dSJason Liu }; 458565e39c5SLiu Hui-R64343 459ac87c17dSStefano Babic /* CSPI registers */ 460ac87c17dSStefano Babic struct cspi_regs { 461ac87c17dSStefano Babic u32 rxdata; 462ac87c17dSStefano Babic u32 txdata; 463ac87c17dSStefano Babic u32 ctrl; 464ac87c17dSStefano Babic u32 cfg; 465ac87c17dSStefano Babic u32 intr; 466ac87c17dSStefano Babic u32 dma; 467ac87c17dSStefano Babic u32 stat; 468ac87c17dSStefano Babic u32 period; 469ac87c17dSStefano Babic }; 470ac87c17dSStefano Babic 471565e39c5SLiu Hui-R64343 struct iim_regs { 472565e39c5SLiu Hui-R64343 u32 stat; 473565e39c5SLiu Hui-R64343 u32 statm; 474565e39c5SLiu Hui-R64343 u32 err; 475565e39c5SLiu Hui-R64343 u32 emask; 476565e39c5SLiu Hui-R64343 u32 fctl; 477565e39c5SLiu Hui-R64343 u32 ua; 478565e39c5SLiu Hui-R64343 u32 la; 479565e39c5SLiu Hui-R64343 u32 sdat; 480565e39c5SLiu Hui-R64343 u32 prev; 481565e39c5SLiu Hui-R64343 u32 srev; 482565e39c5SLiu Hui-R64343 u32 preg_p; 483565e39c5SLiu Hui-R64343 u32 scs0; 484565e39c5SLiu Hui-R64343 u32 scs1; 485565e39c5SLiu Hui-R64343 u32 scs2; 486565e39c5SLiu Hui-R64343 u32 scs3; 487565e39c5SLiu Hui-R64343 u32 res0[0x1f1]; 488565e39c5SLiu Hui-R64343 struct fuse_bank { 489565e39c5SLiu Hui-R64343 u32 fuse_regs[0x20]; 490565e39c5SLiu Hui-R64343 u32 fuse_rsvd[0xe0]; 491565e39c5SLiu Hui-R64343 } bank[4]; 492565e39c5SLiu Hui-R64343 }; 493565e39c5SLiu Hui-R64343 494*54cd1deeSFabio Estevam struct fuse_bank0_regs { 495*54cd1deeSFabio Estevam u32 fuse0_23[24]; 496*54cd1deeSFabio Estevam u32 gp[8]; 497*54cd1deeSFabio Estevam }; 498*54cd1deeSFabio Estevam 499565e39c5SLiu Hui-R64343 struct fuse_bank1_regs { 500565e39c5SLiu Hui-R64343 u32 fuse0_8[9]; 501565e39c5SLiu Hui-R64343 u32 mac_addr[6]; 502565e39c5SLiu Hui-R64343 u32 fuse15_31[0x11]; 503565e39c5SLiu Hui-R64343 }; 504565e39c5SLiu Hui-R64343 505ff9f475dSJason Liu #endif /* __ASSEMBLER__*/ 506ff9f475dSJason Liu 507595f3e56SLiu Hui-R64343 #endif /* __ASM_ARCH_MX5_IMX_REGS_H__ */ 508