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