1ff9f475dSJason Liu /* 2ff9f475dSJason Liu * (C) Copyright 2009 Freescale Semiconductor, Inc. 3ff9f475dSJason Liu * 41a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 5ff9f475dSJason Liu */ 6ff9f475dSJason Liu 7595f3e56SLiu Hui-R64343 #ifndef __ASM_ARCH_MX5_IMX_REGS_H__ 8595f3e56SLiu Hui-R64343 #define __ASM_ARCH_MX5_IMX_REGS_H__ 9ff9f475dSJason Liu 108e99ecd7SBenoît Thébaudeau #define ARCH_MXC 118e99ecd7SBenoît Thébaudeau 12595f3e56SLiu Hui-R64343 #if defined(CONFIG_MX51) 131ab027cbSShawn Guo #define IRAM_BASE_ADDR 0x1FFE0000 /* internal ram */ 14fff6ef72SFabio Estevam #define IPU_SOC_BASE_ADDR 0x40000000 15fff6ef72SFabio Estevam #define IPU_SOC_OFFSET 0x1E000000 16595f3e56SLiu Hui-R64343 #define SPBA0_BASE_ADDR 0x70000000 17595f3e56SLiu Hui-R64343 #define AIPS1_BASE_ADDR 0x73F00000 18595f3e56SLiu Hui-R64343 #define AIPS2_BASE_ADDR 0x83F00000 19595f3e56SLiu Hui-R64343 #define CSD0_BASE_ADDR 0x90000000 20595f3e56SLiu Hui-R64343 #define CSD1_BASE_ADDR 0xA0000000 21595f3e56SLiu Hui-R64343 #define NFC_BASE_ADDR_AXI 0xCFFF0000 22ac4020e3SFabio Estevam #define CS1_BASE_ADDR 0xB8000000 23595f3e56SLiu Hui-R64343 #elif defined(CONFIG_MX53) 24fff6ef72SFabio Estevam #define IPU_SOC_BASE_ADDR 0x18000000 25fff6ef72SFabio Estevam #define IPU_SOC_OFFSET 0x06000000 26595f3e56SLiu Hui-R64343 #define SPBA0_BASE_ADDR 0x50000000 27595f3e56SLiu Hui-R64343 #define AIPS1_BASE_ADDR 0x53F00000 28595f3e56SLiu Hui-R64343 #define AIPS2_BASE_ADDR 0x63F00000 29595f3e56SLiu Hui-R64343 #define CSD0_BASE_ADDR 0x70000000 30595f3e56SLiu Hui-R64343 #define CSD1_BASE_ADDR 0xB0000000 31595f3e56SLiu Hui-R64343 #define NFC_BASE_ADDR_AXI 0xF7FF0000 32595f3e56SLiu Hui-R64343 #define IRAM_BASE_ADDR 0xF8000000 33ac4020e3SFabio Estevam #define CS1_BASE_ADDR 0xF4000000 34d87c85ceSStefano Babic #define SATA_BASE_ADDR 0x10000000 35595f3e56SLiu Hui-R64343 #else 36595f3e56SLiu Hui-R64343 #error "CPU_TYPE not defined" 37595f3e56SLiu Hui-R64343 #endif 38595f3e56SLiu Hui-R64343 39595f3e56SLiu Hui-R64343 #define IRAM_SIZE 0x00020000 /* 128 KB */ 40ff9f475dSJason Liu 41ff9f475dSJason Liu /* 42ff9f475dSJason Liu * SPBA global module enabled #0 43ff9f475dSJason Liu */ 44ff9f475dSJason Liu #define MMC_SDHC1_BASE_ADDR (SPBA0_BASE_ADDR + 0x00004000) 45ff9f475dSJason Liu #define MMC_SDHC2_BASE_ADDR (SPBA0_BASE_ADDR + 0x00008000) 4640f6fffeSStefano Babic #define UART3_BASE (SPBA0_BASE_ADDR + 0x0000C000) 47ff9f475dSJason Liu #define CSPI1_BASE_ADDR (SPBA0_BASE_ADDR + 0x00010000) 48ff9f475dSJason Liu #define SSI2_BASE_ADDR (SPBA0_BASE_ADDR + 0x00014000) 49ff9f475dSJason Liu #define MMC_SDHC3_BASE_ADDR (SPBA0_BASE_ADDR + 0x00020000) 50ff9f475dSJason Liu #define MMC_SDHC4_BASE_ADDR (SPBA0_BASE_ADDR + 0x00024000) 51ff9f475dSJason Liu #define SPDIF_BASE_ADDR (SPBA0_BASE_ADDR + 0x00028000) 52ff9f475dSJason Liu #define ATA_DMA_BASE_ADDR (SPBA0_BASE_ADDR + 0x00030000) 53ff9f475dSJason Liu #define SLIM_DMA_BASE_ADDR (SPBA0_BASE_ADDR + 0x00034000) 54ff9f475dSJason Liu #define HSI2C_DMA_BASE_ADDR (SPBA0_BASE_ADDR + 0x00038000) 55ff9f475dSJason Liu #define SPBA_CTRL_BASE_ADDR (SPBA0_BASE_ADDR + 0x0003C000) 56ff9f475dSJason Liu 57ff9f475dSJason Liu /* 58ff9f475dSJason Liu * AIPS 1 59ff9f475dSJason Liu */ 60ff9f475dSJason Liu #define OTG_BASE_ADDR (AIPS1_BASE_ADDR + 0x00080000) 61ff9f475dSJason Liu #define GPIO1_BASE_ADDR (AIPS1_BASE_ADDR + 0x00084000) 62ff9f475dSJason Liu #define GPIO2_BASE_ADDR (AIPS1_BASE_ADDR + 0x00088000) 63ff9f475dSJason Liu #define GPIO3_BASE_ADDR (AIPS1_BASE_ADDR + 0x0008C000) 64ff9f475dSJason Liu #define GPIO4_BASE_ADDR (AIPS1_BASE_ADDR + 0x00090000) 65ff9f475dSJason Liu #define KPP_BASE_ADDR (AIPS1_BASE_ADDR + 0x00094000) 66ff9f475dSJason Liu #define WDOG1_BASE_ADDR (AIPS1_BASE_ADDR + 0x00098000) 67ff9f475dSJason Liu #define WDOG2_BASE_ADDR (AIPS1_BASE_ADDR + 0x0009C000) 68ff9f475dSJason Liu #define GPT1_BASE_ADDR (AIPS1_BASE_ADDR + 0x000A0000) 69ff9f475dSJason Liu #define SRTC_BASE_ADDR (AIPS1_BASE_ADDR + 0x000A4000) 70ff9f475dSJason Liu #define IOMUXC_BASE_ADDR (AIPS1_BASE_ADDR + 0x000A8000) 71ff9f475dSJason Liu #define EPIT1_BASE_ADDR (AIPS1_BASE_ADDR + 0x000AC000) 72ff9f475dSJason Liu #define EPIT2_BASE_ADDR (AIPS1_BASE_ADDR + 0x000B0000) 73ff9f475dSJason Liu #define PWM1_BASE_ADDR (AIPS1_BASE_ADDR + 0x000B4000) 74ff9f475dSJason Liu #define PWM2_BASE_ADDR (AIPS1_BASE_ADDR + 0x000B8000) 7540f6fffeSStefano Babic #define UART1_BASE (AIPS1_BASE_ADDR + 0x000BC000) 7640f6fffeSStefano Babic #define UART2_BASE (AIPS1_BASE_ADDR + 0x000C0000) 77ff9f475dSJason Liu #define SRC_BASE_ADDR (AIPS1_BASE_ADDR + 0x000D0000) 78ff9f475dSJason Liu #define CCM_BASE_ADDR (AIPS1_BASE_ADDR + 0x000D4000) 79ff9f475dSJason Liu #define GPC_BASE_ADDR (AIPS1_BASE_ADDR + 0x000D8000) 80ff9f475dSJason Liu 81595f3e56SLiu Hui-R64343 #if defined(CONFIG_MX53) 82595f3e56SLiu Hui-R64343 #define GPIO5_BASE_ADDR (AIPS1_BASE_ADDR + 0x000DC000) 83595f3e56SLiu Hui-R64343 #define GPIO6_BASE_ADDR (AIPS1_BASE_ADDR + 0x000E0000) 84595f3e56SLiu Hui-R64343 #define GPIO7_BASE_ADDR (AIPS1_BASE_ADDR + 0x000E4000) 85df369dcdSTroy Kisky #define I2C3_BASE_ADDR (AIPS1_BASE_ADDR + 0x000EC000) 864a9677e5SStefano Babic #define UART4_BASE_ADDR (AIPS1_BASE_ADDR + 0x000F0000) 87595f3e56SLiu Hui-R64343 #endif 88ff9f475dSJason Liu /* 89ff9f475dSJason Liu * AIPS 2 90ff9f475dSJason Liu */ 91ff9f475dSJason Liu #define PLL1_BASE_ADDR (AIPS2_BASE_ADDR + 0x00080000) 92ff9f475dSJason Liu #define PLL2_BASE_ADDR (AIPS2_BASE_ADDR + 0x00084000) 93ff9f475dSJason Liu #define PLL3_BASE_ADDR (AIPS2_BASE_ADDR + 0x00088000) 94bf2eaf51SMarek Vasut #ifdef CONFIG_MX53 95bf2eaf51SMarek Vasut #define PLL4_BASE_ADDR (AIPS2_BASE_ADDR + 0x0008c000) 96bf2eaf51SMarek Vasut #endif 97ff9f475dSJason Liu #define AHBMAX_BASE_ADDR (AIPS2_BASE_ADDR + 0x00094000) 98ff9f475dSJason Liu #define IIM_BASE_ADDR (AIPS2_BASE_ADDR + 0x00098000) 99ff9f475dSJason Liu #define CSU_BASE_ADDR (AIPS2_BASE_ADDR + 0x0009C000) 100ff9f475dSJason Liu #define ARM_BASE_ADDR (AIPS2_BASE_ADDR + 0x000A0000) 101ff9f475dSJason Liu #define OWIRE_BASE_ADDR (AIPS2_BASE_ADDR + 0x000A4000) 102ff9f475dSJason Liu #define FIRI_BASE_ADDR (AIPS2_BASE_ADDR + 0x000A8000) 103ff9f475dSJason Liu #define CSPI2_BASE_ADDR (AIPS2_BASE_ADDR + 0x000AC000) 104ff9f475dSJason Liu #define SDMA_BASE_ADDR (AIPS2_BASE_ADDR + 0x000B0000) 105ff9f475dSJason Liu #define SCC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000B4000) 106ff9f475dSJason Liu #define ROMCP_BASE_ADDR (AIPS2_BASE_ADDR + 0x000B8000) 107ff9f475dSJason Liu #define RTIC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000BC000) 108ff9f475dSJason Liu #define CSPI3_BASE_ADDR (AIPS2_BASE_ADDR + 0x000C0000) 109ff9f475dSJason Liu #define I2C2_BASE_ADDR (AIPS2_BASE_ADDR + 0x000C4000) 110ff9f475dSJason Liu #define I2C1_BASE_ADDR (AIPS2_BASE_ADDR + 0x000C8000) 111ff9f475dSJason Liu #define SSI1_BASE_ADDR (AIPS2_BASE_ADDR + 0x000CC000) 112ff9f475dSJason Liu #define AUDMUX_BASE_ADDR (AIPS2_BASE_ADDR + 0x000D0000) 113ff9f475dSJason Liu #define M4IF_BASE_ADDR (AIPS2_BASE_ADDR + 0x000D8000) 114ff9f475dSJason Liu #define ESDCTL_BASE_ADDR (AIPS2_BASE_ADDR + 0x000D9000) 115ff9f475dSJason Liu #define WEIM_BASE_ADDR (AIPS2_BASE_ADDR + 0x000DA000) 116ff9f475dSJason Liu #define NFC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000DB000) 117ff9f475dSJason Liu #define EMI_BASE_ADDR (AIPS2_BASE_ADDR + 0x000DBF00) 118ff9f475dSJason Liu #define MIPI_HSC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000DC000) 119ff9f475dSJason Liu #define ATA_BASE_ADDR (AIPS2_BASE_ADDR + 0x000E0000) 120ff9f475dSJason Liu #define SIM_BASE_ADDR (AIPS2_BASE_ADDR + 0x000E4000) 121ff9f475dSJason Liu #define SSI3BASE_ADDR (AIPS2_BASE_ADDR + 0x000E8000) 122ff9f475dSJason Liu #define FEC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000EC000) 123ff9f475dSJason Liu #define TVE_BASE_ADDR (AIPS2_BASE_ADDR + 0x000F0000) 124ff9f475dSJason Liu #define VPU_BASE_ADDR (AIPS2_BASE_ADDR + 0x000F4000) 125ff9f475dSJason Liu #define SAHARA_BASE_ADDR (AIPS2_BASE_ADDR + 0x000F8000) 126ff9f475dSJason Liu 1274a9677e5SStefano Babic #if defined(CONFIG_MX53) 1284a9677e5SStefano Babic #define UART5_BASE_ADDR (AIPS2_BASE_ADDR + 0x00090000) 1294a9677e5SStefano Babic #endif 1304a9677e5SStefano Babic 131ff9f475dSJason Liu /* 132ac4020e3SFabio Estevam * WEIM CSnGCR1 133ac4020e3SFabio Estevam */ 134ac4020e3SFabio Estevam #define CSEN 1 135ac4020e3SFabio Estevam #define SWR (1 << 1) 136ac4020e3SFabio Estevam #define SRD (1 << 2) 137ac4020e3SFabio Estevam #define MUM (1 << 3) 138ac4020e3SFabio Estevam #define WFL (1 << 4) 139ac4020e3SFabio Estevam #define RFL (1 << 5) 140ac4020e3SFabio Estevam #define CRE (1 << 6) 141ac4020e3SFabio Estevam #define CREP (1 << 7) 142ac4020e3SFabio Estevam #define BL(x) (((x) & 0x7) << 8) 143ac4020e3SFabio Estevam #define WC (1 << 11) 144ac4020e3SFabio Estevam #define BCD(x) (((x) & 0x3) << 12) 145ac4020e3SFabio Estevam #define BCS(x) (((x) & 0x3) << 14) 146ac4020e3SFabio Estevam #define DSZ(x) (((x) & 0x7) << 16) 147ac4020e3SFabio Estevam #define SP (1 << 19) 148ac4020e3SFabio Estevam #define CSREC(x) (((x) & 0x7) << 20) 149ac4020e3SFabio Estevam #define AUS (1 << 23) 150ac4020e3SFabio Estevam #define GBC(x) (((x) & 0x7) << 24) 151ac4020e3SFabio Estevam #define WP (1 << 27) 152ac4020e3SFabio Estevam #define PSZ(x) (((x) & 0x0f << 28) 153ac4020e3SFabio Estevam 154ac4020e3SFabio Estevam /* 155ac4020e3SFabio Estevam * WEIM CSnGCR2 156ac4020e3SFabio Estevam */ 157ac4020e3SFabio Estevam #define ADH(x) (((x) & 0x3)) 158ac4020e3SFabio Estevam #define DAPS(x) (((x) & 0x0f << 4) 159ac4020e3SFabio Estevam #define DAE (1 << 8) 160ac4020e3SFabio Estevam #define DAP (1 << 9) 161ac4020e3SFabio Estevam #define MUX16_BYP (1 << 12) 162ac4020e3SFabio Estevam 163ac4020e3SFabio Estevam /* 164ac4020e3SFabio Estevam * WEIM CSnRCR1 165ac4020e3SFabio Estevam */ 166ac4020e3SFabio Estevam #define RCSN(x) (((x) & 0x7)) 167ac4020e3SFabio Estevam #define RCSA(x) (((x) & 0x7) << 4) 168ac4020e3SFabio Estevam #define OEN(x) (((x) & 0x7) << 8) 169ac4020e3SFabio Estevam #define OEA(x) (((x) & 0x7) << 12) 170ac4020e3SFabio Estevam #define RADVN(x) (((x) & 0x7) << 16) 171ac4020e3SFabio Estevam #define RAL (1 << 19) 172ac4020e3SFabio Estevam #define RADVA(x) (((x) & 0x7) << 20) 173ac4020e3SFabio Estevam #define RWSC(x) (((x) & 0x3f) << 24) 174ac4020e3SFabio Estevam 175ac4020e3SFabio Estevam /* 176ac4020e3SFabio Estevam * WEIM CSnRCR2 177ac4020e3SFabio Estevam */ 178ac4020e3SFabio Estevam #define RBEN(x) (((x) & 0x7)) 179ac4020e3SFabio Estevam #define RBE (1 << 3) 180ac4020e3SFabio Estevam #define RBEA(x) (((x) & 0x7) << 4) 181ac4020e3SFabio Estevam #define RL(x) (((x) & 0x3) << 8) 182ac4020e3SFabio Estevam #define PAT(x) (((x) & 0x7) << 12) 183ac4020e3SFabio Estevam #define APR (1 << 15) 184ac4020e3SFabio Estevam 185ac4020e3SFabio Estevam /* 186ac4020e3SFabio Estevam * WEIM CSnWCR1 187ac4020e3SFabio Estevam */ 188ac4020e3SFabio Estevam #define WCSN(x) (((x) & 0x7)) 189ac4020e3SFabio Estevam #define WCSA(x) (((x) & 0x7) << 3) 190ac4020e3SFabio Estevam #define WEN(x) (((x) & 0x7) << 6) 191ac4020e3SFabio Estevam #define WEA(x) (((x) & 0x7) << 9) 192ac4020e3SFabio Estevam #define WBEN(x) (((x) & 0x7) << 12) 193ac4020e3SFabio Estevam #define WBEA(x) (((x) & 0x7) << 15) 194ac4020e3SFabio Estevam #define WADVN(x) (((x) & 0x7) << 18) 195ac4020e3SFabio Estevam #define WADVA(x) (((x) & 0x7) << 21) 196ac4020e3SFabio Estevam #define WWSC(x) (((x) & 0x3f) << 24) 197ac4020e3SFabio Estevam #define WBED1 (1 << 30) 198ac4020e3SFabio Estevam #define WAL (1 << 31) 199ac4020e3SFabio Estevam 200ac4020e3SFabio Estevam /* 201ac4020e3SFabio Estevam * WEIM CSnWCR2 202ac4020e3SFabio Estevam */ 203ac4020e3SFabio Estevam #define WBED 1 204ac4020e3SFabio Estevam 205ac4020e3SFabio Estevam /* 20608c61a58SEric Nelson * CSPI register definitions 20708c61a58SEric Nelson */ 20808c61a58SEric Nelson #define MXC_ECSPI 20908c61a58SEric Nelson #define MXC_CSPICTRL_EN (1 << 0) 21008c61a58SEric Nelson #define MXC_CSPICTRL_MODE (1 << 1) 21108c61a58SEric Nelson #define MXC_CSPICTRL_XCH (1 << 2) 2120f1411bcSFabio Estevam #define MXC_CSPICTRL_MODE_MASK (0xf << 4) 21308c61a58SEric Nelson #define MXC_CSPICTRL_CHIPSELECT(x) (((x) & 0x3) << 12) 21408c61a58SEric Nelson #define MXC_CSPICTRL_BITCOUNT(x) (((x) & 0xfff) << 20) 21508c61a58SEric Nelson #define MXC_CSPICTRL_PREDIV(x) (((x) & 0xF) << 12) 21608c61a58SEric Nelson #define MXC_CSPICTRL_POSTDIV(x) (((x) & 0xF) << 8) 21708c61a58SEric Nelson #define MXC_CSPICTRL_SELCHAN(x) (((x) & 0x3) << 18) 21808c61a58SEric Nelson #define MXC_CSPICTRL_MAXBITS 0xfff 21908c61a58SEric Nelson #define MXC_CSPICTRL_TC (1 << 7) 22008c61a58SEric Nelson #define MXC_CSPICTRL_RXOVF (1 << 6) 22108c61a58SEric Nelson #define MXC_CSPIPERIOD_32KHZ (1 << 15) 22208c61a58SEric Nelson #define MAX_SPI_BYTES 32 22308c61a58SEric Nelson 22408c61a58SEric Nelson /* Bit position inside CTRL register to be associated with SS */ 22508c61a58SEric Nelson #define MXC_CSPICTRL_CHAN 18 22608c61a58SEric Nelson 22708c61a58SEric Nelson /* Bit position inside CON register to be associated with SS */ 228d7cbcc76SMarkus Niebel #define MXC_CSPICON_PHA 0 /* SCLK phase control */ 229d7cbcc76SMarkus Niebel #define MXC_CSPICON_POL 4 /* SCLK polarity */ 230d7cbcc76SMarkus Niebel #define MXC_CSPICON_SSPOL 12 /* SS polarity */ 231d7cbcc76SMarkus Niebel #define MXC_CSPICON_CTL 20 /* inactive state of SCLK */ 23208c61a58SEric Nelson #define MXC_SPI_BASE_ADDRESSES \ 23308c61a58SEric Nelson CSPI1_BASE_ADDR, \ 23408c61a58SEric Nelson CSPI2_BASE_ADDR, \ 23508c61a58SEric Nelson CSPI3_BASE_ADDR, 23608c61a58SEric Nelson 23708c61a58SEric Nelson /* 238ff9f475dSJason Liu * Number of GPIO pins per port 239ff9f475dSJason Liu */ 240ff9f475dSJason Liu #define GPIO_NUM_PIN 32 241ff9f475dSJason Liu 242ff9f475dSJason Liu #define IIM_SREV 0x24 243ff9f475dSJason Liu #define ROM_SI_REV 0x48 244ff9f475dSJason Liu 245ff9f475dSJason Liu #define NFC_BUF_SIZE 0x1000 246ff9f475dSJason Liu 247ff9f475dSJason Liu /* M4IF */ 248ff9f475dSJason Liu #define M4IF_FBPM0 0x40 249ff9f475dSJason Liu #define M4IF_FIDBP 0x48 2501155d555SFabio Estevam #define M4IF_GENP_WEIM_MM_MASK 0x00000001 2511155d555SFabio Estevam #define WEIM_GCR2_MUX16_BYP_GRANT_MASK 0x00001000 252ff9f475dSJason Liu 253ff9f475dSJason Liu /* Assuming 24MHz input clock with doubler ON */ 254ff9f475dSJason Liu /* MFI PDF */ 2559db1bfa1SDavid Jander #define DP_OP_864 ((8 << 4) + ((1 - 1) << 0)) 2569db1bfa1SDavid Jander #define DP_MFD_864 (180 - 1) /* PL Dither mode */ 2579db1bfa1SDavid Jander #define DP_MFN_864 180 2589db1bfa1SDavid Jander #define DP_MFN_800_DIT 60 /* PL Dither mode */ 2599db1bfa1SDavid Jander 260ff9f475dSJason Liu #define DP_OP_850 ((8 << 4) + ((1 - 1) << 0)) 261ff9f475dSJason Liu #define DP_MFD_850 (48 - 1) 262ff9f475dSJason Liu #define DP_MFN_850 41 263ff9f475dSJason Liu 264ff9f475dSJason Liu #define DP_OP_800 ((8 << 4) + ((1 - 1) << 0)) 265ff9f475dSJason Liu #define DP_MFD_800 (3 - 1) 266ff9f475dSJason Liu #define DP_MFN_800 1 267ff9f475dSJason Liu 268ff9f475dSJason Liu #define DP_OP_700 ((7 << 4) + ((1 - 1) << 0)) 269ff9f475dSJason Liu #define DP_MFD_700 (24 - 1) 270ff9f475dSJason Liu #define DP_MFN_700 7 271ff9f475dSJason Liu 272ff9f475dSJason Liu #define DP_OP_665 ((6 << 4) + ((1 - 1) << 0)) 273ff9f475dSJason Liu #define DP_MFD_665 (96 - 1) 274ff9f475dSJason Liu #define DP_MFN_665 89 275ff9f475dSJason Liu 276ff9f475dSJason Liu #define DP_OP_532 ((5 << 4) + ((1 - 1) << 0)) 277ff9f475dSJason Liu #define DP_MFD_532 (24 - 1) 278ff9f475dSJason Liu #define DP_MFN_532 13 279ff9f475dSJason Liu 280ff9f475dSJason Liu #define DP_OP_400 ((8 << 4) + ((2 - 1) << 0)) 281ff9f475dSJason Liu #define DP_MFD_400 (3 - 1) 282ff9f475dSJason Liu #define DP_MFN_400 1 283ff9f475dSJason Liu 284782b0288SFabio Estevam #define DP_OP_455 ((9 << 4) + ((2 - 1) << 0)) 285782b0288SFabio Estevam #define DP_MFD_455 (48 - 1) 286782b0288SFabio Estevam #define DP_MFN_455 23 287782b0288SFabio Estevam 288ff9f475dSJason Liu #define DP_OP_216 ((6 << 4) + ((3 - 1) << 0)) 289ff9f475dSJason Liu #define DP_MFD_216 (4 - 1) 290ff9f475dSJason Liu #define DP_MFN_216 3 291ff9f475dSJason Liu 292565e39c5SLiu Hui-R64343 #define IMX_IIM_BASE (IIM_BASE_ADDR) 293565e39c5SLiu Hui-R64343 294ff9f475dSJason Liu #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) 295ff9f475dSJason Liu #include <asm/types.h> 296ff9f475dSJason Liu 297ff9f475dSJason Liu #define __REG(x) (*((volatile u32 *)(x))) 298ff9f475dSJason Liu #define __REG16(x) (*((volatile u16 *)(x))) 299ff9f475dSJason Liu #define __REG8(x) (*((volatile u8 *)(x))) 300ff9f475dSJason Liu 301ff9f475dSJason Liu struct clkctl { 302ff9f475dSJason Liu u32 ccr; 303ff9f475dSJason Liu u32 ccdr; 304ff9f475dSJason Liu u32 csr; 305ff9f475dSJason Liu u32 ccsr; 306ff9f475dSJason Liu u32 cacrr; 307ff9f475dSJason Liu u32 cbcdr; 308ff9f475dSJason Liu u32 cbcmr; 309ff9f475dSJason Liu u32 cscmr1; 310ff9f475dSJason Liu u32 cscmr2; 311ff9f475dSJason Liu u32 cscdr1; 312ff9f475dSJason Liu u32 cs1cdr; 313ff9f475dSJason Liu u32 cs2cdr; 314ff9f475dSJason Liu u32 cdcdr; 315ff9f475dSJason Liu u32 chsccdr; 316ff9f475dSJason Liu u32 cscdr2; 317ff9f475dSJason Liu u32 cscdr3; 318ff9f475dSJason Liu u32 cscdr4; 319ff9f475dSJason Liu u32 cwdr; 320ff9f475dSJason Liu u32 cdhipr; 321ff9f475dSJason Liu u32 cdcr; 322ff9f475dSJason Liu u32 ctor; 323ff9f475dSJason Liu u32 clpcr; 324ff9f475dSJason Liu u32 cisr; 325ff9f475dSJason Liu u32 cimr; 326ff9f475dSJason Liu u32 ccosr; 327ff9f475dSJason Liu u32 cgpr; 328ff9f475dSJason Liu u32 ccgr0; 329ff9f475dSJason Liu u32 ccgr1; 330ff9f475dSJason Liu u32 ccgr2; 331ff9f475dSJason Liu u32 ccgr3; 332ff9f475dSJason Liu u32 ccgr4; 333ff9f475dSJason Liu u32 ccgr5; 334ff9f475dSJason Liu u32 ccgr6; 3350edf8b5bSStefano Babic #if defined(CONFIG_MX53) 3360edf8b5bSStefano Babic u32 ccgr7; 3370edf8b5bSStefano Babic #endif 338ff9f475dSJason Liu u32 cmeor; 339ff9f475dSJason Liu }; 340ff9f475dSJason Liu 3410edf8b5bSStefano Babic /* DPLL registers */ 3420edf8b5bSStefano Babic struct dpll { 3430edf8b5bSStefano Babic u32 dp_ctl; 3440edf8b5bSStefano Babic u32 dp_config; 3450edf8b5bSStefano Babic u32 dp_op; 3460edf8b5bSStefano Babic u32 dp_mfd; 3470edf8b5bSStefano Babic u32 dp_mfn; 3480edf8b5bSStefano Babic u32 dp_mfn_minus; 3490edf8b5bSStefano Babic u32 dp_mfn_plus; 3500edf8b5bSStefano Babic u32 dp_hfs_op; 3510edf8b5bSStefano Babic u32 dp_hfs_mfd; 3520edf8b5bSStefano Babic u32 dp_hfs_mfn; 3530edf8b5bSStefano Babic u32 dp_mfn_togc; 3540edf8b5bSStefano Babic u32 dp_destat; 3550edf8b5bSStefano Babic }; 356ff9f475dSJason Liu /* WEIM registers */ 357ff9f475dSJason Liu struct weim { 358ac4020e3SFabio Estevam u32 cs0gcr1; 359ac4020e3SFabio Estevam u32 cs0gcr2; 360ac4020e3SFabio Estevam u32 cs0rcr1; 361ac4020e3SFabio Estevam u32 cs0rcr2; 362ac4020e3SFabio Estevam u32 cs0wcr1; 363ac4020e3SFabio Estevam u32 cs0wcr2; 364ac4020e3SFabio Estevam u32 cs1gcr1; 365ac4020e3SFabio Estevam u32 cs1gcr2; 366ac4020e3SFabio Estevam u32 cs1rcr1; 367ac4020e3SFabio Estevam u32 cs1rcr2; 368ac4020e3SFabio Estevam u32 cs1wcr1; 369ac4020e3SFabio Estevam u32 cs1wcr2; 370ac4020e3SFabio Estevam u32 cs2gcr1; 371ac4020e3SFabio Estevam u32 cs2gcr2; 372ac4020e3SFabio Estevam u32 cs2rcr1; 373ac4020e3SFabio Estevam u32 cs2rcr2; 374ac4020e3SFabio Estevam u32 cs2wcr1; 375ac4020e3SFabio Estevam u32 cs2wcr2; 376ac4020e3SFabio Estevam u32 cs3gcr1; 377ac4020e3SFabio Estevam u32 cs3gcr2; 378ac4020e3SFabio Estevam u32 cs3rcr1; 379ac4020e3SFabio Estevam u32 cs3rcr2; 380ac4020e3SFabio Estevam u32 cs3wcr1; 381ac4020e3SFabio Estevam u32 cs3wcr2; 382ac4020e3SFabio Estevam u32 cs4gcr1; 383ac4020e3SFabio Estevam u32 cs4gcr2; 384ac4020e3SFabio Estevam u32 cs4rcr1; 385ac4020e3SFabio Estevam u32 cs4rcr2; 386ac4020e3SFabio Estevam u32 cs4wcr1; 387ac4020e3SFabio Estevam u32 cs4wcr2; 388ac4020e3SFabio Estevam u32 cs5gcr1; 389ac4020e3SFabio Estevam u32 cs5gcr2; 390ac4020e3SFabio Estevam u32 cs5rcr1; 391ac4020e3SFabio Estevam u32 cs5rcr2; 392ac4020e3SFabio Estevam u32 cs5wcr1; 393ac4020e3SFabio Estevam u32 cs5wcr2; 394ac4020e3SFabio Estevam u32 wcr; 395ac4020e3SFabio Estevam u32 wiar; 396ac4020e3SFabio Estevam u32 ear; 397ff9f475dSJason Liu }; 398ff9f475dSJason Liu 399a682b3f7SFabio Estevam #if defined(CONFIG_MX51) 400a682b3f7SFabio Estevam struct iomuxc { 401*32c81ea6SFabio Estevam u32 gpr[2]; 402a682b3f7SFabio Estevam u32 omux0; 403a682b3f7SFabio Estevam u32 omux1; 404a682b3f7SFabio Estevam u32 omux2; 405a682b3f7SFabio Estevam u32 omux3; 406a682b3f7SFabio Estevam u32 omux4; 407a682b3f7SFabio Estevam }; 408a682b3f7SFabio Estevam #elif defined(CONFIG_MX53) 409a682b3f7SFabio Estevam struct iomuxc { 410*32c81ea6SFabio Estevam u32 gpr[3]; 411a682b3f7SFabio Estevam u32 omux0; 412a682b3f7SFabio Estevam u32 omux1; 413a682b3f7SFabio Estevam u32 omux2; 414a682b3f7SFabio Estevam u32 omux3; 415a682b3f7SFabio Estevam u32 omux4; 416a682b3f7SFabio Estevam }; 417a682b3f7SFabio Estevam #endif 418a682b3f7SFabio Estevam 419ff9f475dSJason Liu /* System Reset Controller (SRC) */ 420ff9f475dSJason Liu struct src { 421ff9f475dSJason Liu u32 scr; 422ff9f475dSJason Liu u32 sbmr; 423ff9f475dSJason Liu u32 srsr; 424ff9f475dSJason Liu u32 reserved1[2]; 425ff9f475dSJason Liu u32 sisr; 426ff9f475dSJason Liu u32 simr; 427ff9f475dSJason Liu }; 428565e39c5SLiu Hui-R64343 429124a06d7STroy Kisky struct srtc_regs { 430124a06d7STroy Kisky u32 lpscmr; /* 0x00 */ 431124a06d7STroy Kisky u32 lpsclr; /* 0x04 */ 432124a06d7STroy Kisky u32 lpsar; /* 0x08 */ 433124a06d7STroy Kisky u32 lpsmcr; /* 0x0c */ 434124a06d7STroy Kisky u32 lpcr; /* 0x10 */ 435124a06d7STroy Kisky u32 lpsr; /* 0x14 */ 436124a06d7STroy Kisky u32 lppdr; /* 0x18 */ 437124a06d7STroy Kisky u32 lpgr; /* 0x1c */ 438124a06d7STroy Kisky u32 hpcmr; /* 0x20 */ 439124a06d7STroy Kisky u32 hpclr; /* 0x24 */ 440124a06d7STroy Kisky u32 hpamr; /* 0x28 */ 441124a06d7STroy Kisky u32 hpalr; /* 0x2c */ 442124a06d7STroy Kisky u32 hpcr; /* 0x30 */ 443124a06d7STroy Kisky u32 hpisr; /* 0x34 */ 444124a06d7STroy Kisky u32 hpienr; /* 0x38 */ 445124a06d7STroy Kisky }; 446124a06d7STroy Kisky 447ac87c17dSStefano Babic /* CSPI registers */ 448ac87c17dSStefano Babic struct cspi_regs { 449ac87c17dSStefano Babic u32 rxdata; 450ac87c17dSStefano Babic u32 txdata; 451ac87c17dSStefano Babic u32 ctrl; 452ac87c17dSStefano Babic u32 cfg; 453ac87c17dSStefano Babic u32 intr; 454ac87c17dSStefano Babic u32 dma; 455ac87c17dSStefano Babic u32 stat; 456ac87c17dSStefano Babic u32 period; 457ac87c17dSStefano Babic }; 458ac87c17dSStefano Babic 459565e39c5SLiu Hui-R64343 struct iim_regs { 460565e39c5SLiu Hui-R64343 u32 stat; 461565e39c5SLiu Hui-R64343 u32 statm; 462565e39c5SLiu Hui-R64343 u32 err; 463565e39c5SLiu Hui-R64343 u32 emask; 464565e39c5SLiu Hui-R64343 u32 fctl; 465565e39c5SLiu Hui-R64343 u32 ua; 466565e39c5SLiu Hui-R64343 u32 la; 467565e39c5SLiu Hui-R64343 u32 sdat; 468565e39c5SLiu Hui-R64343 u32 prev; 469565e39c5SLiu Hui-R64343 u32 srev; 4708f3ff11cSBenoît Thébaudeau u32 prg_p; 471565e39c5SLiu Hui-R64343 u32 scs0; 472565e39c5SLiu Hui-R64343 u32 scs1; 473565e39c5SLiu Hui-R64343 u32 scs2; 474565e39c5SLiu Hui-R64343 u32 scs3; 475565e39c5SLiu Hui-R64343 u32 res0[0x1f1]; 476565e39c5SLiu Hui-R64343 struct fuse_bank { 477565e39c5SLiu Hui-R64343 u32 fuse_regs[0x20]; 478565e39c5SLiu Hui-R64343 u32 fuse_rsvd[0xe0]; 4798f3ff11cSBenoît Thébaudeau #if defined(CONFIG_MX51) 480565e39c5SLiu Hui-R64343 } bank[4]; 4818f3ff11cSBenoît Thébaudeau #elif defined(CONFIG_MX53) 4828f3ff11cSBenoît Thébaudeau } bank[5]; 4838f3ff11cSBenoît Thébaudeau #endif 484565e39c5SLiu Hui-R64343 }; 485565e39c5SLiu Hui-R64343 48654cd1deeSFabio Estevam struct fuse_bank0_regs { 4876adbd302SBenoît Thébaudeau u32 fuse0_7[8]; 4886adbd302SBenoît Thébaudeau u32 uid[8]; 4896adbd302SBenoît Thébaudeau u32 fuse16_23[8]; 4906adbd302SBenoît Thébaudeau #if defined(CONFIG_MX51) 4916adbd302SBenoît Thébaudeau u32 imei[8]; 4926adbd302SBenoît Thébaudeau #elif defined(CONFIG_MX53) 49354cd1deeSFabio Estevam u32 gp[8]; 4946adbd302SBenoît Thébaudeau #endif 49554cd1deeSFabio Estevam }; 49654cd1deeSFabio Estevam 497565e39c5SLiu Hui-R64343 struct fuse_bank1_regs { 498565e39c5SLiu Hui-R64343 u32 fuse0_8[9]; 499565e39c5SLiu Hui-R64343 u32 mac_addr[6]; 500565e39c5SLiu Hui-R64343 u32 fuse15_31[0x11]; 501565e39c5SLiu Hui-R64343 }; 502565e39c5SLiu Hui-R64343 5036adbd302SBenoît Thébaudeau #if defined(CONFIG_MX53) 5046adbd302SBenoît Thébaudeau struct fuse_bank4_regs { 5056adbd302SBenoît Thébaudeau u32 fuse0_4[5]; 5066adbd302SBenoît Thébaudeau u32 gp[3]; 5076adbd302SBenoît Thébaudeau u32 fuse8_31[0x18]; 5086adbd302SBenoît Thébaudeau }; 5096adbd302SBenoît Thébaudeau #endif 5106adbd302SBenoît Thébaudeau 511ff9f475dSJason Liu #endif /* __ASSEMBLER__*/ 512ff9f475dSJason Liu 513595f3e56SLiu Hui-R64343 #endif /* __ASM_ARCH_MX5_IMX_REGS_H__ */ 514