1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * CPM2 Internal Memory Map 4*4882a593Smuzhiyun * Copyright (c) 1999 Dan Malek (dmalek@jlc.net) 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * The Internal Memory Map for devices with CPM2 on them. This 7*4882a593Smuzhiyun * is the superset of all CPM2 devices (8260, 8266, 8280, 8272, 8*4882a593Smuzhiyun * 8560). 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun #ifdef __KERNEL__ 11*4882a593Smuzhiyun #ifndef __IMMAP_CPM2__ 12*4882a593Smuzhiyun #define __IMMAP_CPM2__ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #include <linux/types.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* System configuration registers. 17*4882a593Smuzhiyun */ 18*4882a593Smuzhiyun typedef struct sys_82xx_conf { 19*4882a593Smuzhiyun u32 sc_siumcr; 20*4882a593Smuzhiyun u32 sc_sypcr; 21*4882a593Smuzhiyun u8 res1[6]; 22*4882a593Smuzhiyun u16 sc_swsr; 23*4882a593Smuzhiyun u8 res2[20]; 24*4882a593Smuzhiyun u32 sc_bcr; 25*4882a593Smuzhiyun u8 sc_ppc_acr; 26*4882a593Smuzhiyun u8 res3[3]; 27*4882a593Smuzhiyun u32 sc_ppc_alrh; 28*4882a593Smuzhiyun u32 sc_ppc_alrl; 29*4882a593Smuzhiyun u8 sc_lcl_acr; 30*4882a593Smuzhiyun u8 res4[3]; 31*4882a593Smuzhiyun u32 sc_lcl_alrh; 32*4882a593Smuzhiyun u32 sc_lcl_alrl; 33*4882a593Smuzhiyun u32 sc_tescr1; 34*4882a593Smuzhiyun u32 sc_tescr2; 35*4882a593Smuzhiyun u32 sc_ltescr1; 36*4882a593Smuzhiyun u32 sc_ltescr2; 37*4882a593Smuzhiyun u32 sc_pdtea; 38*4882a593Smuzhiyun u8 sc_pdtem; 39*4882a593Smuzhiyun u8 res5[3]; 40*4882a593Smuzhiyun u32 sc_ldtea; 41*4882a593Smuzhiyun u8 sc_ldtem; 42*4882a593Smuzhiyun u8 res6[163]; 43*4882a593Smuzhiyun } sysconf_82xx_cpm2_t; 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun typedef struct sys_85xx_conf { 46*4882a593Smuzhiyun u32 sc_cear; 47*4882a593Smuzhiyun u16 sc_ceer; 48*4882a593Smuzhiyun u16 sc_cemr; 49*4882a593Smuzhiyun u8 res1[70]; 50*4882a593Smuzhiyun u32 sc_smaer; 51*4882a593Smuzhiyun u8 res2[4]; 52*4882a593Smuzhiyun u32 sc_smevr; 53*4882a593Smuzhiyun u32 sc_smctr; 54*4882a593Smuzhiyun u32 sc_lmaer; 55*4882a593Smuzhiyun u8 res3[4]; 56*4882a593Smuzhiyun u32 sc_lmevr; 57*4882a593Smuzhiyun u32 sc_lmctr; 58*4882a593Smuzhiyun u8 res4[144]; 59*4882a593Smuzhiyun } sysconf_85xx_cpm2_t; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun typedef union sys_conf { 62*4882a593Smuzhiyun sysconf_82xx_cpm2_t siu_82xx; 63*4882a593Smuzhiyun sysconf_85xx_cpm2_t siu_85xx; 64*4882a593Smuzhiyun } sysconf_cpm2_t; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun /* Memory controller registers. 69*4882a593Smuzhiyun */ 70*4882a593Smuzhiyun typedef struct mem_ctlr { 71*4882a593Smuzhiyun u32 memc_br0; 72*4882a593Smuzhiyun u32 memc_or0; 73*4882a593Smuzhiyun u32 memc_br1; 74*4882a593Smuzhiyun u32 memc_or1; 75*4882a593Smuzhiyun u32 memc_br2; 76*4882a593Smuzhiyun u32 memc_or2; 77*4882a593Smuzhiyun u32 memc_br3; 78*4882a593Smuzhiyun u32 memc_or3; 79*4882a593Smuzhiyun u32 memc_br4; 80*4882a593Smuzhiyun u32 memc_or4; 81*4882a593Smuzhiyun u32 memc_br5; 82*4882a593Smuzhiyun u32 memc_or5; 83*4882a593Smuzhiyun u32 memc_br6; 84*4882a593Smuzhiyun u32 memc_or6; 85*4882a593Smuzhiyun u32 memc_br7; 86*4882a593Smuzhiyun u32 memc_or7; 87*4882a593Smuzhiyun u32 memc_br8; 88*4882a593Smuzhiyun u32 memc_or8; 89*4882a593Smuzhiyun u32 memc_br9; 90*4882a593Smuzhiyun u32 memc_or9; 91*4882a593Smuzhiyun u32 memc_br10; 92*4882a593Smuzhiyun u32 memc_or10; 93*4882a593Smuzhiyun u32 memc_br11; 94*4882a593Smuzhiyun u32 memc_or11; 95*4882a593Smuzhiyun u8 res1[8]; 96*4882a593Smuzhiyun u32 memc_mar; 97*4882a593Smuzhiyun u8 res2[4]; 98*4882a593Smuzhiyun u32 memc_mamr; 99*4882a593Smuzhiyun u32 memc_mbmr; 100*4882a593Smuzhiyun u32 memc_mcmr; 101*4882a593Smuzhiyun u8 res3[8]; 102*4882a593Smuzhiyun u16 memc_mptpr; 103*4882a593Smuzhiyun u8 res4[2]; 104*4882a593Smuzhiyun u32 memc_mdr; 105*4882a593Smuzhiyun u8 res5[4]; 106*4882a593Smuzhiyun u32 memc_psdmr; 107*4882a593Smuzhiyun u32 memc_lsdmr; 108*4882a593Smuzhiyun u8 memc_purt; 109*4882a593Smuzhiyun u8 res6[3]; 110*4882a593Smuzhiyun u8 memc_psrt; 111*4882a593Smuzhiyun u8 res7[3]; 112*4882a593Smuzhiyun u8 memc_lurt; 113*4882a593Smuzhiyun u8 res8[3]; 114*4882a593Smuzhiyun u8 memc_lsrt; 115*4882a593Smuzhiyun u8 res9[3]; 116*4882a593Smuzhiyun u32 memc_immr; 117*4882a593Smuzhiyun u32 memc_pcibr0; 118*4882a593Smuzhiyun u32 memc_pcibr1; 119*4882a593Smuzhiyun u8 res10[16]; 120*4882a593Smuzhiyun u32 memc_pcimsk0; 121*4882a593Smuzhiyun u32 memc_pcimsk1; 122*4882a593Smuzhiyun u8 res11[52]; 123*4882a593Smuzhiyun } memctl_cpm2_t; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun /* System Integration Timers. 126*4882a593Smuzhiyun */ 127*4882a593Smuzhiyun typedef struct sys_int_timers { 128*4882a593Smuzhiyun u8 res1[32]; 129*4882a593Smuzhiyun u16 sit_tmcntsc; 130*4882a593Smuzhiyun u8 res2[2]; 131*4882a593Smuzhiyun u32 sit_tmcnt; 132*4882a593Smuzhiyun u8 res3[4]; 133*4882a593Smuzhiyun u32 sit_tmcntal; 134*4882a593Smuzhiyun u8 res4[16]; 135*4882a593Smuzhiyun u16 sit_piscr; 136*4882a593Smuzhiyun u8 res5[2]; 137*4882a593Smuzhiyun u32 sit_pitc; 138*4882a593Smuzhiyun u32 sit_pitr; 139*4882a593Smuzhiyun u8 res6[94]; 140*4882a593Smuzhiyun u8 res7[390]; 141*4882a593Smuzhiyun } sit_cpm2_t; 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun #define PISCR_PIRQ_MASK ((u16)0xff00) 144*4882a593Smuzhiyun #define PISCR_PS ((u16)0x0080) 145*4882a593Smuzhiyun #define PISCR_PIE ((u16)0x0004) 146*4882a593Smuzhiyun #define PISCR_PTF ((u16)0x0002) 147*4882a593Smuzhiyun #define PISCR_PTE ((u16)0x0001) 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun /* PCI Controller. 150*4882a593Smuzhiyun */ 151*4882a593Smuzhiyun typedef struct pci_ctlr { 152*4882a593Smuzhiyun u32 pci_omisr; 153*4882a593Smuzhiyun u32 pci_omimr; 154*4882a593Smuzhiyun u8 res1[8]; 155*4882a593Smuzhiyun u32 pci_ifqpr; 156*4882a593Smuzhiyun u32 pci_ofqpr; 157*4882a593Smuzhiyun u8 res2[8]; 158*4882a593Smuzhiyun u32 pci_imr0; 159*4882a593Smuzhiyun u32 pci_imr1; 160*4882a593Smuzhiyun u32 pci_omr0; 161*4882a593Smuzhiyun u32 pci_omr1; 162*4882a593Smuzhiyun u32 pci_odr; 163*4882a593Smuzhiyun u8 res3[4]; 164*4882a593Smuzhiyun u32 pci_idr; 165*4882a593Smuzhiyun u8 res4[20]; 166*4882a593Smuzhiyun u32 pci_imisr; 167*4882a593Smuzhiyun u32 pci_imimr; 168*4882a593Smuzhiyun u8 res5[24]; 169*4882a593Smuzhiyun u32 pci_ifhpr; 170*4882a593Smuzhiyun u8 res6[4]; 171*4882a593Smuzhiyun u32 pci_iftpr; 172*4882a593Smuzhiyun u8 res7[4]; 173*4882a593Smuzhiyun u32 pci_iphpr; 174*4882a593Smuzhiyun u8 res8[4]; 175*4882a593Smuzhiyun u32 pci_iptpr; 176*4882a593Smuzhiyun u8 res9[4]; 177*4882a593Smuzhiyun u32 pci_ofhpr; 178*4882a593Smuzhiyun u8 res10[4]; 179*4882a593Smuzhiyun u32 pci_oftpr; 180*4882a593Smuzhiyun u8 res11[4]; 181*4882a593Smuzhiyun u32 pci_ophpr; 182*4882a593Smuzhiyun u8 res12[4]; 183*4882a593Smuzhiyun u32 pci_optpr; 184*4882a593Smuzhiyun u8 res13[8]; 185*4882a593Smuzhiyun u32 pci_mucr; 186*4882a593Smuzhiyun u8 res14[8]; 187*4882a593Smuzhiyun u32 pci_qbar; 188*4882a593Smuzhiyun u8 res15[12]; 189*4882a593Smuzhiyun u32 pci_dmamr0; 190*4882a593Smuzhiyun u32 pci_dmasr0; 191*4882a593Smuzhiyun u32 pci_dmacdar0; 192*4882a593Smuzhiyun u8 res16[4]; 193*4882a593Smuzhiyun u32 pci_dmasar0; 194*4882a593Smuzhiyun u8 res17[4]; 195*4882a593Smuzhiyun u32 pci_dmadar0; 196*4882a593Smuzhiyun u8 res18[4]; 197*4882a593Smuzhiyun u32 pci_dmabcr0; 198*4882a593Smuzhiyun u32 pci_dmandar0; 199*4882a593Smuzhiyun u8 res19[86]; 200*4882a593Smuzhiyun u32 pci_dmamr1; 201*4882a593Smuzhiyun u32 pci_dmasr1; 202*4882a593Smuzhiyun u32 pci_dmacdar1; 203*4882a593Smuzhiyun u8 res20[4]; 204*4882a593Smuzhiyun u32 pci_dmasar1; 205*4882a593Smuzhiyun u8 res21[4]; 206*4882a593Smuzhiyun u32 pci_dmadar1; 207*4882a593Smuzhiyun u8 res22[4]; 208*4882a593Smuzhiyun u32 pci_dmabcr1; 209*4882a593Smuzhiyun u32 pci_dmandar1; 210*4882a593Smuzhiyun u8 res23[88]; 211*4882a593Smuzhiyun u32 pci_dmamr2; 212*4882a593Smuzhiyun u32 pci_dmasr2; 213*4882a593Smuzhiyun u32 pci_dmacdar2; 214*4882a593Smuzhiyun u8 res24[4]; 215*4882a593Smuzhiyun u32 pci_dmasar2; 216*4882a593Smuzhiyun u8 res25[4]; 217*4882a593Smuzhiyun u32 pci_dmadar2; 218*4882a593Smuzhiyun u8 res26[4]; 219*4882a593Smuzhiyun u32 pci_dmabcr2; 220*4882a593Smuzhiyun u32 pci_dmandar2; 221*4882a593Smuzhiyun u8 res27[88]; 222*4882a593Smuzhiyun u32 pci_dmamr3; 223*4882a593Smuzhiyun u32 pci_dmasr3; 224*4882a593Smuzhiyun u32 pci_dmacdar3; 225*4882a593Smuzhiyun u8 res28[4]; 226*4882a593Smuzhiyun u32 pci_dmasar3; 227*4882a593Smuzhiyun u8 res29[4]; 228*4882a593Smuzhiyun u32 pci_dmadar3; 229*4882a593Smuzhiyun u8 res30[4]; 230*4882a593Smuzhiyun u32 pci_dmabcr3; 231*4882a593Smuzhiyun u32 pci_dmandar3; 232*4882a593Smuzhiyun u8 res31[344]; 233*4882a593Smuzhiyun u32 pci_potar0; 234*4882a593Smuzhiyun u8 res32[4]; 235*4882a593Smuzhiyun u32 pci_pobar0; 236*4882a593Smuzhiyun u8 res33[4]; 237*4882a593Smuzhiyun u32 pci_pocmr0; 238*4882a593Smuzhiyun u8 res34[4]; 239*4882a593Smuzhiyun u32 pci_potar1; 240*4882a593Smuzhiyun u8 res35[4]; 241*4882a593Smuzhiyun u32 pci_pobar1; 242*4882a593Smuzhiyun u8 res36[4]; 243*4882a593Smuzhiyun u32 pci_pocmr1; 244*4882a593Smuzhiyun u8 res37[4]; 245*4882a593Smuzhiyun u32 pci_potar2; 246*4882a593Smuzhiyun u8 res38[4]; 247*4882a593Smuzhiyun u32 pci_pobar2; 248*4882a593Smuzhiyun u8 res39[4]; 249*4882a593Smuzhiyun u32 pci_pocmr2; 250*4882a593Smuzhiyun u8 res40[50]; 251*4882a593Smuzhiyun u32 pci_ptcr; 252*4882a593Smuzhiyun u32 pci_gpcr; 253*4882a593Smuzhiyun u32 pci_gcr; 254*4882a593Smuzhiyun u32 pci_esr; 255*4882a593Smuzhiyun u32 pci_emr; 256*4882a593Smuzhiyun u32 pci_ecr; 257*4882a593Smuzhiyun u32 pci_eacr; 258*4882a593Smuzhiyun u8 res41[4]; 259*4882a593Smuzhiyun u32 pci_edcr; 260*4882a593Smuzhiyun u8 res42[4]; 261*4882a593Smuzhiyun u32 pci_eccr; 262*4882a593Smuzhiyun u8 res43[44]; 263*4882a593Smuzhiyun u32 pci_pitar1; 264*4882a593Smuzhiyun u8 res44[4]; 265*4882a593Smuzhiyun u32 pci_pibar1; 266*4882a593Smuzhiyun u8 res45[4]; 267*4882a593Smuzhiyun u32 pci_picmr1; 268*4882a593Smuzhiyun u8 res46[4]; 269*4882a593Smuzhiyun u32 pci_pitar0; 270*4882a593Smuzhiyun u8 res47[4]; 271*4882a593Smuzhiyun u32 pci_pibar0; 272*4882a593Smuzhiyun u8 res48[4]; 273*4882a593Smuzhiyun u32 pci_picmr0; 274*4882a593Smuzhiyun u8 res49[4]; 275*4882a593Smuzhiyun u32 pci_cfg_addr; 276*4882a593Smuzhiyun u32 pci_cfg_data; 277*4882a593Smuzhiyun u32 pci_int_ack; 278*4882a593Smuzhiyun u8 res50[756]; 279*4882a593Smuzhiyun } pci_cpm2_t; 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun /* Interrupt Controller. 282*4882a593Smuzhiyun */ 283*4882a593Smuzhiyun typedef struct interrupt_controller { 284*4882a593Smuzhiyun u16 ic_sicr; 285*4882a593Smuzhiyun u8 res1[2]; 286*4882a593Smuzhiyun u32 ic_sivec; 287*4882a593Smuzhiyun u32 ic_sipnrh; 288*4882a593Smuzhiyun u32 ic_sipnrl; 289*4882a593Smuzhiyun u32 ic_siprr; 290*4882a593Smuzhiyun u32 ic_scprrh; 291*4882a593Smuzhiyun u32 ic_scprrl; 292*4882a593Smuzhiyun u32 ic_simrh; 293*4882a593Smuzhiyun u32 ic_simrl; 294*4882a593Smuzhiyun u32 ic_siexr; 295*4882a593Smuzhiyun u8 res2[88]; 296*4882a593Smuzhiyun } intctl_cpm2_t; 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun /* Clocks and Reset. 299*4882a593Smuzhiyun */ 300*4882a593Smuzhiyun typedef struct clk_and_reset { 301*4882a593Smuzhiyun u32 car_sccr; 302*4882a593Smuzhiyun u8 res1[4]; 303*4882a593Smuzhiyun u32 car_scmr; 304*4882a593Smuzhiyun u8 res2[4]; 305*4882a593Smuzhiyun u32 car_rsr; 306*4882a593Smuzhiyun u32 car_rmr; 307*4882a593Smuzhiyun u8 res[104]; 308*4882a593Smuzhiyun } car_cpm2_t; 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun /* Input/Output Port control/status registers. 311*4882a593Smuzhiyun * Names consistent with processor manual, although they are different 312*4882a593Smuzhiyun * from the original 8xx names....... 313*4882a593Smuzhiyun */ 314*4882a593Smuzhiyun typedef struct io_port { 315*4882a593Smuzhiyun u32 iop_pdira; 316*4882a593Smuzhiyun u32 iop_ppara; 317*4882a593Smuzhiyun u32 iop_psora; 318*4882a593Smuzhiyun u32 iop_podra; 319*4882a593Smuzhiyun u32 iop_pdata; 320*4882a593Smuzhiyun u8 res1[12]; 321*4882a593Smuzhiyun u32 iop_pdirb; 322*4882a593Smuzhiyun u32 iop_pparb; 323*4882a593Smuzhiyun u32 iop_psorb; 324*4882a593Smuzhiyun u32 iop_podrb; 325*4882a593Smuzhiyun u32 iop_pdatb; 326*4882a593Smuzhiyun u8 res2[12]; 327*4882a593Smuzhiyun u32 iop_pdirc; 328*4882a593Smuzhiyun u32 iop_pparc; 329*4882a593Smuzhiyun u32 iop_psorc; 330*4882a593Smuzhiyun u32 iop_podrc; 331*4882a593Smuzhiyun u32 iop_pdatc; 332*4882a593Smuzhiyun u8 res3[12]; 333*4882a593Smuzhiyun u32 iop_pdird; 334*4882a593Smuzhiyun u32 iop_ppard; 335*4882a593Smuzhiyun u32 iop_psord; 336*4882a593Smuzhiyun u32 iop_podrd; 337*4882a593Smuzhiyun u32 iop_pdatd; 338*4882a593Smuzhiyun u8 res4[12]; 339*4882a593Smuzhiyun } iop_cpm2_t; 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun /* Communication Processor Module Timers 342*4882a593Smuzhiyun */ 343*4882a593Smuzhiyun typedef struct cpm_timers { 344*4882a593Smuzhiyun u8 cpmt_tgcr1; 345*4882a593Smuzhiyun u8 res1[3]; 346*4882a593Smuzhiyun u8 cpmt_tgcr2; 347*4882a593Smuzhiyun u8 res2[11]; 348*4882a593Smuzhiyun u16 cpmt_tmr1; 349*4882a593Smuzhiyun u16 cpmt_tmr2; 350*4882a593Smuzhiyun u16 cpmt_trr1; 351*4882a593Smuzhiyun u16 cpmt_trr2; 352*4882a593Smuzhiyun u16 cpmt_tcr1; 353*4882a593Smuzhiyun u16 cpmt_tcr2; 354*4882a593Smuzhiyun u16 cpmt_tcn1; 355*4882a593Smuzhiyun u16 cpmt_tcn2; 356*4882a593Smuzhiyun u16 cpmt_tmr3; 357*4882a593Smuzhiyun u16 cpmt_tmr4; 358*4882a593Smuzhiyun u16 cpmt_trr3; 359*4882a593Smuzhiyun u16 cpmt_trr4; 360*4882a593Smuzhiyun u16 cpmt_tcr3; 361*4882a593Smuzhiyun u16 cpmt_tcr4; 362*4882a593Smuzhiyun u16 cpmt_tcn3; 363*4882a593Smuzhiyun u16 cpmt_tcn4; 364*4882a593Smuzhiyun u16 cpmt_ter1; 365*4882a593Smuzhiyun u16 cpmt_ter2; 366*4882a593Smuzhiyun u16 cpmt_ter3; 367*4882a593Smuzhiyun u16 cpmt_ter4; 368*4882a593Smuzhiyun u8 res3[584]; 369*4882a593Smuzhiyun } cpmtimer_cpm2_t; 370*4882a593Smuzhiyun 371*4882a593Smuzhiyun /* DMA control/status registers. 372*4882a593Smuzhiyun */ 373*4882a593Smuzhiyun typedef struct sdma_csr { 374*4882a593Smuzhiyun u8 res0[24]; 375*4882a593Smuzhiyun u8 sdma_sdsr; 376*4882a593Smuzhiyun u8 res1[3]; 377*4882a593Smuzhiyun u8 sdma_sdmr; 378*4882a593Smuzhiyun u8 res2[3]; 379*4882a593Smuzhiyun u8 sdma_idsr1; 380*4882a593Smuzhiyun u8 res3[3]; 381*4882a593Smuzhiyun u8 sdma_idmr1; 382*4882a593Smuzhiyun u8 res4[3]; 383*4882a593Smuzhiyun u8 sdma_idsr2; 384*4882a593Smuzhiyun u8 res5[3]; 385*4882a593Smuzhiyun u8 sdma_idmr2; 386*4882a593Smuzhiyun u8 res6[3]; 387*4882a593Smuzhiyun u8 sdma_idsr3; 388*4882a593Smuzhiyun u8 res7[3]; 389*4882a593Smuzhiyun u8 sdma_idmr3; 390*4882a593Smuzhiyun u8 res8[3]; 391*4882a593Smuzhiyun u8 sdma_idsr4; 392*4882a593Smuzhiyun u8 res9[3]; 393*4882a593Smuzhiyun u8 sdma_idmr4; 394*4882a593Smuzhiyun u8 res10[707]; 395*4882a593Smuzhiyun } sdma_cpm2_t; 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun /* Fast controllers 398*4882a593Smuzhiyun */ 399*4882a593Smuzhiyun typedef struct fcc { 400*4882a593Smuzhiyun u32 fcc_gfmr; 401*4882a593Smuzhiyun u32 fcc_fpsmr; 402*4882a593Smuzhiyun u16 fcc_ftodr; 403*4882a593Smuzhiyun u8 res1[2]; 404*4882a593Smuzhiyun u16 fcc_fdsr; 405*4882a593Smuzhiyun u8 res2[2]; 406*4882a593Smuzhiyun u16 fcc_fcce; 407*4882a593Smuzhiyun u8 res3[2]; 408*4882a593Smuzhiyun u16 fcc_fccm; 409*4882a593Smuzhiyun u8 res4[2]; 410*4882a593Smuzhiyun u8 fcc_fccs; 411*4882a593Smuzhiyun u8 res5[3]; 412*4882a593Smuzhiyun u8 fcc_ftirr_phy[4]; 413*4882a593Smuzhiyun } fcc_t; 414*4882a593Smuzhiyun 415*4882a593Smuzhiyun /* Fast controllers continued 416*4882a593Smuzhiyun */ 417*4882a593Smuzhiyun typedef struct fcc_c { 418*4882a593Smuzhiyun u32 fcc_firper; 419*4882a593Smuzhiyun u32 fcc_firer; 420*4882a593Smuzhiyun u32 fcc_firsr_hi; 421*4882a593Smuzhiyun u32 fcc_firsr_lo; 422*4882a593Smuzhiyun u8 fcc_gfemr; 423*4882a593Smuzhiyun u8 res1[15]; 424*4882a593Smuzhiyun } fcc_c_t; 425*4882a593Smuzhiyun 426*4882a593Smuzhiyun /* TC Layer 427*4882a593Smuzhiyun */ 428*4882a593Smuzhiyun typedef struct tclayer { 429*4882a593Smuzhiyun u16 tc_tcmode; 430*4882a593Smuzhiyun u16 tc_cdsmr; 431*4882a593Smuzhiyun u16 tc_tcer; 432*4882a593Smuzhiyun u16 tc_rcc; 433*4882a593Smuzhiyun u16 tc_tcmr; 434*4882a593Smuzhiyun u16 tc_fcc; 435*4882a593Smuzhiyun u16 tc_ccc; 436*4882a593Smuzhiyun u16 tc_icc; 437*4882a593Smuzhiyun u16 tc_tcc; 438*4882a593Smuzhiyun u16 tc_ecc; 439*4882a593Smuzhiyun u8 res1[12]; 440*4882a593Smuzhiyun } tclayer_t; 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun 443*4882a593Smuzhiyun /* I2C 444*4882a593Smuzhiyun */ 445*4882a593Smuzhiyun typedef struct i2c { 446*4882a593Smuzhiyun u8 i2c_i2mod; 447*4882a593Smuzhiyun u8 res1[3]; 448*4882a593Smuzhiyun u8 i2c_i2add; 449*4882a593Smuzhiyun u8 res2[3]; 450*4882a593Smuzhiyun u8 i2c_i2brg; 451*4882a593Smuzhiyun u8 res3[3]; 452*4882a593Smuzhiyun u8 i2c_i2com; 453*4882a593Smuzhiyun u8 res4[3]; 454*4882a593Smuzhiyun u8 i2c_i2cer; 455*4882a593Smuzhiyun u8 res5[3]; 456*4882a593Smuzhiyun u8 i2c_i2cmr; 457*4882a593Smuzhiyun u8 res6[331]; 458*4882a593Smuzhiyun } i2c_cpm2_t; 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun typedef struct scc { /* Serial communication channels */ 461*4882a593Smuzhiyun u32 scc_gsmrl; 462*4882a593Smuzhiyun u32 scc_gsmrh; 463*4882a593Smuzhiyun u16 scc_psmr; 464*4882a593Smuzhiyun u8 res1[2]; 465*4882a593Smuzhiyun u16 scc_todr; 466*4882a593Smuzhiyun u16 scc_dsr; 467*4882a593Smuzhiyun u16 scc_scce; 468*4882a593Smuzhiyun u8 res2[2]; 469*4882a593Smuzhiyun u16 scc_sccm; 470*4882a593Smuzhiyun u8 res3; 471*4882a593Smuzhiyun u8 scc_sccs; 472*4882a593Smuzhiyun u8 res4[8]; 473*4882a593Smuzhiyun } scc_t; 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun typedef struct smc { /* Serial management channels */ 476*4882a593Smuzhiyun u8 res1[2]; 477*4882a593Smuzhiyun u16 smc_smcmr; 478*4882a593Smuzhiyun u8 res2[2]; 479*4882a593Smuzhiyun u8 smc_smce; 480*4882a593Smuzhiyun u8 res3[3]; 481*4882a593Smuzhiyun u8 smc_smcm; 482*4882a593Smuzhiyun u8 res4[5]; 483*4882a593Smuzhiyun } smc_t; 484*4882a593Smuzhiyun 485*4882a593Smuzhiyun /* Serial Peripheral Interface. 486*4882a593Smuzhiyun */ 487*4882a593Smuzhiyun typedef struct spi_ctrl { 488*4882a593Smuzhiyun u16 spi_spmode; 489*4882a593Smuzhiyun u8 res1[4]; 490*4882a593Smuzhiyun u8 spi_spie; 491*4882a593Smuzhiyun u8 res2[3]; 492*4882a593Smuzhiyun u8 spi_spim; 493*4882a593Smuzhiyun u8 res3[2]; 494*4882a593Smuzhiyun u8 spi_spcom; 495*4882a593Smuzhiyun u8 res4[82]; 496*4882a593Smuzhiyun } spictl_cpm2_t; 497*4882a593Smuzhiyun 498*4882a593Smuzhiyun /* CPM Mux. 499*4882a593Smuzhiyun */ 500*4882a593Smuzhiyun typedef struct cpmux { 501*4882a593Smuzhiyun u8 cmx_si1cr; 502*4882a593Smuzhiyun u8 res1; 503*4882a593Smuzhiyun u8 cmx_si2cr; 504*4882a593Smuzhiyun u8 res2; 505*4882a593Smuzhiyun u32 cmx_fcr; 506*4882a593Smuzhiyun u32 cmx_scr; 507*4882a593Smuzhiyun u8 cmx_smr; 508*4882a593Smuzhiyun u8 res3; 509*4882a593Smuzhiyun u16 cmx_uar; 510*4882a593Smuzhiyun u8 res4[16]; 511*4882a593Smuzhiyun } cpmux_t; 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun /* SIRAM control 514*4882a593Smuzhiyun */ 515*4882a593Smuzhiyun typedef struct siram { 516*4882a593Smuzhiyun u16 si_amr; 517*4882a593Smuzhiyun u16 si_bmr; 518*4882a593Smuzhiyun u16 si_cmr; 519*4882a593Smuzhiyun u16 si_dmr; 520*4882a593Smuzhiyun u8 si_gmr; 521*4882a593Smuzhiyun u8 res1; 522*4882a593Smuzhiyun u8 si_cmdr; 523*4882a593Smuzhiyun u8 res2; 524*4882a593Smuzhiyun u8 si_str; 525*4882a593Smuzhiyun u8 res3; 526*4882a593Smuzhiyun u16 si_rsr; 527*4882a593Smuzhiyun } siramctl_t; 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun typedef struct mcc { 530*4882a593Smuzhiyun u16 mcc_mcce; 531*4882a593Smuzhiyun u8 res1[2]; 532*4882a593Smuzhiyun u16 mcc_mccm; 533*4882a593Smuzhiyun u8 res2[2]; 534*4882a593Smuzhiyun u8 mcc_mccf; 535*4882a593Smuzhiyun u8 res3[7]; 536*4882a593Smuzhiyun } mcc_t; 537*4882a593Smuzhiyun 538*4882a593Smuzhiyun typedef struct comm_proc { 539*4882a593Smuzhiyun u32 cp_cpcr; 540*4882a593Smuzhiyun u32 cp_rccr; 541*4882a593Smuzhiyun u8 res1[14]; 542*4882a593Smuzhiyun u16 cp_rter; 543*4882a593Smuzhiyun u8 res2[2]; 544*4882a593Smuzhiyun u16 cp_rtmr; 545*4882a593Smuzhiyun u16 cp_rtscr; 546*4882a593Smuzhiyun u8 res3[2]; 547*4882a593Smuzhiyun u32 cp_rtsr; 548*4882a593Smuzhiyun u8 res4[12]; 549*4882a593Smuzhiyun } cpm_cpm2_t; 550*4882a593Smuzhiyun 551*4882a593Smuzhiyun /* USB Controller. 552*4882a593Smuzhiyun */ 553*4882a593Smuzhiyun typedef struct cpm_usb_ctlr { 554*4882a593Smuzhiyun u8 usb_usmod; 555*4882a593Smuzhiyun u8 usb_usadr; 556*4882a593Smuzhiyun u8 usb_uscom; 557*4882a593Smuzhiyun u8 res1[1]; 558*4882a593Smuzhiyun __be16 usb_usep[4]; 559*4882a593Smuzhiyun u8 res2[4]; 560*4882a593Smuzhiyun __be16 usb_usber; 561*4882a593Smuzhiyun u8 res3[2]; 562*4882a593Smuzhiyun __be16 usb_usbmr; 563*4882a593Smuzhiyun u8 usb_usbs; 564*4882a593Smuzhiyun u8 res4[7]; 565*4882a593Smuzhiyun } usb_cpm2_t; 566*4882a593Smuzhiyun 567*4882a593Smuzhiyun /* ...and the whole thing wrapped up.... 568*4882a593Smuzhiyun */ 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun typedef struct immap { 571*4882a593Smuzhiyun /* Some references are into the unique and known dpram spaces, 572*4882a593Smuzhiyun * others are from the generic base. 573*4882a593Smuzhiyun */ 574*4882a593Smuzhiyun #define im_dprambase im_dpram1 575*4882a593Smuzhiyun u8 im_dpram1[16*1024]; 576*4882a593Smuzhiyun u8 res1[16*1024]; 577*4882a593Smuzhiyun u8 im_dpram2[4*1024]; 578*4882a593Smuzhiyun u8 res2[8*1024]; 579*4882a593Smuzhiyun u8 im_dpram3[4*1024]; 580*4882a593Smuzhiyun u8 res3[16*1024]; 581*4882a593Smuzhiyun 582*4882a593Smuzhiyun sysconf_cpm2_t im_siu_conf; /* SIU Configuration */ 583*4882a593Smuzhiyun memctl_cpm2_t im_memctl; /* Memory Controller */ 584*4882a593Smuzhiyun sit_cpm2_t im_sit; /* System Integration Timers */ 585*4882a593Smuzhiyun pci_cpm2_t im_pci; /* PCI Controller */ 586*4882a593Smuzhiyun intctl_cpm2_t im_intctl; /* Interrupt Controller */ 587*4882a593Smuzhiyun car_cpm2_t im_clkrst; /* Clocks and reset */ 588*4882a593Smuzhiyun iop_cpm2_t im_ioport; /* IO Port control/status */ 589*4882a593Smuzhiyun cpmtimer_cpm2_t im_cpmtimer; /* CPM timers */ 590*4882a593Smuzhiyun sdma_cpm2_t im_sdma; /* SDMA control/status */ 591*4882a593Smuzhiyun 592*4882a593Smuzhiyun fcc_t im_fcc[3]; /* Three FCCs */ 593*4882a593Smuzhiyun u8 res4z[32]; 594*4882a593Smuzhiyun fcc_c_t im_fcc_c[3]; /* Continued FCCs */ 595*4882a593Smuzhiyun 596*4882a593Smuzhiyun u8 res4[32]; 597*4882a593Smuzhiyun 598*4882a593Smuzhiyun tclayer_t im_tclayer[8]; /* Eight TCLayers */ 599*4882a593Smuzhiyun u16 tc_tcgsr; 600*4882a593Smuzhiyun u16 tc_tcger; 601*4882a593Smuzhiyun 602*4882a593Smuzhiyun /* First set of baud rate generators. 603*4882a593Smuzhiyun */ 604*4882a593Smuzhiyun u8 res[236]; 605*4882a593Smuzhiyun u32 im_brgc5; 606*4882a593Smuzhiyun u32 im_brgc6; 607*4882a593Smuzhiyun u32 im_brgc7; 608*4882a593Smuzhiyun u32 im_brgc8; 609*4882a593Smuzhiyun 610*4882a593Smuzhiyun u8 res5[608]; 611*4882a593Smuzhiyun 612*4882a593Smuzhiyun i2c_cpm2_t im_i2c; /* I2C control/status */ 613*4882a593Smuzhiyun cpm_cpm2_t im_cpm; /* Communication processor */ 614*4882a593Smuzhiyun 615*4882a593Smuzhiyun /* Second set of baud rate generators. 616*4882a593Smuzhiyun */ 617*4882a593Smuzhiyun u32 im_brgc1; 618*4882a593Smuzhiyun u32 im_brgc2; 619*4882a593Smuzhiyun u32 im_brgc3; 620*4882a593Smuzhiyun u32 im_brgc4; 621*4882a593Smuzhiyun 622*4882a593Smuzhiyun scc_t im_scc[4]; /* Four SCCs */ 623*4882a593Smuzhiyun smc_t im_smc[2]; /* Couple of SMCs */ 624*4882a593Smuzhiyun spictl_cpm2_t im_spi; /* A SPI */ 625*4882a593Smuzhiyun cpmux_t im_cpmux; /* CPM clock route mux */ 626*4882a593Smuzhiyun siramctl_t im_siramctl1; /* First SI RAM Control */ 627*4882a593Smuzhiyun mcc_t im_mcc1; /* First MCC */ 628*4882a593Smuzhiyun siramctl_t im_siramctl2; /* Second SI RAM Control */ 629*4882a593Smuzhiyun mcc_t im_mcc2; /* Second MCC */ 630*4882a593Smuzhiyun usb_cpm2_t im_usb; /* USB Controller */ 631*4882a593Smuzhiyun 632*4882a593Smuzhiyun u8 res6[1153]; 633*4882a593Smuzhiyun 634*4882a593Smuzhiyun u16 im_si1txram[256]; 635*4882a593Smuzhiyun u8 res7[512]; 636*4882a593Smuzhiyun u16 im_si1rxram[256]; 637*4882a593Smuzhiyun u8 res8[512]; 638*4882a593Smuzhiyun u16 im_si2txram[256]; 639*4882a593Smuzhiyun u8 res9[512]; 640*4882a593Smuzhiyun u16 im_si2rxram[256]; 641*4882a593Smuzhiyun u8 res10[512]; 642*4882a593Smuzhiyun u8 res11[4096]; 643*4882a593Smuzhiyun } cpm2_map_t; 644*4882a593Smuzhiyun 645*4882a593Smuzhiyun extern cpm2_map_t __iomem *cpm2_immr; 646*4882a593Smuzhiyun 647*4882a593Smuzhiyun #endif /* __IMMAP_CPM2__ */ 648*4882a593Smuzhiyun #endif /* __KERNEL__ */ 649