uboot/arch/arm/include/asm/arch-mx31/imx-regs.h
<<
>>
Prefs
   1/*
   2 * (c) 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
   3 *
   4 * SPDX-License-Identifier:     GPL-2.0+
   5 */
   6
   7#ifndef __ASM_ARCH_MX31_IMX_REGS_H
   8#define __ASM_ARCH_MX31_IMX_REGS_H
   9
  10#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
  11#include <asm/types.h>
  12
  13/* Clock control module registers */
  14struct clock_control_regs {
  15        u32 ccmr;
  16        u32 pdr0;
  17        u32 pdr1;
  18        u32 rcsr;
  19        u32 mpctl;
  20        u32 upctl;
  21        u32 spctl;
  22        u32 cosr;
  23        u32 cgr0;
  24        u32 cgr1;
  25        u32 cgr2;
  26        u32 wimr0;
  27        u32 ldc;
  28        u32 dcvr0;
  29        u32 dcvr1;
  30        u32 dcvr2;
  31        u32 dcvr3;
  32        u32 ltr0;
  33        u32 ltr1;
  34        u32 ltr2;
  35        u32 ltr3;
  36        u32 ltbr0;
  37        u32 ltbr1;
  38        u32 pmcr0;
  39        u32 pmcr1;
  40        u32 pdr2;
  41};
  42
  43struct cspi_regs {
  44        u32 rxdata;
  45        u32 txdata;
  46        u32 ctrl;
  47        u32 intr;
  48        u32 dma;
  49        u32 stat;
  50        u32 period;
  51        u32 test;
  52};
  53
  54/* IIM control registers */
  55struct iim_regs {
  56        u32 iim_stat;
  57        u32 iim_statm;
  58        u32 iim_err;
  59        u32 iim_emask;
  60        u32 iim_fctl;
  61        u32 iim_ua;
  62        u32 iim_la;
  63        u32 iim_sdat;
  64        u32 iim_prev;
  65        u32 iim_srev;
  66        u32 iim_prg_p;
  67        u32 iim_scs0;
  68        u32 iim_scs1;
  69        u32 iim_scs2;
  70        u32 iim_scs3;
  71        u32 res[0x1f1];
  72        struct fuse_bank {
  73                u32 fuse_regs[0x20];
  74                u32 fuse_rsvd[0xe0];
  75        } bank[3];
  76};
  77
  78struct fuse_bank0_regs {
  79        u32 fuse0_5[6];
  80        u32 usr;
  81        u32 fuse7_15[9];
  82};
  83
  84struct fuse_bank2_regs {
  85        u32 fuse0;
  86        u32 uid[8];
  87        u32 fuse9_15[7];
  88};
  89
  90struct iomuxc_regs {
  91        u32 unused1;
  92        u32 unused2;
  93        u32 gpr;
  94};
  95
  96struct mx3_cpu_type {
  97        u8 srev;
  98        u32 v;
  99};
 100
 101#define IOMUX_PADNUM_MASK       0x1ff
 102#define IOMUX_PIN(gpionum, padnum) ((padnum) & IOMUX_PADNUM_MASK)
 103
 104/*
 105 * various IOMUX pad functions
 106 */
 107enum iomux_pad_config {
 108        PAD_CTL_NOLOOPBACK      = 0x0 << 9,
 109        PAD_CTL_LOOPBACK        = 0x1 << 9,
 110        PAD_CTL_PKE_NONE        = 0x0 << 8,
 111        PAD_CTL_PKE_ENABLE      = 0x1 << 8,
 112        PAD_CTL_PUE_KEEPER      = 0x0 << 7,
 113        PAD_CTL_PUE_PUD         = 0x1 << 7,
 114        PAD_CTL_100K_PD         = 0x0 << 5,
 115        PAD_CTL_100K_PU         = 0x1 << 5,
 116        PAD_CTL_47K_PU          = 0x2 << 5,
 117        PAD_CTL_22K_PU          = 0x3 << 5,
 118        PAD_CTL_HYS_CMOS        = 0x0 << 4,
 119        PAD_CTL_HYS_SCHMITZ     = 0x1 << 4,
 120        PAD_CTL_ODE_CMOS        = 0x0 << 3,
 121        PAD_CTL_ODE_OpenDrain   = 0x1 << 3,
 122        PAD_CTL_DRV_NORMAL      = 0x0 << 1,
 123        PAD_CTL_DRV_HIGH        = 0x1 << 1,
 124        PAD_CTL_DRV_MAX         = 0x2 << 1,
 125        PAD_CTL_SRE_SLOW        = 0x0 << 0,
 126        PAD_CTL_SRE_FAST        = 0x1 << 0
 127};
 128
 129/*
 130 * This enumeration is constructed based on the Section
 131 * "sw_pad_ctl & sw_mux_ctl details" of the MX31 IC Spec. Each enumerated
 132 * value is constructed based on the rules described above.
 133 */
 134
 135enum iomux_pins {
 136        MX31_PIN_TTM_PAD        = IOMUX_PIN(0xff,   0),
 137        MX31_PIN_CSPI3_SPI_RDY  = IOMUX_PIN(0xff,   1),
 138        MX31_PIN_CSPI3_SCLK     = IOMUX_PIN(0xff,   2),
 139        MX31_PIN_CSPI3_MISO     = IOMUX_PIN(0xff,   3),
 140        MX31_PIN_CSPI3_MOSI     = IOMUX_PIN(0xff,   4),
 141        MX31_PIN_CLKSS          = IOMUX_PIN(0xff,   5),
 142        MX31_PIN_CE_CONTROL     = IOMUX_PIN(0xff,   6),
 143        MX31_PIN_ATA_RESET_B    = IOMUX_PIN(95,     7),
 144        MX31_PIN_ATA_DMACK      = IOMUX_PIN(94,     8),
 145        MX31_PIN_ATA_DIOW       = IOMUX_PIN(93,     9),
 146        MX31_PIN_ATA_DIOR       = IOMUX_PIN(92,    10),
 147        MX31_PIN_ATA_CS1        = IOMUX_PIN(91,    11),
 148        MX31_PIN_ATA_CS0        = IOMUX_PIN(90,    12),
 149        MX31_PIN_SD1_DATA3      = IOMUX_PIN(63,    13),
 150        MX31_PIN_SD1_DATA2      = IOMUX_PIN(62,    14),
 151        MX31_PIN_SD1_DATA1      = IOMUX_PIN(61,    15),
 152        MX31_PIN_SD1_DATA0      = IOMUX_PIN(60,    16),
 153        MX31_PIN_SD1_CLK        = IOMUX_PIN(59,    17),
 154        MX31_PIN_SD1_CMD        = IOMUX_PIN(58,    18),
 155        MX31_PIN_D3_SPL         = IOMUX_PIN(0xff,  19),
 156        MX31_PIN_D3_CLS         = IOMUX_PIN(0xff,  20),
 157        MX31_PIN_D3_REV         = IOMUX_PIN(0xff,  21),
 158        MX31_PIN_CONTRAST       = IOMUX_PIN(0xff,  22),
 159        MX31_PIN_VSYNC3         = IOMUX_PIN(0xff,  23),
 160        MX31_PIN_READ           = IOMUX_PIN(0xff,  24),
 161        MX31_PIN_WRITE          = IOMUX_PIN(0xff,  25),
 162        MX31_PIN_PAR_RS         = IOMUX_PIN(0xff,  26),
 163        MX31_PIN_SER_RS         = IOMUX_PIN(89,    27),
 164        MX31_PIN_LCS1           = IOMUX_PIN(88,    28),
 165        MX31_PIN_LCS0           = IOMUX_PIN(87,    29),
 166        MX31_PIN_SD_D_CLK       = IOMUX_PIN(86,    30),
 167        MX31_PIN_SD_D_IO        = IOMUX_PIN(85,    31),
 168        MX31_PIN_SD_D_I         = IOMUX_PIN(84,    32),
 169        MX31_PIN_DRDY0          = IOMUX_PIN(0xff,  33),
 170        MX31_PIN_FPSHIFT        = IOMUX_PIN(0xff,  34),
 171        MX31_PIN_HSYNC          = IOMUX_PIN(0xff,  35),
 172        MX31_PIN_VSYNC0         = IOMUX_PIN(0xff,  36),
 173        MX31_PIN_LD17           = IOMUX_PIN(0xff,  37),
 174        MX31_PIN_LD16           = IOMUX_PIN(0xff,  38),
 175        MX31_PIN_LD15           = IOMUX_PIN(0xff,  39),
 176        MX31_PIN_LD14           = IOMUX_PIN(0xff,  40),
 177        MX31_PIN_LD13           = IOMUX_PIN(0xff,  41),
 178        MX31_PIN_LD12           = IOMUX_PIN(0xff,  42),
 179        MX31_PIN_LD11           = IOMUX_PIN(0xff,  43),
 180        MX31_PIN_LD10           = IOMUX_PIN(0xff,  44),
 181        MX31_PIN_LD9            = IOMUX_PIN(0xff,  45),
 182        MX31_PIN_LD8            = IOMUX_PIN(0xff,  46),
 183        MX31_PIN_LD7            = IOMUX_PIN(0xff,  47),
 184        MX31_PIN_LD6            = IOMUX_PIN(0xff,  48),
 185        MX31_PIN_LD5            = IOMUX_PIN(0xff,  49),
 186        MX31_PIN_LD4            = IOMUX_PIN(0xff,  50),
 187        MX31_PIN_LD3            = IOMUX_PIN(0xff,  51),
 188        MX31_PIN_LD2            = IOMUX_PIN(0xff,  52),
 189        MX31_PIN_LD1            = IOMUX_PIN(0xff,  53),
 190        MX31_PIN_LD0            = IOMUX_PIN(0xff,  54),
 191        MX31_PIN_USBH2_DATA1    = IOMUX_PIN(0xff,  55),
 192        MX31_PIN_USBH2_DATA0    = IOMUX_PIN(0xff,  56),
 193        MX31_PIN_USBH2_NXT      = IOMUX_PIN(0xff,  57),
 194        MX31_PIN_USBH2_STP      = IOMUX_PIN(0xff,  58),
 195        MX31_PIN_USBH2_DIR      = IOMUX_PIN(0xff,  59),
 196        MX31_PIN_USBH2_CLK      = IOMUX_PIN(0xff,  60),
 197        MX31_PIN_USBOTG_DATA7   = IOMUX_PIN(0xff,  61),
 198        MX31_PIN_USBOTG_DATA6   = IOMUX_PIN(0xff,  62),
 199        MX31_PIN_USBOTG_DATA5   = IOMUX_PIN(0xff,  63),
 200        MX31_PIN_USBOTG_DATA4   = IOMUX_PIN(0xff,  64),
 201        MX31_PIN_USBOTG_DATA3   = IOMUX_PIN(0xff,  65),
 202        MX31_PIN_USBOTG_DATA2   = IOMUX_PIN(0xff,  66),
 203        MX31_PIN_USBOTG_DATA1   = IOMUX_PIN(0xff,  67),
 204        MX31_PIN_USBOTG_DATA0   = IOMUX_PIN(0xff,  68),
 205        MX31_PIN_USBOTG_NXT     = IOMUX_PIN(0xff,  69),
 206        MX31_PIN_USBOTG_STP     = IOMUX_PIN(0xff,  70),
 207        MX31_PIN_USBOTG_DIR     = IOMUX_PIN(0xff,  71),
 208        MX31_PIN_USBOTG_CLK     = IOMUX_PIN(0xff,  72),
 209        MX31_PIN_USB_BYP        = IOMUX_PIN(31,    73),
 210        MX31_PIN_USB_OC         = IOMUX_PIN(30,    74),
 211        MX31_PIN_USB_PWR        = IOMUX_PIN(29,    75),
 212        MX31_PIN_SJC_MOD        = IOMUX_PIN(0xff,  76),
 213        MX31_PIN_DE_B           = IOMUX_PIN(0xff,  77),
 214        MX31_PIN_TRSTB          = IOMUX_PIN(0xff,  78),
 215        MX31_PIN_TDO            = IOMUX_PIN(0xff,  79),
 216        MX31_PIN_TDI            = IOMUX_PIN(0xff,  80),
 217        MX31_PIN_TMS            = IOMUX_PIN(0xff,  81),
 218        MX31_PIN_TCK            = IOMUX_PIN(0xff,  82),
 219        MX31_PIN_RTCK           = IOMUX_PIN(0xff,  83),
 220        MX31_PIN_KEY_COL7       = IOMUX_PIN(57,    84),
 221        MX31_PIN_KEY_COL6       = IOMUX_PIN(56,    85),
 222        MX31_PIN_KEY_COL5       = IOMUX_PIN(55,    86),
 223        MX31_PIN_KEY_COL4       = IOMUX_PIN(54,    87),
 224        MX31_PIN_KEY_COL3       = IOMUX_PIN(0xff,  88),
 225        MX31_PIN_KEY_COL2       = IOMUX_PIN(0xff,  89),
 226        MX31_PIN_KEY_COL1       = IOMUX_PIN(0xff,  90),
 227        MX31_PIN_KEY_COL0       = IOMUX_PIN(0xff,  91),
 228        MX31_PIN_KEY_ROW7       = IOMUX_PIN(53,    92),
 229        MX31_PIN_KEY_ROW6       = IOMUX_PIN(52,    93),
 230        MX31_PIN_KEY_ROW5       = IOMUX_PIN(51,    94),
 231        MX31_PIN_KEY_ROW4       = IOMUX_PIN(50,    95),
 232        MX31_PIN_KEY_ROW3       = IOMUX_PIN(0xff,  96),
 233        MX31_PIN_KEY_ROW2       = IOMUX_PIN(0xff,  97),
 234        MX31_PIN_KEY_ROW1       = IOMUX_PIN(0xff,  98),
 235        MX31_PIN_KEY_ROW0       = IOMUX_PIN(0xff,  99),
 236        MX31_PIN_BATT_LINE      = IOMUX_PIN(49,   100),
 237        MX31_PIN_CTS2           = IOMUX_PIN(0xff, 101),
 238        MX31_PIN_RTS2           = IOMUX_PIN(0xff, 102),
 239        MX31_PIN_TXD2           = IOMUX_PIN(28,   103),
 240        MX31_PIN_RXD2           = IOMUX_PIN(27,   104),
 241        MX31_PIN_DTR_DCE2       = IOMUX_PIN(48,   105),
 242        MX31_PIN_DCD_DTE1       = IOMUX_PIN(47,   106),
 243        MX31_PIN_RI_DTE1        = IOMUX_PIN(46,   107),
 244        MX31_PIN_DSR_DTE1       = IOMUX_PIN(45,   108),
 245        MX31_PIN_DTR_DTE1       = IOMUX_PIN(44,   109),
 246        MX31_PIN_DCD_DCE1       = IOMUX_PIN(43,   110),
 247        MX31_PIN_RI_DCE1        = IOMUX_PIN(42,   111),
 248        MX31_PIN_DSR_DCE1       = IOMUX_PIN(41,   112),
 249        MX31_PIN_DTR_DCE1       = IOMUX_PIN(40,   113),
 250        MX31_PIN_CTS1           = IOMUX_PIN(39,   114),
 251        MX31_PIN_RTS1           = IOMUX_PIN(38,   115),
 252        MX31_PIN_TXD1           = IOMUX_PIN(37,   116),
 253        MX31_PIN_RXD1           = IOMUX_PIN(36,   117),
 254        MX31_PIN_CSPI2_SPI_RDY  = IOMUX_PIN(0xff, 118),
 255        MX31_PIN_CSPI2_SCLK     = IOMUX_PIN(0xff, 119),
 256        MX31_PIN_CSPI2_SS2      = IOMUX_PIN(0xff, 120),
 257        MX31_PIN_CSPI2_SS1      = IOMUX_PIN(0xff, 121),
 258        MX31_PIN_CSPI2_SS0      = IOMUX_PIN(0xff, 122),
 259        MX31_PIN_CSPI2_MISO     = IOMUX_PIN(0xff, 123),
 260        MX31_PIN_CSPI2_MOSI     = IOMUX_PIN(0xff, 124),
 261        MX31_PIN_CSPI1_SPI_RDY  = IOMUX_PIN(0xff, 125),
 262        MX31_PIN_CSPI1_SCLK     = IOMUX_PIN(0xff, 126),
 263        MX31_PIN_CSPI1_SS2      = IOMUX_PIN(0xff, 127),
 264        MX31_PIN_CSPI1_SS1      = IOMUX_PIN(0xff, 128),
 265        MX31_PIN_CSPI1_SS0      = IOMUX_PIN(0xff, 129),
 266        MX31_PIN_CSPI1_MISO     = IOMUX_PIN(0xff, 130),
 267        MX31_PIN_CSPI1_MOSI     = IOMUX_PIN(0xff, 131),
 268        MX31_PIN_SFS6           = IOMUX_PIN(26,   132),
 269        MX31_PIN_SCK6           = IOMUX_PIN(25,   133),
 270        MX31_PIN_SRXD6          = IOMUX_PIN(24,   134),
 271        MX31_PIN_STXD6          = IOMUX_PIN(23,   135),
 272        MX31_PIN_SFS5           = IOMUX_PIN(0xff, 136),
 273        MX31_PIN_SCK5           = IOMUX_PIN(0xff, 137),
 274        MX31_PIN_SRXD5          = IOMUX_PIN(22,   138),
 275        MX31_PIN_STXD5          = IOMUX_PIN(21,   139),
 276        MX31_PIN_SFS4           = IOMUX_PIN(0xff, 140),
 277        MX31_PIN_SCK4           = IOMUX_PIN(0xff, 141),
 278        MX31_PIN_SRXD4          = IOMUX_PIN(20,   142),
 279        MX31_PIN_STXD4          = IOMUX_PIN(19,   143),
 280        MX31_PIN_SFS3           = IOMUX_PIN(0xff, 144),
 281        MX31_PIN_SCK3           = IOMUX_PIN(0xff, 145),
 282        MX31_PIN_SRXD3          = IOMUX_PIN(18,   146),
 283        MX31_PIN_STXD3          = IOMUX_PIN(17,   147),
 284        MX31_PIN_I2C_DAT        = IOMUX_PIN(0xff, 148),
 285        MX31_PIN_I2C_CLK        = IOMUX_PIN(0xff, 149),
 286        MX31_PIN_CSI_PIXCLK     = IOMUX_PIN(83,   150),
 287        MX31_PIN_CSI_HSYNC      = IOMUX_PIN(82,   151),
 288        MX31_PIN_CSI_VSYNC      = IOMUX_PIN(81,   152),
 289        MX31_PIN_CSI_MCLK       = IOMUX_PIN(80,   153),
 290        MX31_PIN_CSI_D15        = IOMUX_PIN(79,   154),
 291        MX31_PIN_CSI_D14        = IOMUX_PIN(78,   155),
 292        MX31_PIN_CSI_D13        = IOMUX_PIN(77,   156),
 293        MX31_PIN_CSI_D12        = IOMUX_PIN(76,   157),
 294        MX31_PIN_CSI_D11        = IOMUX_PIN(75,   158),
 295        MX31_PIN_CSI_D10        = IOMUX_PIN(74,   159),
 296        MX31_PIN_CSI_D9         = IOMUX_PIN(73,   160),
 297        MX31_PIN_CSI_D8         = IOMUX_PIN(72,   161),
 298        MX31_PIN_CSI_D7         = IOMUX_PIN(71,   162),
 299        MX31_PIN_CSI_D6         = IOMUX_PIN(70,   163),
 300        MX31_PIN_CSI_D5         = IOMUX_PIN(69,   164),
 301        MX31_PIN_CSI_D4         = IOMUX_PIN(68,   165),
 302        MX31_PIN_M_GRANT        = IOMUX_PIN(0xff, 166),
 303        MX31_PIN_M_REQUEST      = IOMUX_PIN(0xff, 167),
 304        MX31_PIN_PC_POE         = IOMUX_PIN(0xff, 168),
 305        MX31_PIN_PC_RW_B        = IOMUX_PIN(0xff, 169),
 306        MX31_PIN_IOIS16         = IOMUX_PIN(0xff, 170),
 307        MX31_PIN_PC_RST         = IOMUX_PIN(0xff, 171),
 308        MX31_PIN_PC_BVD2        = IOMUX_PIN(0xff, 172),
 309        MX31_PIN_PC_BVD1        = IOMUX_PIN(0xff, 173),
 310        MX31_PIN_PC_VS2         = IOMUX_PIN(0xff, 174),
 311        MX31_PIN_PC_VS1         = IOMUX_PIN(0xff, 175),
 312        MX31_PIN_PC_PWRON       = IOMUX_PIN(0xff, 176),
 313        MX31_PIN_PC_READY       = IOMUX_PIN(0xff, 177),
 314        MX31_PIN_PC_WAIT_B      = IOMUX_PIN(0xff, 178),
 315        MX31_PIN_PC_CD2_B       = IOMUX_PIN(0xff, 179),
 316        MX31_PIN_PC_CD1_B       = IOMUX_PIN(0xff, 180),
 317        MX31_PIN_D0             = IOMUX_PIN(0xff, 181),
 318        MX31_PIN_D1             = IOMUX_PIN(0xff, 182),
 319        MX31_PIN_D2             = IOMUX_PIN(0xff, 183),
 320        MX31_PIN_D3             = IOMUX_PIN(0xff, 184),
 321        MX31_PIN_D4             = IOMUX_PIN(0xff, 185),
 322        MX31_PIN_D5             = IOMUX_PIN(0xff, 186),
 323        MX31_PIN_D6             = IOMUX_PIN(0xff, 187),
 324        MX31_PIN_D7             = IOMUX_PIN(0xff, 188),
 325        MX31_PIN_D8             = IOMUX_PIN(0xff, 189),
 326        MX31_PIN_D9             = IOMUX_PIN(0xff, 190),
 327        MX31_PIN_D10            = IOMUX_PIN(0xff, 191),
 328        MX31_PIN_D11            = IOMUX_PIN(0xff, 192),
 329        MX31_PIN_D12            = IOMUX_PIN(0xff, 193),
 330        MX31_PIN_D13            = IOMUX_PIN(0xff, 194),
 331        MX31_PIN_D14            = IOMUX_PIN(0xff, 195),
 332        MX31_PIN_D15            = IOMUX_PIN(0xff, 196),
 333        MX31_PIN_NFRB           = IOMUX_PIN(16,   197),
 334        MX31_PIN_NFCE_B         = IOMUX_PIN(15,   198),
 335        MX31_PIN_NFWP_B         = IOMUX_PIN(14,   199),
 336        MX31_PIN_NFCLE          = IOMUX_PIN(13,   200),
 337        MX31_PIN_NFALE          = IOMUX_PIN(12,   201),
 338        MX31_PIN_NFRE_B         = IOMUX_PIN(11,   202),
 339        MX31_PIN_NFWE_B         = IOMUX_PIN(10,   203),
 340        MX31_PIN_SDQS3          = IOMUX_PIN(0xff, 204),
 341        MX31_PIN_SDQS2          = IOMUX_PIN(0xff, 205),
 342        MX31_PIN_SDQS1          = IOMUX_PIN(0xff, 206),
 343        MX31_PIN_SDQS0          = IOMUX_PIN(0xff, 207),
 344        MX31_PIN_SDCLK_B        = IOMUX_PIN(0xff, 208),
 345        MX31_PIN_SDCLK          = IOMUX_PIN(0xff, 209),
 346        MX31_PIN_SDCKE1         = IOMUX_PIN(0xff, 210),
 347        MX31_PIN_SDCKE0         = IOMUX_PIN(0xff, 211),
 348        MX31_PIN_SDWE           = IOMUX_PIN(0xff, 212),
 349        MX31_PIN_CAS            = IOMUX_PIN(0xff, 213),
 350        MX31_PIN_RAS            = IOMUX_PIN(0xff, 214),
 351        MX31_PIN_RW             = IOMUX_PIN(0xff, 215),
 352        MX31_PIN_BCLK           = IOMUX_PIN(0xff, 216),
 353        MX31_PIN_LBA            = IOMUX_PIN(0xff, 217),
 354        MX31_PIN_ECB            = IOMUX_PIN(0xff, 218),
 355        MX31_PIN_CS5            = IOMUX_PIN(0xff, 219),
 356        MX31_PIN_CS4            = IOMUX_PIN(0xff, 220),
 357        MX31_PIN_CS3            = IOMUX_PIN(0xff, 221),
 358        MX31_PIN_CS2            = IOMUX_PIN(0xff, 222),
 359        MX31_PIN_CS1            = IOMUX_PIN(0xff, 223),
 360        MX31_PIN_CS0            = IOMUX_PIN(0xff, 224),
 361        MX31_PIN_OE             = IOMUX_PIN(0xff, 225),
 362        MX31_PIN_EB1            = IOMUX_PIN(0xff, 226),
 363        MX31_PIN_EB0            = IOMUX_PIN(0xff, 227),
 364        MX31_PIN_DQM3           = IOMUX_PIN(0xff, 228),
 365        MX31_PIN_DQM2           = IOMUX_PIN(0xff, 229),
 366        MX31_PIN_DQM1           = IOMUX_PIN(0xff, 230),
 367        MX31_PIN_DQM0           = IOMUX_PIN(0xff, 231),
 368        MX31_PIN_SD31           = IOMUX_PIN(0xff, 232),
 369        MX31_PIN_SD30           = IOMUX_PIN(0xff, 233),
 370        MX31_PIN_SD29           = IOMUX_PIN(0xff, 234),
 371        MX31_PIN_SD28           = IOMUX_PIN(0xff, 235),
 372        MX31_PIN_SD27           = IOMUX_PIN(0xff, 236),
 373        MX31_PIN_SD26           = IOMUX_PIN(0xff, 237),
 374        MX31_PIN_SD25           = IOMUX_PIN(0xff, 238),
 375        MX31_PIN_SD24           = IOMUX_PIN(0xff, 239),
 376        MX31_PIN_SD23           = IOMUX_PIN(0xff, 240),
 377        MX31_PIN_SD22           = IOMUX_PIN(0xff, 241),
 378        MX31_PIN_SD21           = IOMUX_PIN(0xff, 242),
 379        MX31_PIN_SD20           = IOMUX_PIN(0xff, 243),
 380        MX31_PIN_SD19           = IOMUX_PIN(0xff, 244),
 381        MX31_PIN_SD18           = IOMUX_PIN(0xff, 245),
 382        MX31_PIN_SD17           = IOMUX_PIN(0xff, 246),
 383        MX31_PIN_SD16           = IOMUX_PIN(0xff, 247),
 384        MX31_PIN_SD15           = IOMUX_PIN(0xff, 248),
 385        MX31_PIN_SD14           = IOMUX_PIN(0xff, 249),
 386        MX31_PIN_SD13           = IOMUX_PIN(0xff, 250),
 387        MX31_PIN_SD12           = IOMUX_PIN(0xff, 251),
 388        MX31_PIN_SD11           = IOMUX_PIN(0xff, 252),
 389        MX31_PIN_SD10           = IOMUX_PIN(0xff, 253),
 390        MX31_PIN_SD9            = IOMUX_PIN(0xff, 254),
 391        MX31_PIN_SD8            = IOMUX_PIN(0xff, 255),
 392        MX31_PIN_SD7            = IOMUX_PIN(0xff, 256),
 393        MX31_PIN_SD6            = IOMUX_PIN(0xff, 257),
 394        MX31_PIN_SD5            = IOMUX_PIN(0xff, 258),
 395        MX31_PIN_SD4            = IOMUX_PIN(0xff, 259),
 396        MX31_PIN_SD3            = IOMUX_PIN(0xff, 260),
 397        MX31_PIN_SD2            = IOMUX_PIN(0xff, 261),
 398        MX31_PIN_SD1            = IOMUX_PIN(0xff, 262),
 399        MX31_PIN_SD0            = IOMUX_PIN(0xff, 263),
 400        MX31_PIN_SDBA0          = IOMUX_PIN(0xff, 264),
 401        MX31_PIN_SDBA1          = IOMUX_PIN(0xff, 265),
 402        MX31_PIN_A25            = IOMUX_PIN(0xff, 266),
 403        MX31_PIN_A24            = IOMUX_PIN(0xff, 267),
 404        MX31_PIN_A23            = IOMUX_PIN(0xff, 268),
 405        MX31_PIN_A22            = IOMUX_PIN(0xff, 269),
 406        MX31_PIN_A21            = IOMUX_PIN(0xff, 270),
 407        MX31_PIN_A20            = IOMUX_PIN(0xff, 271),
 408        MX31_PIN_A19            = IOMUX_PIN(0xff, 272),
 409        MX31_PIN_A18            = IOMUX_PIN(0xff, 273),
 410        MX31_PIN_A17            = IOMUX_PIN(0xff, 274),
 411        MX31_PIN_A16            = IOMUX_PIN(0xff, 275),
 412        MX31_PIN_A14            = IOMUX_PIN(0xff, 276),
 413        MX31_PIN_A15            = IOMUX_PIN(0xff, 277),
 414        MX31_PIN_A13            = IOMUX_PIN(0xff, 278),
 415        MX31_PIN_A12            = IOMUX_PIN(0xff, 279),
 416        MX31_PIN_A11            = IOMUX_PIN(0xff, 280),
 417        MX31_PIN_MA10           = IOMUX_PIN(0xff, 281),
 418        MX31_PIN_A10            = IOMUX_PIN(0xff, 282),
 419        MX31_PIN_A9             = IOMUX_PIN(0xff, 283),
 420        MX31_PIN_A8             = IOMUX_PIN(0xff, 284),
 421        MX31_PIN_A7             = IOMUX_PIN(0xff, 285),
 422        MX31_PIN_A6             = IOMUX_PIN(0xff, 286),
 423        MX31_PIN_A5             = IOMUX_PIN(0xff, 287),
 424        MX31_PIN_A4             = IOMUX_PIN(0xff, 288),
 425        MX31_PIN_A3             = IOMUX_PIN(0xff, 289),
 426        MX31_PIN_A2             = IOMUX_PIN(0xff, 290),
 427        MX31_PIN_A1             = IOMUX_PIN(0xff, 291),
 428        MX31_PIN_A0             = IOMUX_PIN(0xff, 292),
 429        MX31_PIN_VPG1           = IOMUX_PIN(0xff, 293),
 430        MX31_PIN_VPG0           = IOMUX_PIN(0xff, 294),
 431        MX31_PIN_DVFS1          = IOMUX_PIN(0xff, 295),
 432        MX31_PIN_DVFS0          = IOMUX_PIN(0xff, 296),
 433        MX31_PIN_VSTBY          = IOMUX_PIN(0xff, 297),
 434        MX31_PIN_POWER_FAIL     = IOMUX_PIN(0xff, 298),
 435        MX31_PIN_CKIL           = IOMUX_PIN(0xff, 299),
 436        MX31_PIN_BOOT_MODE4     = IOMUX_PIN(0xff, 300),
 437        MX31_PIN_BOOT_MODE3     = IOMUX_PIN(0xff, 301),
 438        MX31_PIN_BOOT_MODE2     = IOMUX_PIN(0xff, 302),
 439        MX31_PIN_BOOT_MODE1     = IOMUX_PIN(0xff, 303),
 440        MX31_PIN_BOOT_MODE0     = IOMUX_PIN(0xff, 304),
 441        MX31_PIN_CLKO           = IOMUX_PIN(0xff, 305),
 442        MX31_PIN_POR_B          = IOMUX_PIN(0xff, 306),
 443        MX31_PIN_RESET_IN_B     = IOMUX_PIN(0xff, 307),
 444        MX31_PIN_CKIH           = IOMUX_PIN(0xff, 308),
 445        MX31_PIN_SIMPD0         = IOMUX_PIN(35,   309),
 446        MX31_PIN_SRX0           = IOMUX_PIN(34,   310),
 447        MX31_PIN_STX0           = IOMUX_PIN(33,   311),
 448        MX31_PIN_SVEN0          = IOMUX_PIN(32,   312),
 449        MX31_PIN_SRST0          = IOMUX_PIN(67,   313),
 450        MX31_PIN_SCLK0          = IOMUX_PIN(66,   314),
 451        MX31_PIN_GPIO3_1        = IOMUX_PIN(65,   315),
 452        MX31_PIN_GPIO3_0        = IOMUX_PIN(64,   316),
 453        MX31_PIN_GPIO1_6        = IOMUX_PIN(6,    317),
 454        MX31_PIN_GPIO1_5        = IOMUX_PIN(5,    318),
 455        MX31_PIN_GPIO1_4        = IOMUX_PIN(4,    319),
 456        MX31_PIN_GPIO1_3        = IOMUX_PIN(3,    320),
 457        MX31_PIN_GPIO1_2        = IOMUX_PIN(2,    321),
 458        MX31_PIN_GPIO1_1        = IOMUX_PIN(1,    322),
 459        MX31_PIN_GPIO1_0        = IOMUX_PIN(0,    323),
 460        MX31_PIN_PWMO           = IOMUX_PIN(9,    324),
 461        MX31_PIN_WATCHDOG_RST   = IOMUX_PIN(0xff, 325),
 462        MX31_PIN_COMPARE        = IOMUX_PIN(8,    326),
 463        MX31_PIN_CAPTURE        = IOMUX_PIN(7,    327),
 464};
 465
 466/*
 467 * various IOMUX general purpose functions
 468 */
 469enum iomux_gp_func {
 470        MUX_PGP_FIRI                    = 1 << 0,
 471        MUX_DDR_MODE                    = 1 << 1,
 472        MUX_PGP_CSPI_BB                 = 1 << 2,
 473        MUX_PGP_ATA_1                   = 1 << 3,
 474        MUX_PGP_ATA_2                   = 1 << 4,
 475        MUX_PGP_ATA_3                   = 1 << 5,
 476        MUX_PGP_ATA_4                   = 1 << 6,
 477        MUX_PGP_ATA_5                   = 1 << 7,
 478        MUX_PGP_ATA_6                   = 1 << 8,
 479        MUX_PGP_ATA_7                   = 1 << 9,
 480        MUX_PGP_ATA_8                   = 1 << 10,
 481        MUX_PGP_UH2                     = 1 << 11,
 482        MUX_SDCTL_CSD0_SEL              = 1 << 12,
 483        MUX_SDCTL_CSD1_SEL              = 1 << 13,
 484        MUX_CSPI1_UART3                 = 1 << 14,
 485        MUX_EXTDMAREQ2_MBX_SEL          = 1 << 15,
 486        MUX_TAMPER_DETECT_EN            = 1 << 16,
 487        MUX_PGP_USB_4WIRE               = 1 << 17,
 488        MUX_PGP_USB_COMMON              = 1 << 18,
 489        MUX_SDHC_MEMSTICK1              = 1 << 19,
 490        MUX_SDHC_MEMSTICK2              = 1 << 20,
 491        MUX_PGP_SPLL_BYP                = 1 << 21,
 492        MUX_PGP_UPLL_BYP                = 1 << 22,
 493        MUX_PGP_MSHC1_CLK_SEL           = 1 << 23,
 494        MUX_PGP_MSHC2_CLK_SEL           = 1 << 24,
 495        MUX_CSPI3_UART5_SEL             = 1 << 25,
 496        MUX_PGP_ATA_9                   = 1 << 26,
 497        MUX_PGP_USB_SUSPEND             = 1 << 27,
 498        MUX_PGP_USB_OTG_LOOPBACK        = 1 << 28,
 499        MUX_PGP_USB_HS1_LOOPBACK        = 1 << 29,
 500        MUX_PGP_USB_HS2_LOOPBACK        = 1 << 30,
 501        MUX_CLKO_DDR_MODE               = 1 << 31,
 502};
 503
 504/* Bit definitions for RCSR register in CCM */
 505#define CCM_RCSR_NF16B  (1 << 31)
 506#define CCM_RCSR_NFMS   (1 << 30)
 507
 508/* WEIM CS control registers */
 509struct mx31_weim_cscr {
 510        u32 upper;
 511        u32 lower;
 512        u32 additional;
 513        u32 reserved;
 514};
 515
 516struct mx31_weim {
 517        struct mx31_weim_cscr cscr[6];
 518};
 519
 520/* ESD control registers */
 521struct esdc_regs {
 522        u32 ctl0;
 523        u32 cfg0;
 524        u32 ctl1;
 525        u32 cfg1;
 526        u32 misc;
 527        u32 dly[5];
 528        u32 dlyl;
 529};
 530
 531#endif
 532
 533#define ARCH_MXC
 534
 535#define __REG(x)     (*((volatile u32 *)(x)))
 536#define __REG16(x)   (*((volatile u16 *)(x)))
 537#define __REG8(x)    (*((volatile u8 *)(x)))
 538
 539#define CCM_BASE        0x53f80000
 540#define CCM_CCMR        (CCM_BASE + 0x00)
 541#define CCM_PDR0        (CCM_BASE + 0x04)
 542#define CCM_PDR1        (CCM_BASE + 0x08)
 543#define CCM_RCSR        (CCM_BASE + 0x0c)
 544#define CCM_MPCTL       (CCM_BASE + 0x10)
 545#define CCM_UPCTL       (CCM_BASE + 0x14)
 546#define CCM_SPCTL       (CCM_BASE + 0x18)
 547#define CCM_COSR        (CCM_BASE + 0x1C)
 548#define CCM_CGR0        (CCM_BASE + 0x20)
 549#define CCM_CGR1        (CCM_BASE + 0x24)
 550#define CCM_CGR2        (CCM_BASE + 0x28)
 551
 552#define CCMR_MDS        (1 << 7)
 553#define CCMR_SBYCS      (1 << 4)
 554#define CCMR_MPE        (1 << 3)
 555#define CCMR_PRCS_MASK  (3 << 1)
 556#define CCMR_FPM        (1 << 1)
 557#define CCMR_CKIH       (2 << 1)
 558
 559#define MX31_IIM_BASE_ADDR      0x5001C000
 560#define IIM_BASE_ADDR           MX31_IIM_BASE_ADDR
 561
 562#define PDR0_CSI_PODF(x)        (((x) & 0x3f) << 26)
 563#define PDR0_CSI_PRDF(x)        (((x) & 0x7) << 23)
 564#define PDR0_PER_PODF(x)        (((x) & 0x1f) << 16)
 565#define PDR0_HSP_PODF(x)        (((x) & 0x7) << 11)
 566#define PDR0_NFC_PODF(x)        (((x) & 0x7) << 8)
 567#define PDR0_IPG_PODF(x)        (((x) & 0x3) << 6)
 568#define PDR0_MAX_PODF(x)        (((x) & 0x7) << 3)
 569#define PDR0_MCU_PODF(x)        ((x) & 0x7)
 570
 571#define PDR1_USB_PRDF(x)        (((x) & 0x3) << 30)
 572#define PDR1_USB_PODF(x)        (((x) & 0x7) << 27)
 573#define PDR1_FIRI_PRDF(x)       (((x) & 0x7) << 24)
 574#define PDR1_FIRI_PODF(x)       (((x) & 0x3f) << 18)
 575#define PDR1_SSI2_PRDF(x)       (((x) & 0x7) << 15)
 576#define PDR1_SSI2_PODF(x)       (((x) & 0x3f) << 9)
 577#define PDR1_SSI1_PRDF(x)       (((x) & 0x7) << 6)
 578#define PDR1_SSI1_PODF(x)       ((x) & 0x3f)
 579
 580#define PLL_BRMO(x)             (((x) & 0x1) << 31)
 581#define PLL_PD(x)               (((x) & 0xf) << 26)
 582#define PLL_MFD(x)              (((x) & 0x3ff) << 16)
 583#define PLL_MFI(x)              (((x) & 0xf) << 10)
 584#define PLL_MFN(x)              (((x) & 0x3ff) << 0)
 585
 586#define GET_PDR0_CSI_PODF(x)    (((x) >> 26) & 0x3f)
 587#define GET_PDR0_CSI_PRDF(x)    (((x) >> 23) & 0x7)
 588#define GET_PDR0_PER_PODF(x)    (((x) >> 16) & 0x1f)
 589#define GET_PDR0_HSP_PODF(x)    (((x) >> 11) & 0x7)
 590#define GET_PDR0_NFC_PODF(x)    (((x) >> 8) & 0x7)
 591#define GET_PDR0_IPG_PODF(x)    (((x) >> 6) & 0x3)
 592#define GET_PDR0_MAX_PODF(x)    (((x) >> 3) & 0x7)
 593#define GET_PDR0_MCU_PODF(x)    ((x) & 0x7)
 594
 595#define GET_PLL_PD(x)           (((x) >> 26) & 0xf)
 596#define GET_PLL_MFD(x)          (((x) >> 16) & 0x3ff)
 597#define GET_PLL_MFI(x)          (((x) >> 10) & 0xf)
 598#define GET_PLL_MFN(x)          (((x) >> 0) & 0x3ff)
 599
 600
 601#define WEIM_ESDCTL0    0xB8001000
 602#define WEIM_ESDCFG0    0xB8001004
 603#define WEIM_ESDCTL1    0xB8001008
 604#define WEIM_ESDCFG1    0xB800100C
 605#define WEIM_ESDMISC    0xB8001010
 606
 607#define UART1_BASE      0x43F90000
 608#define UART2_BASE      0x43F94000
 609#define UART3_BASE      0x5000C000
 610#define UART4_BASE      0x43FB0000
 611#define UART5_BASE      0x43FB4000
 612
 613#define I2C1_BASE_ADDR          0x43f80000
 614#define I2C1_CLK_OFFSET         26
 615#define I2C2_BASE_ADDR          0x43F98000
 616#define I2C2_CLK_OFFSET         28
 617#define I2C3_BASE_ADDR          0x43f84000
 618#define I2C3_CLK_OFFSET         30
 619
 620#define ESDCTL_SDE                      (1 << 31)
 621#define ESDCTL_CMD_RW                   (0 << 28)
 622#define ESDCTL_CMD_PRECHARGE            (1 << 28)
 623#define ESDCTL_CMD_AUTOREFRESH          (2 << 28)
 624#define ESDCTL_CMD_LOADMODEREG          (3 << 28)
 625#define ESDCTL_CMD_MANUALREFRESH        (4 << 28)
 626#define ESDCTL_ROW_13                   (2 << 24)
 627#define ESDCTL_ROW(x)                   ((x) << 24)
 628#define ESDCTL_COL_9                    (1 << 20)
 629#define ESDCTL_COL(x)                   ((x) << 20)
 630#define ESDCTL_DSIZ(x)                  ((x) << 16)
 631#define ESDCTL_SREFR(x)                 ((x) << 13)
 632#define ESDCTL_PWDT(x)                  ((x) << 10)
 633#define ESDCTL_FP(x)                    ((x) << 8)
 634#define ESDCTL_BL(x)                    ((x) << 7)
 635#define ESDCTL_PRCT(x)                  ((x) << 0)
 636
 637#define ESDCTL_BASE_ADDR        0xB8001000
 638
 639/* 13 fields of the upper CS control register */
 640#define CSCR_U(sp, wp, bcd, bcs, psz, pme, sync, dol, \
 641                cnc, wsc, ew, wws, edc) \
 642        ((sp) << 31 | (wp) << 30 | (bcd) << 28 | (psz) << 22 | (pme) << 21 |\
 643         (sync) << 20 | (dol) << 16 | (cnc) << 14 | (wsc) << 8 | (ew) << 7 |\
 644         (wws) << 4 | (edc) << 0)
 645/* 12 fields of the lower CS control register */
 646#define CSCR_L(oea, oen, ebwa, ebwn, \
 647                csa, ebc, dsz, csn, psr, cre, wrap, csen) \
 648        ((oea) << 28 | (oen) << 24 | (ebwa) << 20 | (ebwn) << 16 |\
 649         (csa) << 12 | (ebc) << 11 | (dsz) << 8 | (csn) << 4 |\
 650         (psr) << 3 | (cre) << 2 | (wrap) << 1 | (csen) << 0)
 651/* 14 fields of the additional CS control register */
 652#define CSCR_A(ebra, ebrn, rwa, rwn, mum, lah, lbn, lba, dww, dct, \
 653                wwu, age, cnc2, fce) \
 654        ((ebra) << 28 | (ebrn) << 24 | (rwa) << 20 | (rwn) << 16 |\
 655         (mum) << 15 | (lah) << 13 | (lbn) << 10 | (lba) << 8 |\
 656         (dww) << 6 | (dct) << 4 | (wwu) << 3 |\
 657         (age) << 2 | (cnc2) << 1 | (fce) << 0)
 658
 659#define WEIM_BASE       0xb8002000
 660
 661#define IOMUXC_BASE     0x43FAC000
 662#define IOMUXC_SW_MUX_CTL(x)    (IOMUXC_BASE + 0xc + (x) * 4)
 663#define IOMUXC_SW_PAD_CTL(x)    (IOMUXC_BASE + 0x154 + (x) * 4)
 664
 665#define IPU_BASE                0x53fc0000
 666#define IPU_CONF                IPU_BASE
 667
 668#define IPU_CONF_PXL_ENDIAN     (1<<8)
 669#define IPU_CONF_DU_EN          (1<<7)
 670#define IPU_CONF_DI_EN          (1<<6)
 671#define IPU_CONF_ADC_EN         (1<<5)
 672#define IPU_CONF_SDC_EN         (1<<4)
 673#define IPU_CONF_PF_EN          (1<<3)
 674#define IPU_CONF_ROT_EN         (1<<2)
 675#define IPU_CONF_IC_EN          (1<<1)
 676#define IPU_CONF_CSI_EN         (1<<0)
 677
 678#define ARM_PPMRR               0x40000015
 679
 680#define WDOG1_BASE_ADDR         0x53FDC000
 681
 682/*
 683 * GPIO
 684 */
 685#define GPIO1_BASE_ADDR 0x53FCC000
 686#define GPIO2_BASE_ADDR 0x53FD0000
 687#define GPIO3_BASE_ADDR 0x53FA4000
 688#define GPIO_DR         0x00000000      /* data register */
 689#define GPIO_GDIR       0x00000004      /* direction register */
 690#define GPIO_PSR        0x00000008      /* pad status register */
 691
 692/*
 693 * Signal Multiplexing (IOMUX)
 694 */
 695
 696/* bits in the SW_MUX_CTL registers */
 697#define MUX_CTL_OUT_GPIO_DR     (0 << 4)
 698#define MUX_CTL_OUT_FUNC        (1 << 4)
 699#define MUX_CTL_OUT_ALT1        (2 << 4)
 700#define MUX_CTL_OUT_ALT2        (3 << 4)
 701#define MUX_CTL_OUT_ALT3        (4 << 4)
 702#define MUX_CTL_OUT_ALT4        (5 << 4)
 703#define MUX_CTL_OUT_ALT5        (6 << 4)
 704#define MUX_CTL_OUT_ALT6        (7 << 4)
 705#define MUX_CTL_IN_NONE         (0 << 0)
 706#define MUX_CTL_IN_GPIO         (1 << 0)
 707#define MUX_CTL_IN_FUNC         (2 << 0)
 708#define MUX_CTL_IN_ALT1         (4 << 0)
 709#define MUX_CTL_IN_ALT2         (8 << 0)
 710
 711#define MUX_CTL_FUNC            (MUX_CTL_OUT_FUNC | MUX_CTL_IN_FUNC)
 712#define MUX_CTL_ALT1            (MUX_CTL_OUT_ALT1 | MUX_CTL_IN_ALT1)
 713#define MUX_CTL_ALT2            (MUX_CTL_OUT_ALT2 | MUX_CTL_IN_ALT2)
 714#define MUX_CTL_GPIO            (MUX_CTL_OUT_GPIO_DR | MUX_CTL_IN_GPIO)
 715
 716/* Register offsets based on IOMUXC_BASE */
 717/* 0x00 .. 0x7b */
 718#define MUX_CTL_CSPI3_MISO              0x0c
 719#define MUX_CTL_CSPI3_SCLK              0x0d
 720#define MUX_CTL_CSPI3_SPI_RDY   0x0e
 721#define MUX_CTL_CSPI3_MOSI              0x13
 722
 723#define MUX_CTL_SD1_DATA1       0x18
 724#define MUX_CTL_SD1_DATA2       0x19
 725#define MUX_CTL_SD1_DATA3       0x1a
 726#define MUX_CTL_SD1_CMD         0x1d
 727#define MUX_CTL_SD1_CLK         0x1e
 728#define MUX_CTL_SD1_DATA0       0x1f
 729
 730#define MUX_CTL_USBH2_DATA1     0x40
 731#define MUX_CTL_USBH2_DIR       0x44
 732#define MUX_CTL_USBH2_STP       0x45
 733#define MUX_CTL_USBH2_NXT       0x46
 734#define MUX_CTL_USBH2_DATA0     0x47
 735#define MUX_CTL_USBH2_CLK       0x4B
 736
 737#define MUX_CTL_TXD2            0x70
 738#define MUX_CTL_RTS2            0x71
 739#define MUX_CTL_CTS2            0x72
 740#define MUX_CTL_RXD2            0x77
 741
 742#define MUX_CTL_RTS1            0x7c
 743#define MUX_CTL_CTS1            0x7d
 744#define MUX_CTL_DTR_DCE1        0x7e
 745#define MUX_CTL_DSR_DCE1        0x7f
 746#define MUX_CTL_CSPI2_SCLK      0x80
 747#define MUX_CTL_CSPI2_SPI_RDY   0x81
 748#define MUX_CTL_RXD1            0x82
 749#define MUX_CTL_TXD1            0x83
 750#define MUX_CTL_CSPI2_MISO      0x84
 751#define MUX_CTL_CSPI2_SS0       0x85
 752#define MUX_CTL_CSPI2_SS1       0x86
 753#define MUX_CTL_CSPI2_SS2       0x87
 754#define MUX_CTL_CSPI1_SS2       0x88
 755#define MUX_CTL_CSPI1_SCLK      0x89
 756#define MUX_CTL_CSPI1_SPI_RDY   0x8a
 757#define MUX_CTL_CSPI2_MOSI      0x8b
 758#define MUX_CTL_CSPI1_MOSI      0x8c
 759#define MUX_CTL_CSPI1_MISO      0x8d
 760#define MUX_CTL_CSPI1_SS0       0x8e
 761#define MUX_CTL_CSPI1_SS1       0x8f
 762#define MUX_CTL_STXD6           0x90
 763#define MUX_CTL_SRXD6           0x91
 764#define MUX_CTL_SCK6            0x92
 765#define MUX_CTL_SFS6            0x93
 766
 767#define MUX_CTL_STXD3           0x9C
 768#define MUX_CTL_SRXD3           0x9D
 769#define MUX_CTL_SCK3            0x9E
 770#define MUX_CTL_SFS3            0x9F
 771
 772#define MUX_CTL_NFC_WP          0xD0
 773#define MUX_CTL_NFC_CE          0xD1
 774#define MUX_CTL_NFC_RB          0xD2
 775#define MUX_CTL_NFC_WE          0xD4
 776#define MUX_CTL_NFC_RE          0xD5
 777#define MUX_CTL_NFC_ALE         0xD6
 778#define MUX_CTL_NFC_CLE         0xD7
 779
 780
 781#define MUX_CTL_CAPTURE         0x150
 782#define MUX_CTL_COMPARE         0x151
 783
 784/*
 785 * Helper macros for the MUX_[contact name]__[pin function] macros
 786 */
 787#define IOMUX_MODE_POS 9
 788#define IOMUX_MODE(contact, mode) (((mode) << IOMUX_MODE_POS) | (contact))
 789
 790/*
 791 * These macros can be used in mx31_gpio_mux() and have the form
 792 * MUX_[contact name]__[pin function]
 793 */
 794#define MUX_RXD1__UART1_RXD_MUX IOMUX_MODE(MUX_CTL_RXD1, MUX_CTL_FUNC)
 795#define MUX_TXD1__UART1_TXD_MUX IOMUX_MODE(MUX_CTL_TXD1, MUX_CTL_FUNC)
 796#define MUX_RTS1__UART1_RTS_B   IOMUX_MODE(MUX_CTL_RTS1, MUX_CTL_FUNC)
 797#define MUX_CTS1__UART1_CTS_B   IOMUX_MODE(MUX_CTL_CTS1, MUX_CTL_FUNC)
 798
 799#define MUX_RXD2__UART2_RXD_MUX IOMUX_MODE(MUX_CTL_RXD2, MUX_CTL_FUNC)
 800#define MUX_TXD2__UART2_TXD_MUX IOMUX_MODE(MUX_CTL_TXD2, MUX_CTL_FUNC)
 801#define MUX_RTS2__UART2_RTS_B   IOMUX_MODE(MUX_CTL_RTS2, MUX_CTL_FUNC)
 802#define MUX_CTS2__UART2_CTS_B   IOMUX_MODE(MUX_CTL_CTS2, MUX_CTL_FUNC)
 803
 804#define MUX_CSPI2_SS0__CSPI2_SS0_B IOMUX_MODE(MUX_CTL_CSPI2_SS0, MUX_CTL_FUNC)
 805#define MUX_CSPI2_SS1__CSPI2_SS1_B IOMUX_MODE(MUX_CTL_CSPI2_SS1, MUX_CTL_FUNC)
 806#define MUX_CSPI2_SS2__CSPI2_SS2_B IOMUX_MODE(MUX_CTL_CSPI2_SS2, MUX_CTL_FUNC)
 807#define MUX_CSPI2_MOSI__CSPI2_MOSI IOMUX_MODE(MUX_CTL_CSPI2_MOSI, MUX_CTL_FUNC)
 808#define MUX_CSPI2_MISO__CSPI2_MISO IOMUX_MODE(MUX_CTL_CSPI2_MISO, MUX_CTL_FUNC)
 809#define MUX_CSPI2_SPI_RDY__CSPI2_DATAREADY_B \
 810        IOMUX_MODE(MUX_CTL_CSPI2_SPI_RDY, MUX_CTL_FUNC)
 811#define MUX_CSPI2_SCLK__CSPI2_CLK IOMUX_MODE(MUX_CTL_CSPI2_SCLK, MUX_CTL_FUNC)
 812
 813#define MUX_CSPI1_SS0__CSPI1_SS0_B IOMUX_MODE(MUX_CTL_CSPI1_SS0, MUX_CTL_FUNC)
 814#define MUX_CSPI1_SS1__CSPI1_SS1_B IOMUX_MODE(MUX_CTL_CSPI1_SS1, MUX_CTL_FUNC)
 815#define MUX_CSPI1_SS2__CSPI1_SS2_B IOMUX_MODE(MUX_CTL_CSPI1_SS2, MUX_CTL_FUNC)
 816#define MUX_CSPI1_MOSI__CSPI1_MOSI IOMUX_MODE(MUX_CTL_CSPI1_MOSI, MUX_CTL_FUNC)
 817#define MUX_CSPI1_MISO__CSPI1_MISO IOMUX_MODE(MUX_CTL_CSPI1_MISO, MUX_CTL_FUNC)
 818#define MUX_CSPI1_SPI_RDY__CSPI1_DATAREADY_B \
 819        IOMUX_MODE(MUX_CTL_CSPI1_SPI_RDY, MUX_CTL_FUNC)
 820#define MUX_CSPI1_SCLK__CSPI1_CLK IOMUX_MODE(MUX_CTL_CSPI1_SCLK, MUX_CTL_FUNC)
 821
 822#define MUX_CSPI2_MOSI__I2C2_SCL IOMUX_MODE(MUX_CTL_CSPI2_MOSI, MUX_CTL_ALT1)
 823#define MUX_CSPI2_MISO__I2C2_SDA IOMUX_MODE(MUX_CTL_CSPI2_MISO, MUX_CTL_ALT1)
 824
 825/* PAD control registers for SDR/DDR */
 826#define IOMUXC_SW_PAD_CTL_SDCKE1_SDCLK_SDCLK_B  (IOMUXC_BASE + 0x26C)
 827#define IOMUXC_SW_PAD_CTL_CAS_SDWE_SDCKE0       (IOMUXC_BASE + 0x270)
 828#define IOMUXC_SW_PAD_CTL_BCLK_RW_RAS           (IOMUXC_BASE + 0x274)
 829#define IOMUXC_SW_PAD_CTL_CS5_ECB_LBA           (IOMUXC_BASE + 0x278)
 830#define IOMUXC_SW_PAD_CTL_CS2_CS3_CS4           (IOMUXC_BASE + 0x27C)
 831#define IOMUXC_SW_PAD_CTL_OE_CS0_CS1            (IOMUXC_BASE + 0x280)
 832#define IOMUXC_SW_PAD_CTL_DQM3_EB0_EB1          (IOMUXC_BASE + 0x284)
 833#define IOMUXC_SW_PAD_CTL_DQM0_DQM1_DQM2        (IOMUXC_BASE + 0x288)
 834#define IOMUXC_SW_PAD_CTL_SD29_SD30_SD31        (IOMUXC_BASE + 0x28C)
 835#define IOMUXC_SW_PAD_CTL_SD26_SD27_SD28        (IOMUXC_BASE + 0x290)
 836#define IOMUXC_SW_PAD_CTL_SD23_SD24_SD25        (IOMUXC_BASE + 0x294)
 837#define IOMUXC_SW_PAD_CTL_SD20_SD21_SD22        (IOMUXC_BASE + 0x298)
 838#define IOMUXC_SW_PAD_CTL_SD17_SD18_SD19        (IOMUXC_BASE + 0x29C)
 839#define IOMUXC_SW_PAD_CTL_SD14_SD15_SD16        (IOMUXC_BASE + 0x2A0)
 840#define IOMUXC_SW_PAD_CTL_SD11_SD12_SD13        (IOMUXC_BASE + 0x2A4)
 841#define IOMUXC_SW_PAD_CTL_SD8_SD9_SD10          (IOMUXC_BASE + 0x2A8)
 842#define IOMUXC_SW_PAD_CTL_SD5_SD6_SD7           (IOMUXC_BASE + 0x2AC)
 843#define IOMUXC_SW_PAD_CTL_SD2_SD3_SD4           (IOMUXC_BASE + 0x2B0)
 844#define IOMUXC_SW_PAD_CTL_SDBA0_SD0_SD1         (IOMUXC_BASE + 0x2B4)
 845#define IOMUXC_SW_PAD_CTL_A24_A25_SDBA1         (IOMUXC_BASE + 0x2B8)
 846#define IOMUXC_SW_PAD_CTL_A21_A22_A23           (IOMUXC_BASE + 0x2BC)
 847#define IOMUXC_SW_PAD_CTL_A18_A19_A20           (IOMUXC_BASE + 0x2C0)
 848#define IOMUXC_SW_PAD_CTL_A15_A16_A17           (IOMUXC_BASE + 0x2C4)
 849#define IOMUXC_SW_PAD_CTL_A12_A13_A14           (IOMUXC_BASE + 0x2C8)
 850#define IOMUXC_SW_PAD_CTL_A10_MA10_A11          (IOMUXC_BASE + 0x2CC)
 851#define IOMUXC_SW_PAD_CTL_A7_A8_A9              (IOMUXC_BASE + 0x2D0)
 852#define IOMUXC_SW_PAD_CTL_A4_A5_A6              (IOMUXC_BASE + 0x2D4)
 853#define IOMUXC_SW_PAD_CTL_A1_A2_A3              (IOMUXC_BASE + 0x2D8)
 854#define IOMUXC_SW_PAD_CTL_VPG0_VPG1_A0          (IOMUXC_BASE + 0x2DC)
 855
 856/*
 857 * Memory regions and CS
 858 */
 859#define IPU_MEM_BASE    0x70000000
 860#define CSD0_BASE       0x80000000
 861#define CSD1_BASE       0x90000000
 862#define CS0_BASE        0xA0000000
 863#define CS1_BASE        0xA8000000
 864#define CS2_BASE        0xB0000000
 865#define CS3_BASE        0xB2000000
 866#define CS4_BASE        0xB4000000
 867#define CS4_PSRAM_BASE  0xB5000000
 868#define CS5_BASE        0xB6000000
 869#define PCMCIA_MEM_BASE 0xC0000000
 870
 871/*
 872 * NAND controller
 873 */
 874#define NFC_BASE_ADDR   0xB8000000
 875
 876/* SD card controller */
 877#define SDHC1_BASE_ADDR 0x50004000
 878#define SDHC2_BASE_ADDR 0x50008000
 879
 880/*
 881 * Internal RAM (16KB)
 882 */
 883#define IRAM_BASE_ADDR  0x1FFFC000
 884#define IRAM_SIZE       (16 * 1024)
 885
 886#define MX31_AIPS1_BASE_ADDR    0x43f00000
 887#define IMX_USB_BASE            (MX31_AIPS1_BASE_ADDR + 0x88000)
 888#define IMX_USB_PORT_OFFSET     0x200
 889
 890/*
 891 * CSPI register definitions
 892 */
 893#define MXC_CSPI
 894#define MXC_CSPICTRL_EN         (1 << 0)
 895#define MXC_CSPICTRL_MODE       (1 << 1)
 896#define MXC_CSPICTRL_XCH        (1 << 2)
 897#define MXC_CSPICTRL_SMC        (1 << 3)
 898#define MXC_CSPICTRL_POL        (1 << 4)
 899#define MXC_CSPICTRL_PHA        (1 << 5)
 900#define MXC_CSPICTRL_SSCTL      (1 << 6)
 901#define MXC_CSPICTRL_SSPOL      (1 << 7)
 902#define MXC_CSPICTRL_CHIPSELECT(x)      (((x) & 0x3) << 24)
 903#define MXC_CSPICTRL_BITCOUNT(x)        (((x) & 0x1f) << 8)
 904#define MXC_CSPICTRL_DATARATE(x)        (((x) & 0x7) << 16)
 905#define MXC_CSPICTRL_TC         (1 << 8)
 906#define MXC_CSPICTRL_RXOVF      (1 << 6)
 907#define MXC_CSPICTRL_MAXBITS    0x1f
 908
 909#define MXC_CSPIPERIOD_32KHZ    (1 << 15)
 910#define MAX_SPI_BYTES   4
 911
 912#define MXC_SPI_BASE_ADDRESSES \
 913        0x43fa4000, \
 914        0x50010000, \
 915        0x53f84000,
 916
 917#endif /* __ASM_ARCH_MX31_IMX_REGS_H */
 918