| /* | |
| * MPC8260 Internal Memory Map | |
| * Copyright (c) 1999 Dan Malek (dmalek@jlc.net) | |
| * | |
| * The Internal Memory Map of the 8260. I don't know how generic | |
| * this will be, as I don't have any knowledge of the subsequent | |
| * parts at this time. I copied this from the 8xx_immap.h. | |
| */ | |
| #ifndef __IMMAP_82XX__ | |
| #define __IMMAP_82XX__ | |
| /* System configuration registers. | |
| */ | |
| typedef struct sys_conf { | |
| uint sc_siumcr; | |
| uint sc_sypcr; | |
| char res1[6]; | |
| ushort sc_swsr; | |
| char res2[20]; | |
| uint sc_bcr; | |
| u_char sc_ppc_acr; | |
| char res3[3]; | |
| uint sc_ppc_alrh; | |
| uint sc_ppc_alrl; | |
| u_char sc_lcl_acr; | |
| char res4[3]; | |
| uint sc_lcl_alrh; | |
| uint sc_lcl_alrl; | |
| uint sc_tescr1; | |
| uint sc_tescr2; | |
| uint sc_ltescr1; | |
| uint sc_ltescr2; | |
| uint sc_pdtea; | |
| u_char sc_pdtem; | |
| char res5[3]; | |
| uint sc_ldtea; | |
| u_char sc_ldtem; | |
| char res6[163]; | |
| } sysconf8260_t; | |
| /* Memory controller registers. | |
| */ | |
| typedef struct mem_ctlr { | |
| uint memc_br0; | |
| uint memc_or0; | |
| uint memc_br1; | |
| uint memc_or1; | |
| uint memc_br2; | |
| uint memc_or2; | |
| uint memc_br3; | |
| uint memc_or3; | |
| uint memc_br4; | |
| uint memc_or4; | |
| uint memc_br5; | |
| uint memc_or5; | |
| uint memc_br6; | |
| uint memc_or6; | |
| uint memc_br7; | |
| uint memc_or7; | |
| uint memc_br8; | |
| uint memc_or8; | |
| uint memc_br9; | |
| uint memc_or9; | |
| uint memc_br10; | |
| uint memc_or10; | |
| uint memc_br11; | |
| uint memc_or11; | |
| char res1[8]; | |
| uint memc_mar; | |
| char res2[4]; | |
| uint memc_mamr; | |
| uint memc_mbmr; | |
| uint memc_mcmr; | |
| char res3[8]; | |
| ushort memc_mptpr; | |
| char res4[2]; | |
| uint memc_mdr; | |
| char res5[4]; | |
| uint memc_psdmr; | |
| uint memc_lsdmr; | |
| u_char memc_purt; | |
| char res6[3]; | |
| u_char memc_psrt; | |
| char res7[3]; | |
| u_char memc_lurt; | |
| char res8[3]; | |
| u_char memc_lsrt; | |
| char res9[3]; | |
| uint memc_immr; | |
| uint memc_pcibr0; | |
| uint memc_pcibr1; | |
| char res10[16]; | |
| uint memc_pcimsk0; | |
| uint memc_pcimsk1; | |
| char res11[52]; | |
| } memctl8260_t; | |
| /* System Integration Timers. | |
| */ | |
| typedef struct sys_int_timers { | |
| char res1[32]; | |
| ushort sit_tmcntsc; | |
| char res2[2]; | |
| uint sit_tmcnt; | |
| char res3[4]; | |
| uint sit_tmcntal; | |
| char res4[16]; | |
| ushort sit_piscr; | |
| char res5[2]; | |
| uint sit_pitc; | |
| uint sit_pitr; | |
| char res6[94]; | |
| char res7[390]; | |
| } sit8260_t; | |
| /* PCI | |
| */ | |
| typedef struct pci_config { | |
| uint pci_omisr; | |
| uint pci_ominr; | |
| char res1[8]; | |
| uint pci_ifqpr; | |
| uint pci_ofqpr; | |
| char res2[8]; | |
| uint pci_imr0; | |
| uint pci_imr1; | |
| uint pci_omr0; | |
| uint pci_omr1; | |
| uint pci_odr; | |
| char res3[4]; | |
| uint pci_idr; | |
| char res4[20]; | |
| uint pci_imisr; | |
| uint pci_imimr; | |
| char res5[24]; | |
| uint pci_ifhpr; | |
| char res5_2[4]; | |
| uint pci_iftpr; | |
| char res6[4]; | |
| uint pci_iphpr; | |
| char res6_2[4]; | |
| uint pci_iptpr; | |
| char res7[4]; | |
| uint pci_ofhpr; | |
| char res7_2[4]; | |
| uint pci_oftpr; | |
| char res8[4]; | |
| uint pci_ophpr; | |
| char res8_2[4]; | |
| uint pci_optpr; | |
| char res9[8]; | |
| uint pci_mucr; | |
| char res10[8]; | |
| uint pci_qbar; | |
| char res11[12]; | |
| uint pci_dmamr0; | |
| uint pci_dmasr0; | |
| uint pci_dmacdar0; | |
| char res12[4]; | |
| uint pci_dmasar0; | |
| char res13[4]; | |
| uint pci_dmadar0; | |
| char res14[4]; | |
| uint pci_dmabcr0; | |
| uint pci_dmandar0; | |
| char res15[88]; | |
| uint pci_dmamr1; | |
| uint pci_dmasr1; | |
| uint pci_dmacdar1; | |
| char res16[4]; | |
| uint pci_dmasar1; | |
| char res17[4]; | |
| uint pci_dmadar1; | |
| char res18[4]; | |
| uint pci_dmabcr1; | |
| uint pci_dmandar1; | |
| char res19[88]; | |
| uint pci_dmamr2; | |
| uint pci_dmasr2; | |
| uint pci_dmacdar2; | |
| char res20[4]; | |
| uint pci_dmasar2; | |
| char res21[4]; | |
| uint pci_dmadar2; | |
| char res22[4]; | |
| uint pci_dmabcr2; | |
| uint pci_dmandar2; | |
| char res23[88]; | |
| uint pci_dmamr3; | |
| uint pci_dmasr3; | |
| uint pci_dmacdar3; | |
| char res24[4]; | |
| uint pci_dmasar3; | |
| char res25[4]; | |
| uint pci_dmadar3; | |
| char res26[4]; | |
| uint pci_dmabcr3; | |
| uint pci_dmandar3; | |
| char res27[344]; | |
| uint pci_potar0; | |
| char res28[4]; | |
| uint pci_pobar0; | |
| char res29[4]; | |
| uint pci_pocmr0; | |
| char res30[4]; | |
| uint pci_potar1; | |
| char res31[4]; | |
| uint pci_pobar1; | |
| char res32[4]; | |
| uint pci_pocmr1; | |
| char res33[4]; | |
| uint pci_potar2; | |
| char res34[4]; | |
| uint pci_pobar2; | |
| char res35[4]; | |
| uint pci_pocmr2; | |
| char res36[52]; | |
| uint pci_ptcr; | |
| uint pci_gpcr; | |
| uint pci_gcr; | |
| uint pci_esr; | |
| uint pci_emr; | |
| uint pci_ecr; | |
| uint pci_eacr; | |
| char res37[4]; | |
| uint pci_edcr; | |
| char res38[4]; | |
| uint pci_eccr; | |
| char res39[44]; | |
| uint pci_pitar1; | |
| char res40[4]; | |
| uint pci_pibar1; | |
| char res41[4]; | |
| uint pci_picmr1; | |
| char res42[4]; | |
| uint pci_pitar0; | |
| char res43[4]; | |
| uint pci_pibar0; | |
| char res44[4]; | |
| uint pci_picmr0; | |
| char res45[4]; | |
| uint pci_cfg_addr; | |
| uint pci_cfg_data; | |
| uint pci_int_ack; | |
| char res46[756]; | |
| }pci8260_t; | |
| #define PISCR_PIRQ_MASK ((ushort)0xff00) | |
| #define PISCR_PS ((ushort)0x0080) | |
| #define PISCR_PIE ((ushort)0x0004) | |
| #define PISCR_PTF ((ushort)0x0002) | |
| #define PISCR_PTE ((ushort)0x0001) | |
| /* Interrupt Controller. | |
| */ | |
| typedef struct interrupt_controller { | |
| ushort ic_sicr; | |
| char res1[2]; | |
| uint ic_sivec; | |
| uint ic_sipnrh; | |
| uint ic_sipnrl; | |
| uint ic_siprr; | |
| uint ic_scprrh; | |
| uint ic_scprrl; | |
| uint ic_simrh; | |
| uint ic_simrl; | |
| uint ic_siexr; | |
| char res2[88]; | |
| } intctl8260_t; | |
| /* Clocks and Reset. | |
| */ | |
| typedef struct clk_and_reset { | |
| uint car_sccr; | |
| char res1[4]; | |
| uint car_scmr; | |
| char res2[4]; | |
| uint car_rsr; | |
| uint car_rmr; | |
| char res[104]; | |
| } car8260_t; | |
| /* Input/Output Port control/status registers. | |
| * Names consistent with processor manual, although they are different | |
| * from the original 8xx names....... | |
| */ | |
| typedef struct io_port { | |
| uint iop_pdira; | |
| uint iop_ppara; | |
| uint iop_psora; | |
| uint iop_podra; | |
| uint iop_pdata; | |
| char res1[12]; | |
| uint iop_pdirb; | |
| uint iop_pparb; | |
| uint iop_psorb; | |
| uint iop_podrb; | |
| uint iop_pdatb; | |
| char res2[12]; | |
| uint iop_pdirc; | |
| uint iop_pparc; | |
| uint iop_psorc; | |
| uint iop_podrc; | |
| uint iop_pdatc; | |
| char res3[12]; | |
| uint iop_pdird; | |
| uint iop_ppard; | |
| uint iop_psord; | |
| uint iop_podrd; | |
| uint iop_pdatd; | |
| char res4[12]; | |
| } iop8260_t; | |
| /* Communication Processor Module Timers | |
| */ | |
| typedef struct cpm_timers { | |
| u_char cpmt_tgcr1; | |
| char res1[3]; | |
| u_char cpmt_tgcr2; | |
| char res2[11]; | |
| ushort cpmt_tmr1; | |
| ushort cpmt_tmr2; | |
| ushort cpmt_trr1; | |
| ushort cpmt_trr2; | |
| ushort cpmt_tcr1; | |
| ushort cpmt_tcr2; | |
| ushort cpmt_tcn1; | |
| ushort cpmt_tcn2; | |
| ushort cpmt_tmr3; | |
| ushort cpmt_tmr4; | |
| ushort cpmt_trr3; | |
| ushort cpmt_trr4; | |
| ushort cpmt_tcr3; | |
| ushort cpmt_tcr4; | |
| ushort cpmt_tcn3; | |
| ushort cpmt_tcn4; | |
| ushort cpmt_ter1; | |
| ushort cpmt_ter2; | |
| ushort cpmt_ter3; | |
| ushort cpmt_ter4; | |
| char res3[584]; | |
| } cpmtimer8260_t; | |
| /* DMA control/status registers. | |
| */ | |
| typedef struct sdma_csr { | |
| char res0[24]; | |
| u_char sdma_sdsr; | |
| char res1[3]; | |
| u_char sdma_sdmr; | |
| char res2[3]; | |
| u_char sdma_idsr1; | |
| char res3[3]; | |
| u_char sdma_idmr1; | |
| char res4[3]; | |
| u_char sdma_idsr2; | |
| char res5[3]; | |
| u_char sdma_idmr2; | |
| char res6[3]; | |
| u_char sdma_idsr3; | |
| char res7[3]; | |
| u_char sdma_idmr3; | |
| char res8[3]; | |
| u_char sdma_idsr4; | |
| char res9[3]; | |
| u_char sdma_idmr4; | |
| char res10[707]; | |
| } sdma8260_t; | |
| /* Fast controllers | |
| */ | |
| typedef struct fcc { | |
| uint fcc_gfmr; | |
| uint fcc_fpsmr; | |
| ushort fcc_ftodr; | |
| char res1[2]; | |
| ushort fcc_fdsr; | |
| char res2[2]; | |
| ushort fcc_fcce; | |
| char res3[2]; | |
| ushort fcc_fccm; | |
| char res4[2]; | |
| u_char fcc_fccs; | |
| char res5[3]; | |
| u_char fcc_ftirr_phy[4]; | |
| } fcc_t; | |
| /* Fast controllers continued | |
| */ | |
| typedef struct fcc_c { | |
| uint fcc_firper; | |
| uint fcc_firer; | |
| uint fcc_firsr_hi; | |
| uint fcc_firsr_lo; | |
| u_char fcc_gfemr; | |
| char res1[15]; | |
| } fcc_c_t; | |
| /* TC Layer | |
| */ | |
| typedef struct tclayer { | |
| ushort tc_tcmode; | |
| ushort tc_cdsmr; | |
| ushort tc_tcer; | |
| ushort tc_rcc; | |
| ushort tc_tcmr; | |
| ushort tc_fcc; | |
| ushort tc_ccc; | |
| ushort tc_icc; | |
| ushort tc_tcc; | |
| ushort tc_ecc; | |
| char res1[12]; | |
| } tclayer_t; | |
| /* I2C | |
| */ | |
| typedef struct i2c { | |
| u_char i2c_i2mod; | |
| char res1[3]; | |
| u_char i2c_i2add; | |
| char res2[3]; | |
| u_char i2c_i2brg; | |
| char res3[3]; | |
| u_char i2c_i2com; | |
| char res4[3]; | |
| u_char i2c_i2cer; | |
| char res5[3]; | |
| u_char i2c_i2cmr; | |
| char res6[331]; | |
| } i2c8260_t; | |
| typedef struct scc { /* Serial communication channels */ | |
| uint scc_gsmrl; | |
| uint scc_gsmrh; | |
| ushort scc_psmr; | |
| char res1[2]; | |
| ushort scc_todr; | |
| ushort scc_dsr; | |
| ushort scc_scce; | |
| char res2[2]; | |
| ushort scc_sccm; | |
| char res3; | |
| u_char scc_sccs; | |
| char res4[8]; | |
| } scc_t; | |
| typedef struct smc { /* Serial management channels */ | |
| char res1[2]; | |
| ushort smc_smcmr; | |
| char res2[2]; | |
| u_char smc_smce; | |
| char res3[3]; | |
| u_char smc_smcm; | |
| char res4[5]; | |
| } smc_t; | |
| /* Serial Peripheral Interface. | |
| */ | |
| typedef struct im_spi { | |
| ushort spi_spmode; | |
| char res1[4]; | |
| u_char spi_spie; | |
| char res2[3]; | |
| u_char spi_spim; | |
| char res3[2]; | |
| u_char spi_spcom; | |
| char res4[82]; | |
| } im_spi_t; | |
| /* CPM Mux. | |
| */ | |
| typedef struct cpmux { | |
| u_char cmx_si1cr; | |
| char res1; | |
| u_char cmx_si2cr; | |
| char res2; | |
| uint cmx_fcr; | |
| uint cmx_scr; | |
| u_char cmx_smr; | |
| char res3; | |
| ushort cmx_uar; | |
| char res4[16]; | |
| } cpmux_t; | |
| /* SIRAM control | |
| */ | |
| typedef struct siram { | |
| ushort si_amr; | |
| ushort si_bmr; | |
| ushort si_cmr; | |
| ushort si_dmr; | |
| u_char si_gmr; | |
| char res1; | |
| u_char si_cmdr; | |
| char res2; | |
| u_char si_str; | |
| char res3; | |
| ushort si_rsr; | |
| } siramctl_t; | |
| typedef struct mcc { | |
| ushort mcc_mcce; | |
| char res1[2]; | |
| ushort mcc_mccm; | |
| char res2[2]; | |
| u_char mcc_mccf; | |
| char res3[7]; | |
| } mcc_t; | |
| typedef struct comm_proc { | |
| uint cp_cpcr; | |
| uint cp_rccr; | |
| char res1[14]; | |
| ushort cp_rter; | |
| char res2[2]; | |
| ushort cp_rtmr; | |
| ushort cp_rtscr; | |
| char res3[2]; | |
| uint cp_rtsr; | |
| char res4[12]; | |
| } cpm8260_t; | |
| /* ...and the whole thing wrapped up.... | |
| */ | |
| typedef struct immap { | |
| /* Some references are into the unique and known dpram spaces, | |
| * others are from the generic base. | |
| */ | |
| #define im_dprambase im_dpram1 | |
| u_char im_dpram1[16*1024]; | |
| char res1[16*1024]; | |
| u_char im_dpram2[4*1024]; | |
| char res2[8*1024]; | |
| u_char im_dpram3[4*1024]; | |
| char res3[16*1024]; | |
| sysconf8260_t im_siu_conf; /* SIU Configuration */ | |
| memctl8260_t im_memctl; /* Memory Controller */ | |
| sit8260_t im_sit; /* System Integration Timers */ | |
| pci8260_t im_pci; /* PCI Configuration */ | |
| intctl8260_t im_intctl; /* Interrupt Controller */ | |
| car8260_t im_clkrst; /* Clocks and reset */ | |
| iop8260_t im_ioport; /* IO Port control/status */ | |
| cpmtimer8260_t im_cpmtimer; /* CPM timers */ | |
| sdma8260_t im_sdma; /* SDMA control/status */ | |
| fcc_t im_fcc[3]; /* Three FCCs */ | |
| char res4[32]; | |
| fcc_c_t im_fcc_c[3]; /* Continued FCCs */ | |
| char res4a[32]; | |
| tclayer_t im_tclayer[8]; /* Eight TCLayers */ | |
| ushort tc_tcgsr; | |
| ushort tc_tcger; | |
| /* First set of baud rate generators. | |
| */ | |
| char res4b[236]; | |
| uint im_brgc5; | |
| uint im_brgc6; | |
| uint im_brgc7; | |
| uint im_brgc8; | |
| char res5[608]; | |
| i2c8260_t im_i2c; /* I2C control/status */ | |
| cpm8260_t im_cpm; /* Communication processor */ | |
| /* Second set of baud rate generators. | |
| */ | |
| uint im_brgc1; | |
| uint im_brgc2; | |
| uint im_brgc3; | |
| uint im_brgc4; | |
| scc_t im_scc[4]; /* Four SCCs */ | |
| smc_t im_smc[2]; /* Couple of SMCs */ | |
| im_spi_t im_spi; /* A SPI */ | |
| cpmux_t im_cpmux; /* CPM clock route mux */ | |
| siramctl_t im_siramctl1; /* First SI RAM Control */ | |
| mcc_t im_mcc1; /* First MCC */ | |
| siramctl_t im_siramctl2; /* Second SI RAM Control */ | |
| mcc_t im_mcc2; /* Second MCC */ | |
| char res6[1184]; | |
| ushort im_si1txram[256]; | |
| char res7[512]; | |
| ushort im_si1rxram[256]; | |
| char res8[512]; | |
| ushort im_si2txram[256]; | |
| char res9[512]; | |
| ushort im_si2rxram[256]; | |
| char res10[512]; | |
| char res11[4096]; | |
| } immap_t; | |
| #endif /* __IMMAP_82XX__ */ |