1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * MCF5274/5 Internal Memory Map 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (c) 2005 Arthur Shipkowski <art@videon-central.com> 5*4882a593Smuzhiyun * Based on work Copyright (c) 2003 Josef Baumgartner 6*4882a593Smuzhiyun * <josef.baumgartner@telex.de> 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef __IMMAP_5275__ 12*4882a593Smuzhiyun #define __IMMAP_5275__ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define MMAP_SCM (CONFIG_SYS_MBAR + 0x00000000) 15*4882a593Smuzhiyun #define MMAP_SDRAM (CONFIG_SYS_MBAR + 0x00000040) 16*4882a593Smuzhiyun #define MMAP_FBCS (CONFIG_SYS_MBAR + 0x00000080) 17*4882a593Smuzhiyun #define MMAP_DMA0 (CONFIG_SYS_MBAR + 0x00000100) 18*4882a593Smuzhiyun #define MMAP_DMA1 (CONFIG_SYS_MBAR + 0x00000110) 19*4882a593Smuzhiyun #define MMAP_DMA2 (CONFIG_SYS_MBAR + 0x00000120) 20*4882a593Smuzhiyun #define MMAP_DMA3 (CONFIG_SYS_MBAR + 0x00000130) 21*4882a593Smuzhiyun #define MMAP_UART0 (CONFIG_SYS_MBAR + 0x00000200) 22*4882a593Smuzhiyun #define MMAP_UART1 (CONFIG_SYS_MBAR + 0x00000240) 23*4882a593Smuzhiyun #define MMAP_UART2 (CONFIG_SYS_MBAR + 0x00000280) 24*4882a593Smuzhiyun #define MMAP_I2C (CONFIG_SYS_MBAR + 0x00000300) 25*4882a593Smuzhiyun #define MMAP_QSPI (CONFIG_SYS_MBAR + 0x00000340) 26*4882a593Smuzhiyun #define MMAP_DTMR0 (CONFIG_SYS_MBAR + 0x00000400) 27*4882a593Smuzhiyun #define MMAP_DTMR1 (CONFIG_SYS_MBAR + 0x00000440) 28*4882a593Smuzhiyun #define MMAP_DTMR2 (CONFIG_SYS_MBAR + 0x00000480) 29*4882a593Smuzhiyun #define MMAP_DTMR3 (CONFIG_SYS_MBAR + 0x000004C0) 30*4882a593Smuzhiyun #define MMAP_INTC0 (CONFIG_SYS_MBAR + 0x00000C00) 31*4882a593Smuzhiyun #define MMAP_INTC1 (CONFIG_SYS_MBAR + 0x00000D00) 32*4882a593Smuzhiyun #define MMAP_INTCACK (CONFIG_SYS_MBAR + 0x00000F00) 33*4882a593Smuzhiyun #define MMAP_FEC0 (CONFIG_SYS_MBAR + 0x00001000) 34*4882a593Smuzhiyun #define MMAP_FEC0FIFO (CONFIG_SYS_MBAR + 0x00001400) 35*4882a593Smuzhiyun #define MMAP_FEC1 (CONFIG_SYS_MBAR + 0x00001800) 36*4882a593Smuzhiyun #define MMAP_FEC1FIFO (CONFIG_SYS_MBAR + 0x00001C00) 37*4882a593Smuzhiyun #define MMAP_GPIO (CONFIG_SYS_MBAR + 0x00100000) 38*4882a593Smuzhiyun #define MMAP_RCM (CONFIG_SYS_MBAR + 0x00110000) 39*4882a593Smuzhiyun #define MMAP_CCM (CONFIG_SYS_MBAR + 0x00110004) 40*4882a593Smuzhiyun #define MMAP_PLL (CONFIG_SYS_MBAR + 0x00120000) 41*4882a593Smuzhiyun #define MMAP_EPORT (CONFIG_SYS_MBAR + 0x00130000) 42*4882a593Smuzhiyun #define MMAP_WDOG (CONFIG_SYS_MBAR + 0x00140000) 43*4882a593Smuzhiyun #define MMAP_PIT0 (CONFIG_SYS_MBAR + 0x00150000) 44*4882a593Smuzhiyun #define MMAP_PIT1 (CONFIG_SYS_MBAR + 0x00160000) 45*4882a593Smuzhiyun #define MMAP_PIT2 (CONFIG_SYS_MBAR + 0x00170000) 46*4882a593Smuzhiyun #define MMAP_PIT3 (CONFIG_SYS_MBAR + 0x00180000) 47*4882a593Smuzhiyun #define MMAP_MDHA (CONFIG_SYS_MBAR + 0x00190000) 48*4882a593Smuzhiyun #define MMAP_RNG (CONFIG_SYS_MBAR + 0x001A0000) 49*4882a593Smuzhiyun #define MMAP_SKHA (CONFIG_SYS_MBAR + 0x001B0000) 50*4882a593Smuzhiyun #define MMAP_USB (CONFIG_SYS_MBAR + 0x001C0000) 51*4882a593Smuzhiyun #define MMAP_PWM0 (CONFIG_SYS_MBAR + 0x001D0000) 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #include <asm/coldfire/eport.h> 54*4882a593Smuzhiyun #include <asm/coldfire/flexbus.h> 55*4882a593Smuzhiyun #include <asm/coldfire/intctrl.h> 56*4882a593Smuzhiyun #include <asm/coldfire/mdha.h> 57*4882a593Smuzhiyun #include <asm/coldfire/pwm.h> 58*4882a593Smuzhiyun #include <asm/coldfire/qspi.h> 59*4882a593Smuzhiyun #include <asm/coldfire/rng.h> 60*4882a593Smuzhiyun #include <asm/coldfire/skha.h> 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun /* System configuration registers 63*4882a593Smuzhiyun */ 64*4882a593Smuzhiyun typedef struct sys_ctrl { 65*4882a593Smuzhiyun u32 ipsbar; 66*4882a593Smuzhiyun u32 res1; 67*4882a593Smuzhiyun u32 rambar; 68*4882a593Smuzhiyun u32 res2; 69*4882a593Smuzhiyun u8 crsr; 70*4882a593Smuzhiyun u8 cwcr; 71*4882a593Smuzhiyun u8 lpicr; 72*4882a593Smuzhiyun u8 cwsr; 73*4882a593Smuzhiyun u8 res3[8]; 74*4882a593Smuzhiyun u32 mpark; 75*4882a593Smuzhiyun u8 mpr; 76*4882a593Smuzhiyun u8 res4[3]; 77*4882a593Smuzhiyun u8 pacr0; 78*4882a593Smuzhiyun u8 pacr1; 79*4882a593Smuzhiyun u8 pacr2; 80*4882a593Smuzhiyun u8 pacr3; 81*4882a593Smuzhiyun u8 pacr4; 82*4882a593Smuzhiyun u8 res5; 83*4882a593Smuzhiyun u8 pacr5; 84*4882a593Smuzhiyun u8 pacr6; 85*4882a593Smuzhiyun u8 pacr7; 86*4882a593Smuzhiyun u8 res6; 87*4882a593Smuzhiyun u8 pacr8; 88*4882a593Smuzhiyun u8 res7; 89*4882a593Smuzhiyun u8 gpacr; 90*4882a593Smuzhiyun u8 res8[3]; 91*4882a593Smuzhiyun } sysctrl_t; 92*4882a593Smuzhiyun /* SDRAM controller registers, offset: 0x040 93*4882a593Smuzhiyun */ 94*4882a593Smuzhiyun typedef struct sdram_ctrl { 95*4882a593Smuzhiyun u32 sdmr; 96*4882a593Smuzhiyun u32 sdcr; 97*4882a593Smuzhiyun u32 sdcfg1; 98*4882a593Smuzhiyun u32 sdcfg2; 99*4882a593Smuzhiyun u32 sdbar0; 100*4882a593Smuzhiyun u32 sdbmr0; 101*4882a593Smuzhiyun u32 sdbar1; 102*4882a593Smuzhiyun u32 sdbmr1; 103*4882a593Smuzhiyun } sdramctrl_t; 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun /* DMA module registers, offset 0x100 106*4882a593Smuzhiyun */ 107*4882a593Smuzhiyun typedef struct dma_ctrl { 108*4882a593Smuzhiyun u32 sar; 109*4882a593Smuzhiyun u32 dar; 110*4882a593Smuzhiyun u32 dsrbcr; 111*4882a593Smuzhiyun u32 dcr; 112*4882a593Smuzhiyun } dma_t; 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun /* GPIO port registers 115*4882a593Smuzhiyun */ 116*4882a593Smuzhiyun typedef struct gpio_ctrl { 117*4882a593Smuzhiyun /* Port Output Data Registers */ 118*4882a593Smuzhiyun u8 podr_res1[4]; 119*4882a593Smuzhiyun u8 podr_busctl; 120*4882a593Smuzhiyun u8 podr_addr; 121*4882a593Smuzhiyun u8 podr_res2[2]; 122*4882a593Smuzhiyun u8 podr_cs; 123*4882a593Smuzhiyun u8 podr_res3; 124*4882a593Smuzhiyun u8 podr_fec0h; 125*4882a593Smuzhiyun u8 podr_fec0l; 126*4882a593Smuzhiyun u8 podr_feci2c; 127*4882a593Smuzhiyun u8 podr_qspi; 128*4882a593Smuzhiyun u8 podr_sdram; 129*4882a593Smuzhiyun u8 podr_timerh; 130*4882a593Smuzhiyun u8 podr_timerl; 131*4882a593Smuzhiyun u8 podr_uartl; 132*4882a593Smuzhiyun u8 podr_fec1h; 133*4882a593Smuzhiyun u8 podr_fec1l; 134*4882a593Smuzhiyun u8 podr_bs; 135*4882a593Smuzhiyun u8 podr_res4; 136*4882a593Smuzhiyun u8 podr_usbh; 137*4882a593Smuzhiyun u8 podr_usbl; 138*4882a593Smuzhiyun u8 podr_uarth; 139*4882a593Smuzhiyun u8 podr_res5[3]; 140*4882a593Smuzhiyun /* Port Data Direction Registers */ 141*4882a593Smuzhiyun u8 pddr_res1[4]; 142*4882a593Smuzhiyun u8 pddr_busctl; 143*4882a593Smuzhiyun u8 pddr_addr; 144*4882a593Smuzhiyun u8 pddr_res2[2]; 145*4882a593Smuzhiyun u8 pddr_cs; 146*4882a593Smuzhiyun u8 pddr_res3; 147*4882a593Smuzhiyun u8 pddr_fec0h; 148*4882a593Smuzhiyun u8 pddr_fec0l; 149*4882a593Smuzhiyun u8 pddr_feci2c; 150*4882a593Smuzhiyun u8 pddr_qspi; 151*4882a593Smuzhiyun u8 pddr_sdram; 152*4882a593Smuzhiyun u8 pddr_timerh; 153*4882a593Smuzhiyun u8 pddr_timerl; 154*4882a593Smuzhiyun u8 pddr_uartl; 155*4882a593Smuzhiyun u8 pddr_fec1h; 156*4882a593Smuzhiyun u8 pddr_fec1l; 157*4882a593Smuzhiyun u8 pddr_bs; 158*4882a593Smuzhiyun u8 pddr_res4; 159*4882a593Smuzhiyun u8 pddr_usbh; 160*4882a593Smuzhiyun u8 pddr_usbl; 161*4882a593Smuzhiyun u8 pddr_uarth; 162*4882a593Smuzhiyun u8 pddr_res5[3]; 163*4882a593Smuzhiyun /* Port Pin Data/Set Registers */ 164*4882a593Smuzhiyun u8 ppdsdr_res1[4]; 165*4882a593Smuzhiyun u8 ppdsdr_busctl; 166*4882a593Smuzhiyun u8 ppdsdr_addr; 167*4882a593Smuzhiyun u8 ppdsdr_res2[2]; 168*4882a593Smuzhiyun u8 ppdsdr_cs; 169*4882a593Smuzhiyun u8 ppdsdr_res3; 170*4882a593Smuzhiyun u8 ppdsdr_fec0h; 171*4882a593Smuzhiyun u8 ppdsdr_fec0l; 172*4882a593Smuzhiyun u8 ppdsdr_feci2c; 173*4882a593Smuzhiyun u8 ppdsdr_qspi; 174*4882a593Smuzhiyun u8 ppdsdr_sdram; 175*4882a593Smuzhiyun u8 ppdsdr_timerh; 176*4882a593Smuzhiyun u8 ppdsdr_timerl; 177*4882a593Smuzhiyun u8 ppdsdr_uartl; 178*4882a593Smuzhiyun u8 ppdsdr_fec1h; 179*4882a593Smuzhiyun u8 ppdsdr_fec1l; 180*4882a593Smuzhiyun u8 ppdsdr_bs; 181*4882a593Smuzhiyun u8 ppdsdr_res4; 182*4882a593Smuzhiyun u8 ppdsdr_usbh; 183*4882a593Smuzhiyun u8 ppdsdr_usbl; 184*4882a593Smuzhiyun u8 ppdsdr_uarth; 185*4882a593Smuzhiyun u8 ppdsdr_res5[3]; 186*4882a593Smuzhiyun /* Port Clear Output Data Registers */ 187*4882a593Smuzhiyun u8 pclrr_res1[4]; 188*4882a593Smuzhiyun u8 pclrr_busctl; 189*4882a593Smuzhiyun u8 pclrr_addr; 190*4882a593Smuzhiyun u8 pclrr_res2[2]; 191*4882a593Smuzhiyun u8 pclrr_cs; 192*4882a593Smuzhiyun u8 pclrr_res3; 193*4882a593Smuzhiyun u8 pclrr_fec0h; 194*4882a593Smuzhiyun u8 pclrr_fec0l; 195*4882a593Smuzhiyun u8 pclrr_feci2c; 196*4882a593Smuzhiyun u8 pclrr_qspi; 197*4882a593Smuzhiyun u8 pclrr_sdram; 198*4882a593Smuzhiyun u8 pclrr_timerh; 199*4882a593Smuzhiyun u8 pclrr_timerl; 200*4882a593Smuzhiyun u8 pclrr_uartl; 201*4882a593Smuzhiyun u8 pclrr_fec1h; 202*4882a593Smuzhiyun u8 pclrr_fec1l; 203*4882a593Smuzhiyun u8 pclrr_bs; 204*4882a593Smuzhiyun u8 pclrr_res4; 205*4882a593Smuzhiyun u8 pclrr_usbh; 206*4882a593Smuzhiyun u8 pclrr_usbl; 207*4882a593Smuzhiyun u8 pclrr_uarth; 208*4882a593Smuzhiyun u8 pclrr_res5[3]; 209*4882a593Smuzhiyun /* Pin Assignment Registers */ 210*4882a593Smuzhiyun u8 par_addr; 211*4882a593Smuzhiyun u8 par_cs; 212*4882a593Smuzhiyun u16 par_busctl; 213*4882a593Smuzhiyun u8 par_res1[2]; 214*4882a593Smuzhiyun u16 par_usb; 215*4882a593Smuzhiyun u8 par_fec0hl; 216*4882a593Smuzhiyun u8 par_fec1hl; 217*4882a593Smuzhiyun u16 par_timer; 218*4882a593Smuzhiyun u16 par_uart; 219*4882a593Smuzhiyun u16 par_qspi; 220*4882a593Smuzhiyun u16 par_sdram; 221*4882a593Smuzhiyun u16 par_feci2c; 222*4882a593Smuzhiyun u8 par_bs; 223*4882a593Smuzhiyun u8 par_res2[3]; 224*4882a593Smuzhiyun } gpio_t; 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun /* Watchdog registers 228*4882a593Smuzhiyun */ 229*4882a593Smuzhiyun typedef struct wdog_ctrl { 230*4882a593Smuzhiyun u16 wcr; 231*4882a593Smuzhiyun u16 wmr; 232*4882a593Smuzhiyun u16 wcntr; 233*4882a593Smuzhiyun u16 wsr; 234*4882a593Smuzhiyun u8 res4[114]; 235*4882a593Smuzhiyun } wdog_t; 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun /* USB module registers 238*4882a593Smuzhiyun */ 239*4882a593Smuzhiyun typedef struct usb { 240*4882a593Smuzhiyun u16 res1; 241*4882a593Smuzhiyun u16 fnr; 242*4882a593Smuzhiyun u16 res2; 243*4882a593Smuzhiyun u16 fnmr; 244*4882a593Smuzhiyun u16 res3; 245*4882a593Smuzhiyun u16 rfmr; 246*4882a593Smuzhiyun u16 res4; 247*4882a593Smuzhiyun u16 rfmmr; 248*4882a593Smuzhiyun u8 res5[3]; 249*4882a593Smuzhiyun u8 far; 250*4882a593Smuzhiyun u32 asr; 251*4882a593Smuzhiyun u32 drr1; 252*4882a593Smuzhiyun u32 drr2; 253*4882a593Smuzhiyun u16 res6; 254*4882a593Smuzhiyun u16 specr; 255*4882a593Smuzhiyun u16 res7; 256*4882a593Smuzhiyun u16 ep0sr; 257*4882a593Smuzhiyun u32 iep0cfg; 258*4882a593Smuzhiyun u32 oep0cfg; 259*4882a593Smuzhiyun u32 ep1cfg; 260*4882a593Smuzhiyun u32 ep2cfg; 261*4882a593Smuzhiyun u32 ep3cfg; 262*4882a593Smuzhiyun u32 ep4cfg; 263*4882a593Smuzhiyun u32 ep5cfg; 264*4882a593Smuzhiyun u32 ep6cfg; 265*4882a593Smuzhiyun u32 ep7cfg; 266*4882a593Smuzhiyun u32 ep0ctl; 267*4882a593Smuzhiyun u16 res8; 268*4882a593Smuzhiyun u16 ep1ctl; 269*4882a593Smuzhiyun u16 res9; 270*4882a593Smuzhiyun u16 ep2ctl; 271*4882a593Smuzhiyun u16 res10; 272*4882a593Smuzhiyun u16 ep3ctl; 273*4882a593Smuzhiyun u16 res11; 274*4882a593Smuzhiyun u16 ep4ctl; 275*4882a593Smuzhiyun u16 res12; 276*4882a593Smuzhiyun u16 ep5ctl; 277*4882a593Smuzhiyun u16 res13; 278*4882a593Smuzhiyun u16 ep6ctl; 279*4882a593Smuzhiyun u16 res14; 280*4882a593Smuzhiyun u16 ep7ctl; 281*4882a593Smuzhiyun u32 ep0isr; 282*4882a593Smuzhiyun u16 res15; 283*4882a593Smuzhiyun u16 ep1isr; 284*4882a593Smuzhiyun u16 res16; 285*4882a593Smuzhiyun u16 ep2isr; 286*4882a593Smuzhiyun u16 res17; 287*4882a593Smuzhiyun u16 ep3isr; 288*4882a593Smuzhiyun u16 res18; 289*4882a593Smuzhiyun u16 ep4isr; 290*4882a593Smuzhiyun u16 res19; 291*4882a593Smuzhiyun u16 ep5isr; 292*4882a593Smuzhiyun u16 res20; 293*4882a593Smuzhiyun u16 ep6isr; 294*4882a593Smuzhiyun u16 res21; 295*4882a593Smuzhiyun u16 ep7isr; 296*4882a593Smuzhiyun u32 ep0imr; 297*4882a593Smuzhiyun u16 res22; 298*4882a593Smuzhiyun u16 ep1imr; 299*4882a593Smuzhiyun u16 res23; 300*4882a593Smuzhiyun u16 ep2imr; 301*4882a593Smuzhiyun u16 res24; 302*4882a593Smuzhiyun u16 ep3imr; 303*4882a593Smuzhiyun u16 res25; 304*4882a593Smuzhiyun u16 ep4imr; 305*4882a593Smuzhiyun u16 res26; 306*4882a593Smuzhiyun u16 ep5imr; 307*4882a593Smuzhiyun u16 res27; 308*4882a593Smuzhiyun u16 ep6imr; 309*4882a593Smuzhiyun u16 res28; 310*4882a593Smuzhiyun u16 ep7imr; 311*4882a593Smuzhiyun u32 ep0dr; 312*4882a593Smuzhiyun u32 ep1dr; 313*4882a593Smuzhiyun u32 ep2dr; 314*4882a593Smuzhiyun u32 ep3dr; 315*4882a593Smuzhiyun u32 ep4dr; 316*4882a593Smuzhiyun u32 ep5dr; 317*4882a593Smuzhiyun u32 ep6dr; 318*4882a593Smuzhiyun u32 ep7dr; 319*4882a593Smuzhiyun u16 res29; 320*4882a593Smuzhiyun u16 ep0dpr; 321*4882a593Smuzhiyun u16 res30; 322*4882a593Smuzhiyun u16 ep1dpr; 323*4882a593Smuzhiyun u16 res31; 324*4882a593Smuzhiyun u16 ep2dpr; 325*4882a593Smuzhiyun u16 res32; 326*4882a593Smuzhiyun u16 ep3dpr; 327*4882a593Smuzhiyun u16 res33; 328*4882a593Smuzhiyun u16 ep4dpr; 329*4882a593Smuzhiyun u16 res34; 330*4882a593Smuzhiyun u16 ep5dpr; 331*4882a593Smuzhiyun u16 res35; 332*4882a593Smuzhiyun u16 ep6dpr; 333*4882a593Smuzhiyun u16 res36; 334*4882a593Smuzhiyun u16 ep7dpr; 335*4882a593Smuzhiyun u8 res37[788]; 336*4882a593Smuzhiyun u8 cfgram[1024]; 337*4882a593Smuzhiyun } usb_t; 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun /* PLL module registers 340*4882a593Smuzhiyun */ 341*4882a593Smuzhiyun typedef struct pll_ctrl { 342*4882a593Smuzhiyun u32 syncr; 343*4882a593Smuzhiyun u32 synsr; 344*4882a593Smuzhiyun } pll_t; 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun typedef struct rcm { 347*4882a593Smuzhiyun u8 rcr; 348*4882a593Smuzhiyun u8 rsr; 349*4882a593Smuzhiyun } rcm_t; 350*4882a593Smuzhiyun 351*4882a593Smuzhiyun #endif /* __IMMAP_5275__ */ 352