1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (C) 2009, DENX Software Engineering 3*4882a593Smuzhiyun * Author: John Rigby <jcrigby@gmail.com 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Based on arch-mx31/imx-regs.h 6*4882a593Smuzhiyun * Copyright (C) 2009 Ilya Yanok, 7*4882a593Smuzhiyun * Emcraft Systems <yanok@emcraft.com> 8*4882a593Smuzhiyun * and arch-mx27/imx-regs.h 9*4882a593Smuzhiyun * Copyright (C) 2007 Pengutronix, 10*4882a593Smuzhiyun * Sascha Hauer <s.hauer@pengutronix.de> 11*4882a593Smuzhiyun * Copyright (C) 2009 Ilya Yanok, 12*4882a593Smuzhiyun * Emcraft Systems <yanok@emcraft.com> 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 15*4882a593Smuzhiyun */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #ifndef _IMX_REGS_H 18*4882a593Smuzhiyun #define _IMX_REGS_H 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) 21*4882a593Smuzhiyun #include <asm/types.h> 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun /* Clock Control Module (CCM) registers */ 24*4882a593Smuzhiyun struct ccm_regs { 25*4882a593Smuzhiyun u32 mpctl; /* Core PLL Control */ 26*4882a593Smuzhiyun u32 upctl; /* USB PLL Control */ 27*4882a593Smuzhiyun u32 cctl; /* Clock Control */ 28*4882a593Smuzhiyun u32 cgr0; /* Clock Gating Control 0 */ 29*4882a593Smuzhiyun u32 cgr1; /* Clock Gating Control 1 */ 30*4882a593Smuzhiyun u32 cgr2; /* Clock Gating Control 2 */ 31*4882a593Smuzhiyun u32 pcdr[4]; /* PER Clock Dividers */ 32*4882a593Smuzhiyun u32 rcsr; /* CCM Status */ 33*4882a593Smuzhiyun u32 crdr; /* CCM Reset and Debug */ 34*4882a593Smuzhiyun u32 dcvr0; /* DPTC Comparator Value 0 */ 35*4882a593Smuzhiyun u32 dcvr1; /* DPTC Comparator Value 1 */ 36*4882a593Smuzhiyun u32 dcvr2; /* DPTC Comparator Value 2 */ 37*4882a593Smuzhiyun u32 dcvr3; /* DPTC Comparator Value 3 */ 38*4882a593Smuzhiyun u32 ltr0; /* Load Tracking 0 */ 39*4882a593Smuzhiyun u32 ltr1; /* Load Tracking 1 */ 40*4882a593Smuzhiyun u32 ltr2; /* Load Tracking 2 */ 41*4882a593Smuzhiyun u32 ltr3; /* Load Tracking 3 */ 42*4882a593Smuzhiyun u32 ltbr0; /* Load Tracking Buffer 0 */ 43*4882a593Smuzhiyun u32 ltbr1; /* Load Tracking Buffer 1 */ 44*4882a593Smuzhiyun u32 pcmr0; /* Power Management Control 0 */ 45*4882a593Smuzhiyun u32 pcmr1; /* Power Management Control 1 */ 46*4882a593Smuzhiyun u32 pcmr2; /* Power Management Control 2 */ 47*4882a593Smuzhiyun u32 mcr; /* Miscellaneous Control */ 48*4882a593Smuzhiyun u32 lpimr0; /* Low Power Interrupt Mask 0 */ 49*4882a593Smuzhiyun u32 lpimr1; /* Low Power Interrupt Mask 1 */ 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /* Enhanced SDRAM Controller (ESDRAMC) registers */ 53*4882a593Smuzhiyun struct esdramc_regs { 54*4882a593Smuzhiyun u32 ctl0; /* control 0 */ 55*4882a593Smuzhiyun u32 cfg0; /* configuration 0 */ 56*4882a593Smuzhiyun u32 ctl1; /* control 1 */ 57*4882a593Smuzhiyun u32 cfg1; /* configuration 1 */ 58*4882a593Smuzhiyun u32 misc; /* miscellaneous */ 59*4882a593Smuzhiyun u32 pad[3]; 60*4882a593Smuzhiyun u32 cdly1; /* Delay Line 1 configuration debug */ 61*4882a593Smuzhiyun u32 cdly2; /* delay line 2 configuration debug */ 62*4882a593Smuzhiyun u32 cdly3; /* delay line 3 configuration debug */ 63*4882a593Smuzhiyun u32 cdly4; /* delay line 4 configuration debug */ 64*4882a593Smuzhiyun u32 cdly5; /* delay line 5 configuration debug */ 65*4882a593Smuzhiyun u32 cdlyl; /* delay line cycle length debug */ 66*4882a593Smuzhiyun }; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun /* General Purpose Timer (GPT) registers */ 69*4882a593Smuzhiyun struct gpt_regs { 70*4882a593Smuzhiyun u32 ctrl; /* control */ 71*4882a593Smuzhiyun u32 pre; /* prescaler */ 72*4882a593Smuzhiyun u32 stat; /* status */ 73*4882a593Smuzhiyun u32 intr; /* interrupt */ 74*4882a593Smuzhiyun u32 cmp[3]; /* output compare 1-3 */ 75*4882a593Smuzhiyun u32 capt[2]; /* input capture 1-2 */ 76*4882a593Smuzhiyun u32 counter; /* counter */ 77*4882a593Smuzhiyun }; 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun /* Watchdog Timer (WDOG) registers */ 80*4882a593Smuzhiyun struct wdog_regs { 81*4882a593Smuzhiyun u16 wcr; /* Control */ 82*4882a593Smuzhiyun u16 wsr; /* Service */ 83*4882a593Smuzhiyun u16 wrsr; /* Reset Status */ 84*4882a593Smuzhiyun u16 wicr; /* Interrupt Control */ 85*4882a593Smuzhiyun u16 wmcr; /* Misc Control */ 86*4882a593Smuzhiyun }; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun /* IIM control registers */ 89*4882a593Smuzhiyun struct iim_regs { 90*4882a593Smuzhiyun u32 iim_stat; 91*4882a593Smuzhiyun u32 iim_statm; 92*4882a593Smuzhiyun u32 iim_err; 93*4882a593Smuzhiyun u32 iim_emask; 94*4882a593Smuzhiyun u32 iim_fctl; 95*4882a593Smuzhiyun u32 iim_ua; 96*4882a593Smuzhiyun u32 iim_la; 97*4882a593Smuzhiyun u32 iim_sdat; 98*4882a593Smuzhiyun u32 iim_prev; 99*4882a593Smuzhiyun u32 iim_srev; 100*4882a593Smuzhiyun u32 iim_prg_p; 101*4882a593Smuzhiyun u32 iim_scs0; 102*4882a593Smuzhiyun u32 iim_scs1; 103*4882a593Smuzhiyun u32 iim_scs2; 104*4882a593Smuzhiyun u32 iim_scs3; 105*4882a593Smuzhiyun u32 res1[0x1f1]; 106*4882a593Smuzhiyun struct fuse_bank { 107*4882a593Smuzhiyun u32 fuse_regs[0x20]; 108*4882a593Smuzhiyun u32 fuse_rsvd[0xe0]; 109*4882a593Smuzhiyun } bank[3]; 110*4882a593Smuzhiyun }; 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun struct fuse_bank0_regs { 113*4882a593Smuzhiyun u32 fuse0_7[8]; 114*4882a593Smuzhiyun u32 uid[8]; 115*4882a593Smuzhiyun u32 fuse16_25[0xa]; 116*4882a593Smuzhiyun u32 mac_addr[6]; 117*4882a593Smuzhiyun }; 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun struct fuse_bank1_regs { 120*4882a593Smuzhiyun u32 fuse0_21[0x16]; 121*4882a593Smuzhiyun u32 usr5; 122*4882a593Smuzhiyun u32 fuse23_29[7]; 123*4882a593Smuzhiyun u32 usr6[2]; 124*4882a593Smuzhiyun }; 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun /* Multi-Layer AHB Crossbar Switch (MAX) registers */ 127*4882a593Smuzhiyun struct max_regs { 128*4882a593Smuzhiyun u32 mpr0; 129*4882a593Smuzhiyun u32 pad00[3]; 130*4882a593Smuzhiyun u32 sgpcr0; 131*4882a593Smuzhiyun u32 pad01[59]; 132*4882a593Smuzhiyun u32 mpr1; 133*4882a593Smuzhiyun u32 pad02[3]; 134*4882a593Smuzhiyun u32 sgpcr1; 135*4882a593Smuzhiyun u32 pad03[59]; 136*4882a593Smuzhiyun u32 mpr2; 137*4882a593Smuzhiyun u32 pad04[3]; 138*4882a593Smuzhiyun u32 sgpcr2; 139*4882a593Smuzhiyun u32 pad05[59]; 140*4882a593Smuzhiyun u32 mpr3; 141*4882a593Smuzhiyun u32 pad06[3]; 142*4882a593Smuzhiyun u32 sgpcr3; 143*4882a593Smuzhiyun u32 pad07[59]; 144*4882a593Smuzhiyun u32 mpr4; 145*4882a593Smuzhiyun u32 pad08[3]; 146*4882a593Smuzhiyun u32 sgpcr4; 147*4882a593Smuzhiyun u32 pad09[251]; 148*4882a593Smuzhiyun u32 mgpcr0; 149*4882a593Smuzhiyun u32 pad10[63]; 150*4882a593Smuzhiyun u32 mgpcr1; 151*4882a593Smuzhiyun u32 pad11[63]; 152*4882a593Smuzhiyun u32 mgpcr2; 153*4882a593Smuzhiyun u32 pad12[63]; 154*4882a593Smuzhiyun u32 mgpcr3; 155*4882a593Smuzhiyun u32 pad13[63]; 156*4882a593Smuzhiyun u32 mgpcr4; 157*4882a593Smuzhiyun }; 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun /* AHB <-> IP-Bus Interface (AIPS) */ 160*4882a593Smuzhiyun struct aips_regs { 161*4882a593Smuzhiyun u32 mpr_0_7; 162*4882a593Smuzhiyun u32 mpr_8_15; 163*4882a593Smuzhiyun }; 164*4882a593Smuzhiyun /* LCD controller registers */ 165*4882a593Smuzhiyun struct lcdc_regs { 166*4882a593Smuzhiyun u32 lssar; /* Screen Start Address */ 167*4882a593Smuzhiyun u32 lsr; /* Size */ 168*4882a593Smuzhiyun u32 lvpwr; /* Virtual Page Width */ 169*4882a593Smuzhiyun u32 lcpr; /* Cursor Position */ 170*4882a593Smuzhiyun u32 lcwhb; /* Cursor Width Height and Blink */ 171*4882a593Smuzhiyun u32 lccmr; /* Color Cursor Mapping */ 172*4882a593Smuzhiyun u32 lpcr; /* Panel Configuration */ 173*4882a593Smuzhiyun u32 lhcr; /* Horizontal Configuration */ 174*4882a593Smuzhiyun u32 lvcr; /* Vertical Configuration */ 175*4882a593Smuzhiyun u32 lpor; /* Panning Offset */ 176*4882a593Smuzhiyun u32 lscr; /* Sharp Configuration */ 177*4882a593Smuzhiyun u32 lpccr; /* PWM Contrast Control */ 178*4882a593Smuzhiyun u32 ldcr; /* DMA Control */ 179*4882a593Smuzhiyun u32 lrmcr; /* Refresh Mode Control */ 180*4882a593Smuzhiyun u32 licr; /* Interrupt Configuration */ 181*4882a593Smuzhiyun u32 lier; /* Interrupt Enable */ 182*4882a593Smuzhiyun u32 lisr; /* Interrupt Status */ 183*4882a593Smuzhiyun u32 res0[3]; 184*4882a593Smuzhiyun u32 lgwsar; /* Graphic Window Start Address */ 185*4882a593Smuzhiyun u32 lgwsr; /* Graphic Window Size */ 186*4882a593Smuzhiyun u32 lgwvpwr; /* Graphic Window Virtual Page Width Regist */ 187*4882a593Smuzhiyun u32 lgwpor; /* Graphic Window Panning Offset */ 188*4882a593Smuzhiyun u32 lgwpr; /* Graphic Window Position */ 189*4882a593Smuzhiyun u32 lgwcr; /* Graphic Window Control */ 190*4882a593Smuzhiyun u32 lgwdcr; /* Graphic Window DMA Control */ 191*4882a593Smuzhiyun u32 res1[5]; 192*4882a593Smuzhiyun u32 lauscr; /* AUS Mode Control */ 193*4882a593Smuzhiyun u32 lausccr; /* AUS mode Cursor Control */ 194*4882a593Smuzhiyun u32 res2[31 + 64*7]; 195*4882a593Smuzhiyun u32 bglut; /* Background Lookup Table */ 196*4882a593Smuzhiyun u32 gwlut; /* Graphic Window Lookup Table */ 197*4882a593Smuzhiyun }; 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun /* Wireless External Interface Module Registers */ 200*4882a593Smuzhiyun struct weim_regs { 201*4882a593Smuzhiyun u32 cscr0u; /* Chip Select 0 Upper Register */ 202*4882a593Smuzhiyun u32 cscr0l; /* Chip Select 0 Lower Register */ 203*4882a593Smuzhiyun u32 cscr0a; /* Chip Select 0 Addition Register */ 204*4882a593Smuzhiyun u32 pad0; 205*4882a593Smuzhiyun u32 cscr1u; /* Chip Select 1 Upper Register */ 206*4882a593Smuzhiyun u32 cscr1l; /* Chip Select 1 Lower Register */ 207*4882a593Smuzhiyun u32 cscr1a; /* Chip Select 1 Addition Register */ 208*4882a593Smuzhiyun u32 pad1; 209*4882a593Smuzhiyun u32 cscr2u; /* Chip Select 2 Upper Register */ 210*4882a593Smuzhiyun u32 cscr2l; /* Chip Select 2 Lower Register */ 211*4882a593Smuzhiyun u32 cscr2a; /* Chip Select 2 Addition Register */ 212*4882a593Smuzhiyun u32 pad2; 213*4882a593Smuzhiyun u32 cscr3u; /* Chip Select 3 Upper Register */ 214*4882a593Smuzhiyun u32 cscr3l; /* Chip Select 3 Lower Register */ 215*4882a593Smuzhiyun u32 cscr3a; /* Chip Select 3 Addition Register */ 216*4882a593Smuzhiyun u32 pad3; 217*4882a593Smuzhiyun u32 cscr4u; /* Chip Select 4 Upper Register */ 218*4882a593Smuzhiyun u32 cscr4l; /* Chip Select 4 Lower Register */ 219*4882a593Smuzhiyun u32 cscr4a; /* Chip Select 4 Addition Register */ 220*4882a593Smuzhiyun u32 pad4; 221*4882a593Smuzhiyun u32 cscr5u; /* Chip Select 5 Upper Register */ 222*4882a593Smuzhiyun u32 cscr5l; /* Chip Select 5 Lower Register */ 223*4882a593Smuzhiyun u32 cscr5a; /* Chip Select 5 Addition Register */ 224*4882a593Smuzhiyun u32 pad5; 225*4882a593Smuzhiyun u32 wcr; /* WEIM Configuration Register */ 226*4882a593Smuzhiyun }; 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun /* Multi-Master Memory Interface */ 229*4882a593Smuzhiyun struct m3if_regs { 230*4882a593Smuzhiyun u32 ctl; /* Control Register */ 231*4882a593Smuzhiyun u32 wcfg0; /* Watermark Configuration Register 0 */ 232*4882a593Smuzhiyun u32 wcfg1; /* Watermark Configuration Register1 */ 233*4882a593Smuzhiyun u32 wcfg2; /* Watermark Configuration Register2 */ 234*4882a593Smuzhiyun u32 wcfg3; /* Watermark Configuration Register 3 */ 235*4882a593Smuzhiyun u32 wcfg4; /* Watermark Configuration Register 4 */ 236*4882a593Smuzhiyun u32 wcfg5; /* Watermark Configuration Register 5 */ 237*4882a593Smuzhiyun u32 wcfg6; /* Watermark Configuration Register 6 */ 238*4882a593Smuzhiyun u32 wcfg7; /* Watermark Configuration Register 7 */ 239*4882a593Smuzhiyun u32 wcsr; /* Watermark Control and Status Register */ 240*4882a593Smuzhiyun u32 scfg0; /* Snooping Configuration Register 0 */ 241*4882a593Smuzhiyun u32 scfg1; /* Snooping Configuration Register 1 */ 242*4882a593Smuzhiyun u32 scfg2; /* Snooping Configuration Register 2 */ 243*4882a593Smuzhiyun u32 ssr0; /* Snooping Status Register 0 */ 244*4882a593Smuzhiyun u32 ssr1; /* Snooping Status Register 1 */ 245*4882a593Smuzhiyun u32 res0; 246*4882a593Smuzhiyun u32 mlwe0; /* Master Lock WEIM CS0 Register */ 247*4882a593Smuzhiyun u32 mlwe1; /* Master Lock WEIM CS1 Register */ 248*4882a593Smuzhiyun u32 mlwe2; /* Master Lock WEIM CS2 Register */ 249*4882a593Smuzhiyun u32 mlwe3; /* Master Lock WEIM CS3 Register */ 250*4882a593Smuzhiyun u32 mlwe4; /* Master Lock WEIM CS4 Register */ 251*4882a593Smuzhiyun u32 mlwe5; /* Master Lock WEIM CS5 Register */ 252*4882a593Smuzhiyun }; 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun /* Pulse width modulation */ 255*4882a593Smuzhiyun struct pwm_regs { 256*4882a593Smuzhiyun u32 cr; /* Control Register */ 257*4882a593Smuzhiyun u32 sr; /* Status Register */ 258*4882a593Smuzhiyun u32 ir; /* Interrupt Register */ 259*4882a593Smuzhiyun u32 sar; /* Sample Register */ 260*4882a593Smuzhiyun u32 pr; /* Period Register */ 261*4882a593Smuzhiyun u32 cnr; /* Counter Register */ 262*4882a593Smuzhiyun }; 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun /* Enhanced Periodic Interrupt Timer */ 265*4882a593Smuzhiyun struct epit_regs { 266*4882a593Smuzhiyun u32 cr; /* Control register */ 267*4882a593Smuzhiyun u32 sr; /* Status register */ 268*4882a593Smuzhiyun u32 lr; /* Load register */ 269*4882a593Smuzhiyun u32 cmpr; /* Compare register */ 270*4882a593Smuzhiyun u32 cnr; /* Counter register */ 271*4882a593Smuzhiyun }; 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun /* CSPI registers */ 274*4882a593Smuzhiyun struct cspi_regs { 275*4882a593Smuzhiyun u32 rxdata; 276*4882a593Smuzhiyun u32 txdata; 277*4882a593Smuzhiyun u32 ctrl; 278*4882a593Smuzhiyun u32 intr; 279*4882a593Smuzhiyun u32 dma; 280*4882a593Smuzhiyun u32 stat; 281*4882a593Smuzhiyun u32 period; 282*4882a593Smuzhiyun u32 test; 283*4882a593Smuzhiyun }; 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun #endif 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun #define ARCH_MXC 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun /* AIPS 1 */ 290*4882a593Smuzhiyun #define IMX_AIPS1_BASE (0x43F00000) 291*4882a593Smuzhiyun #define IMX_MAX_BASE (0x43F04000) 292*4882a593Smuzhiyun #define IMX_CLKCTL_BASE (0x43F08000) 293*4882a593Smuzhiyun #define IMX_ETB_SLOT4_BASE (0x43F0C000) 294*4882a593Smuzhiyun #define IMX_ETB_SLOT5_BASE (0x43F10000) 295*4882a593Smuzhiyun #define IMX_ECT_CTIO_BASE (0x43F18000) 296*4882a593Smuzhiyun #define I2C1_BASE_ADDR (0x43F80000) 297*4882a593Smuzhiyun #define I2C3_BASE_ADDR (0x43F84000) 298*4882a593Smuzhiyun #define IMX_CAN1_BASE (0x43F88000) 299*4882a593Smuzhiyun #define IMX_CAN2_BASE (0x43F8C000) 300*4882a593Smuzhiyun #define UART1_BASE (0x43F90000) 301*4882a593Smuzhiyun #define UART2_BASE (0x43F94000) 302*4882a593Smuzhiyun #define I2C2_BASE_ADDR (0x43F98000) 303*4882a593Smuzhiyun #define IMX_OWIRE_BASE (0x43F9C000) 304*4882a593Smuzhiyun #define IMX_CSPI1_BASE (0x43FA4000) 305*4882a593Smuzhiyun #define IMX_KPP_BASE (0x43FA8000) 306*4882a593Smuzhiyun #define IMX_IOPADMUX_BASE (0x43FAC000) 307*4882a593Smuzhiyun #define IOMUXC_BASE_ADDR IMX_IOPADMUX_BASE 308*4882a593Smuzhiyun #define IMX_IOPADCTL_BASE (0x43FAC22C) 309*4882a593Smuzhiyun #define IMX_IOPADGRPCTL_BASE (0x43FAC418) 310*4882a593Smuzhiyun #define IMX_IOPADINPUTSEL_BASE (0x43FAC460) 311*4882a593Smuzhiyun #define IMX_AUDMUX_BASE (0x43FB0000) 312*4882a593Smuzhiyun #define IMX_ECT_IP1_BASE (0x43FB8000) 313*4882a593Smuzhiyun #define IMX_ECT_IP2_BASE (0x43FBC000) 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun /* SPBA */ 316*4882a593Smuzhiyun #define IMX_SPBA_BASE (0x50000000) 317*4882a593Smuzhiyun #define IMX_CSPI3_BASE (0x50004000) 318*4882a593Smuzhiyun #define UART4_BASE (0x50008000) 319*4882a593Smuzhiyun #define UART3_BASE (0x5000C000) 320*4882a593Smuzhiyun #define IMX_CSPI2_BASE (0x50010000) 321*4882a593Smuzhiyun #define IMX_SSI2_BASE (0x50014000) 322*4882a593Smuzhiyun #define IMX_ESAI_BASE (0x50018000) 323*4882a593Smuzhiyun #define IMX_ATA_DMA_BASE (0x50020000) 324*4882a593Smuzhiyun #define IMX_SIM1_BASE (0x50024000) 325*4882a593Smuzhiyun #define IMX_SIM2_BASE (0x50028000) 326*4882a593Smuzhiyun #define UART5_BASE (0x5002C000) 327*4882a593Smuzhiyun #define IMX_TSC_BASE (0x50030000) 328*4882a593Smuzhiyun #define IMX_SSI1_BASE (0x50034000) 329*4882a593Smuzhiyun #define IMX_FEC_BASE (0x50038000) 330*4882a593Smuzhiyun #define IMX_SPBA_CTRL_BASE (0x5003C000) 331*4882a593Smuzhiyun 332*4882a593Smuzhiyun /* AIPS 2 */ 333*4882a593Smuzhiyun #define IMX_AIPS2_BASE (0x53F00000) 334*4882a593Smuzhiyun #define IMX_CCM_BASE (0x53F80000) 335*4882a593Smuzhiyun #define IMX_GPT4_BASE (0x53F84000) 336*4882a593Smuzhiyun #define IMX_GPT3_BASE (0x53F88000) 337*4882a593Smuzhiyun #define IMX_GPT2_BASE (0x53F8C000) 338*4882a593Smuzhiyun #define IMX_GPT1_BASE (0x53F90000) 339*4882a593Smuzhiyun #define IMX_EPIT1_BASE (0x53F94000) 340*4882a593Smuzhiyun #define IMX_EPIT2_BASE (0x53F98000) 341*4882a593Smuzhiyun #define IMX_GPIO4_BASE (0x53F9C000) 342*4882a593Smuzhiyun #define IMX_PWM2_BASE (0x53FA0000) 343*4882a593Smuzhiyun #define IMX_GPIO3_BASE (0x53FA4000) 344*4882a593Smuzhiyun #define IMX_PWM3_BASE (0x53FA8000) 345*4882a593Smuzhiyun #define IMX_SCC_BASE (0x53FAC000) 346*4882a593Smuzhiyun #define IMX_SCM_BASE (0x53FAE000) 347*4882a593Smuzhiyun #define IMX_SMN_BASE (0x53FAF000) 348*4882a593Smuzhiyun #define IMX_RNGD_BASE (0x53FB0000) 349*4882a593Smuzhiyun #define IMX_MMC_SDHC1_BASE (0x53FB4000) 350*4882a593Smuzhiyun #define IMX_MMC_SDHC2_BASE (0x53FB8000) 351*4882a593Smuzhiyun #define IMX_LCDC_BASE (0x53FBC000) 352*4882a593Smuzhiyun #define IMX_SLCDC_BASE (0x53FC0000) 353*4882a593Smuzhiyun #define IMX_PWM4_BASE (0x53FC8000) 354*4882a593Smuzhiyun #define IMX_GPIO1_BASE (0x53FCC000) 355*4882a593Smuzhiyun #define IMX_GPIO2_BASE (0x53FD0000) 356*4882a593Smuzhiyun #define IMX_SDMA_BASE (0x53FD4000) 357*4882a593Smuzhiyun #define IMX_WDT_BASE (0x53FDC000) 358*4882a593Smuzhiyun #define IMX_PWM1_BASE (0x53FE0000) 359*4882a593Smuzhiyun #define IMX_RTIC_BASE (0x53FEC000) 360*4882a593Smuzhiyun #define IMX_IIM_BASE (0x53FF0000) 361*4882a593Smuzhiyun #define IIM_BASE_ADDR IMX_IIM_BASE 362*4882a593Smuzhiyun #define IMX_USB_BASE (0x53FF4000) 363*4882a593Smuzhiyun #define IMX_USB_PORT_OFFSET 0x200 364*4882a593Smuzhiyun #define IMX_CSI_BASE (0x53FF8000) 365*4882a593Smuzhiyun #define IMX_DRYICE_BASE (0x53FFC000) 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun #define IMX_ARM926_ROMPATCH (0x60000000) 368*4882a593Smuzhiyun #define IMX_ARM926_ASIC (0x68000000) 369*4882a593Smuzhiyun 370*4882a593Smuzhiyun /* 128K Internal Static RAM */ 371*4882a593Smuzhiyun #define IMX_RAM_BASE (0x78000000) 372*4882a593Smuzhiyun #define IMX_RAM_SIZE (128 * 1024) 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun /* SDRAM BANKS */ 375*4882a593Smuzhiyun #define IMX_SDRAM_BANK0_BASE (0x80000000) 376*4882a593Smuzhiyun #define IMX_SDRAM_BANK1_BASE (0x90000000) 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun #define IMX_WEIM_CS0 (0xA0000000) 379*4882a593Smuzhiyun #define IMX_WEIM_CS1 (0xA8000000) 380*4882a593Smuzhiyun #define IMX_WEIM_CS2 (0xB0000000) 381*4882a593Smuzhiyun #define IMX_WEIM_CS3 (0xB2000000) 382*4882a593Smuzhiyun #define IMX_WEIM_CS4 (0xB4000000) 383*4882a593Smuzhiyun #define IMX_ESDRAMC_BASE (0xB8001000) 384*4882a593Smuzhiyun #define IMX_WEIM_CTRL_BASE (0xB8002000) 385*4882a593Smuzhiyun #define IMX_M3IF_CTRL_BASE (0xB8003000) 386*4882a593Smuzhiyun #define IMX_EMI_CTRL_BASE (0xB8004000) 387*4882a593Smuzhiyun 388*4882a593Smuzhiyun /* NAND Flash Controller */ 389*4882a593Smuzhiyun #define IMX_NFC_BASE (0xBB000000) 390*4882a593Smuzhiyun #define NFC_BASE_ADDR IMX_NFC_BASE 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun /* CCM bitfields */ 393*4882a593Smuzhiyun #define CCM_PLL_MFI_SHIFT 10 394*4882a593Smuzhiyun #define CCM_PLL_MFI_MASK 0xf 395*4882a593Smuzhiyun #define CCM_PLL_MFN_SHIFT 0 396*4882a593Smuzhiyun #define CCM_PLL_MFN_MASK 0x3ff 397*4882a593Smuzhiyun #define CCM_PLL_MFD_SHIFT 16 398*4882a593Smuzhiyun #define CCM_PLL_MFD_MASK 0x3ff 399*4882a593Smuzhiyun #define CCM_PLL_PD_SHIFT 26 400*4882a593Smuzhiyun #define CCM_PLL_PD_MASK 0xf 401*4882a593Smuzhiyun #define CCM_CCTL_ARM_DIV_SHIFT 30 402*4882a593Smuzhiyun #define CCM_CCTL_ARM_DIV_MASK 3 403*4882a593Smuzhiyun #define CCM_CCTL_AHB_DIV_SHIFT 28 404*4882a593Smuzhiyun #define CCM_CCTL_AHB_DIV_MASK 3 405*4882a593Smuzhiyun #define CCM_CCTL_ARM_SRC (1 << 14) 406*4882a593Smuzhiyun #define CCM_CGR1_GPT1 (1 << 19) 407*4882a593Smuzhiyun #define CCM_PERCLK_REG(clk) (clk / 4) 408*4882a593Smuzhiyun #define CCM_PERCLK_SHIFT(clk) (8 * (clk % 4)) 409*4882a593Smuzhiyun #define CCM_PERCLK_MASK 0x3f 410*4882a593Smuzhiyun #define CCM_RCSR_NF_16BIT_SEL (1 << 14) 411*4882a593Smuzhiyun #define CCM_RCSR_NF_PS(v) ((v >> 26) & 3) 412*4882a593Smuzhiyun #define CCM_CRDR_BT_UART_SRC_SHIFT 29 413*4882a593Smuzhiyun #define CCM_CRDR_BT_UART_SRC_MASK 7 414*4882a593Smuzhiyun 415*4882a593Smuzhiyun /* ESDRAM Controller register bitfields */ 416*4882a593Smuzhiyun #define ESDCTL_PRCT(x) (((x) & 0x3f) << 0) 417*4882a593Smuzhiyun #define ESDCTL_BL (1 << 7) 418*4882a593Smuzhiyun #define ESDCTL_FP (1 << 8) 419*4882a593Smuzhiyun #define ESDCTL_PWDT(x) (((x) & 3) << 10) 420*4882a593Smuzhiyun #define ESDCTL_SREFR(x) (((x) & 7) << 13) 421*4882a593Smuzhiyun #define ESDCTL_DSIZ_16_UPPER (0 << 16) 422*4882a593Smuzhiyun #define ESDCTL_DSIZ_16_LOWER (1 << 16) 423*4882a593Smuzhiyun #define ESDCTL_DSIZ_32 (2 << 16) 424*4882a593Smuzhiyun #define ESDCTL_COL8 (0 << 20) 425*4882a593Smuzhiyun #define ESDCTL_COL9 (1 << 20) 426*4882a593Smuzhiyun #define ESDCTL_COL10 (2 << 20) 427*4882a593Smuzhiyun #define ESDCTL_ROW11 (0 << 24) 428*4882a593Smuzhiyun #define ESDCTL_ROW12 (1 << 24) 429*4882a593Smuzhiyun #define ESDCTL_ROW13 (2 << 24) 430*4882a593Smuzhiyun #define ESDCTL_ROW14 (3 << 24) 431*4882a593Smuzhiyun #define ESDCTL_ROW15 (4 << 24) 432*4882a593Smuzhiyun #define ESDCTL_SP (1 << 27) 433*4882a593Smuzhiyun #define ESDCTL_SMODE_NORMAL (0 << 28) 434*4882a593Smuzhiyun #define ESDCTL_SMODE_PRECHARGE (1 << 28) 435*4882a593Smuzhiyun #define ESDCTL_SMODE_AUTO_REF (2 << 28) 436*4882a593Smuzhiyun #define ESDCTL_SMODE_LOAD_MODE (3 << 28) 437*4882a593Smuzhiyun #define ESDCTL_SMODE_MAN_REF (4 << 28) 438*4882a593Smuzhiyun #define ESDCTL_SDE (1 << 31) 439*4882a593Smuzhiyun 440*4882a593Smuzhiyun #define ESDCFG_TRC(x) (((x) & 0xf) << 0) 441*4882a593Smuzhiyun #define ESDCFG_TRCD(x) (((x) & 0x7) << 4) 442*4882a593Smuzhiyun #define ESDCFG_TCAS(x) (((x) & 0x3) << 8) 443*4882a593Smuzhiyun #define ESDCFG_TRRD(x) (((x) & 0x3) << 10) 444*4882a593Smuzhiyun #define ESDCFG_TRAS(x) (((x) & 0x7) << 12) 445*4882a593Smuzhiyun #define ESDCFG_TWR (1 << 15) 446*4882a593Smuzhiyun #define ESDCFG_TMRD(x) (((x) & 0x3) << 16) 447*4882a593Smuzhiyun #define ESDCFG_TRP(x) (((x) & 0x3) << 18) 448*4882a593Smuzhiyun #define ESDCFG_TWTR (1 << 20) 449*4882a593Smuzhiyun #define ESDCFG_TXP(x) (((x) & 0x3) << 21) 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun #define ESDMISC_RST (1 << 1) 452*4882a593Smuzhiyun #define ESDMISC_MDDREN (1 << 2) 453*4882a593Smuzhiyun #define ESDMISC_MDDR_DL_RST (1 << 3) 454*4882a593Smuzhiyun #define ESDMISC_MDDR_MDIS (1 << 4) 455*4882a593Smuzhiyun #define ESDMISC_LHD (1 << 5) 456*4882a593Smuzhiyun #define ESDMISC_MA10_SHARE (1 << 6) 457*4882a593Smuzhiyun #define ESDMISC_SDRAM_RDY (1 << 31) 458*4882a593Smuzhiyun 459*4882a593Smuzhiyun /* GPT bits */ 460*4882a593Smuzhiyun #define GPT_CTRL_SWR (1 << 15) /* Software reset */ 461*4882a593Smuzhiyun #define GPT_CTRL_FRR (1 << 9) /* Freerun / restart */ 462*4882a593Smuzhiyun #define GPT_CTRL_CLKSOURCE_32 (4 << 6) /* Clock source */ 463*4882a593Smuzhiyun #define GPT_CTRL_TEN 1 /* Timer enable */ 464*4882a593Smuzhiyun 465*4882a593Smuzhiyun /* WDOG enable */ 466*4882a593Smuzhiyun #define WCR_WDE 0x04 467*4882a593Smuzhiyun #define WSR_UNLOCK1 0x5555 468*4882a593Smuzhiyun #define WSR_UNLOCK2 0xAAAA 469*4882a593Smuzhiyun 470*4882a593Smuzhiyun /* MAX bits */ 471*4882a593Smuzhiyun #define MAX_MGPCR_AULB(x) (((x) & 0x7) << 0) 472*4882a593Smuzhiyun 473*4882a593Smuzhiyun /* M3IF bits */ 474*4882a593Smuzhiyun #define M3IF_CTL_MRRP(x) (((x) & 0xff) << 0) 475*4882a593Smuzhiyun 476*4882a593Smuzhiyun /* WEIM bits */ 477*4882a593Smuzhiyun /* 13 fields of the upper CS control register */ 478*4882a593Smuzhiyun #define WEIM_CSCR_U(sp, wp, bcd, bcs, psz, pme, sync, dol, \ 479*4882a593Smuzhiyun cnc, wsc, ew, wws, edc) \ 480*4882a593Smuzhiyun ((sp) << 31 | (wp) << 30 | (bcd) << 28 | (bcs) << 24 | \ 481*4882a593Smuzhiyun (psz) << 22 | (pme) << 21 | (sync) << 20 | (dol) << 16 | \ 482*4882a593Smuzhiyun (cnc) << 14 | (wsc) << 8 | (ew) << 7 | (wws) << 4 | (edc) << 0) 483*4882a593Smuzhiyun /* 12 fields of the lower CS control register */ 484*4882a593Smuzhiyun #define WEIM_CSCR_L(oea, oen, ebwa, ebwn, \ 485*4882a593Smuzhiyun csa, ebc, dsz, csn, psr, cre, wrap, csen) \ 486*4882a593Smuzhiyun ((oea) << 28 | (oen) << 24 | (ebwa) << 20 | (ebwn) << 16 |\ 487*4882a593Smuzhiyun (csa) << 12 | (ebc) << 11 | (dsz) << 8 | (csn) << 4 |\ 488*4882a593Smuzhiyun (psr) << 3 | (cre) << 2 | (wrap) << 1 | (csen) << 0) 489*4882a593Smuzhiyun /* 14 fields of the additional CS control register */ 490*4882a593Smuzhiyun #define WEIM_CSCR_A(ebra, ebrn, rwa, rwn, mum, lah, lbn, lba, dww, dct, \ 491*4882a593Smuzhiyun wwu, age, cnc2, fce) \ 492*4882a593Smuzhiyun ((ebra) << 28 | (ebrn) << 24 | (rwa) << 20 | (rwn) << 16 |\ 493*4882a593Smuzhiyun (mum) << 15 | (lah) << 13 | (lbn) << 10 | (lba) << 8 |\ 494*4882a593Smuzhiyun (dww) << 6 | (dct) << 4 | (wwu) << 3 |\ 495*4882a593Smuzhiyun (age) << 2 | (cnc2) << 1 | (fce) << 0) 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun /* Names used in GPIO driver */ 498*4882a593Smuzhiyun #define GPIO1_BASE_ADDR IMX_GPIO1_BASE 499*4882a593Smuzhiyun #define GPIO2_BASE_ADDR IMX_GPIO2_BASE 500*4882a593Smuzhiyun #define GPIO3_BASE_ADDR IMX_GPIO3_BASE 501*4882a593Smuzhiyun #define GPIO4_BASE_ADDR IMX_GPIO4_BASE 502*4882a593Smuzhiyun 503*4882a593Smuzhiyun /* 504*4882a593Smuzhiyun * CSPI register definitions 505*4882a593Smuzhiyun */ 506*4882a593Smuzhiyun #define MXC_CSPI 507*4882a593Smuzhiyun #define MXC_CSPICTRL_EN (1 << 0) 508*4882a593Smuzhiyun #define MXC_CSPICTRL_MODE (1 << 1) 509*4882a593Smuzhiyun #define MXC_CSPICTRL_XCH (1 << 2) 510*4882a593Smuzhiyun #define MXC_CSPICTRL_SMC (1 << 3) 511*4882a593Smuzhiyun #define MXC_CSPICTRL_POL (1 << 4) 512*4882a593Smuzhiyun #define MXC_CSPICTRL_PHA (1 << 5) 513*4882a593Smuzhiyun #define MXC_CSPICTRL_SSCTL (1 << 6) 514*4882a593Smuzhiyun #define MXC_CSPICTRL_SSPOL (1 << 7) 515*4882a593Smuzhiyun #define MXC_CSPICTRL_CHIPSELECT(x) (((x) & 0x3) << 12) 516*4882a593Smuzhiyun #define MXC_CSPICTRL_BITCOUNT(x) (((x) & 0xfff) << 20) 517*4882a593Smuzhiyun #define MXC_CSPICTRL_DATARATE(x) (((x) & 0x7) << 16) 518*4882a593Smuzhiyun #define MXC_CSPICTRL_TC (1 << 7) 519*4882a593Smuzhiyun #define MXC_CSPICTRL_RXOVF (1 << 6) 520*4882a593Smuzhiyun #define MXC_CSPICTRL_MAXBITS 0xfff 521*4882a593Smuzhiyun #define MXC_CSPIPERIOD_32KHZ (1 << 15) 522*4882a593Smuzhiyun #define MAX_SPI_BYTES 4 523*4882a593Smuzhiyun 524*4882a593Smuzhiyun #define MXC_SPI_BASE_ADDRESSES \ 525*4882a593Smuzhiyun IMX_CSPI1_BASE, \ 526*4882a593Smuzhiyun IMX_CSPI2_BASE, \ 527*4882a593Smuzhiyun IMX_CSPI3_BASE 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun #endif /* _IMX_REGS_H */ 530