| |
| /* |
| * 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; |
| char res10[84]; |
| } 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[2390]; |
| } sit8260_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; |
| |
| /* 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 */ |
| 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[159]; |
| |
| /* First set of baud rate generators. |
| */ |
| char res4a[496]; |
| 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__ */ |