blob: 72cbab43e42349179f2e85fd1fa6dd4e1a105598 [file] [log] [blame]
/*
* (C) Copyright 2003
* Martin Winistoerfer, martinwinistoerfer@gmx.ch.
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation,
*/
/*
* File: 5xx_immap.h
*
* Discription: MPC555 Internal Memory Map
*
*/
#ifndef __IMMAP_5XX__
#define __IMMAP_5XX__
/* System Configuration Registers.
*/
typedef struct sys_conf {
uint sc_siumcr;
uint sc_sypcr;
char res1[6];
ushort sc_swsr;
uint sc_sipend;
uint sc_simask;
uint sc_siel;
uint sc_sivec;
uint sc_tesr;
uint sc_sgpiodt1;
uint sc_sgpiodt2;
uint sc_sgpiocr;
uint sc_emcr;
uint sc_res1aa;
uint sc_res1ab;
uint sc_pdmcr;
char res3[192];
} sysconf5xx_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;
char res1[32];
uint memc_dmbr;
uint memc_dmor;
char res2[48];
ushort memc_mstat;
ushort memc_res4a;
char res3[132];
} memctl5xx_t;
/* System Integration Timers.
*/
typedef struct sys_int_timers {
ushort sit_tbscr;
char res1[2];
uint sit_tbref0;
uint sit_tbref1;
char res2[20];
ushort sit_rtcsc;
char res3[2];
uint sit_rtc;
uint sit_rtsec;
uint sit_rtcal;
char res4[16];
ushort sit_piscr;
char res5[2];
uint sit_pitc;
uint sit_pitr;
char res6[52];
} sit5xx_t;
/* Clocks and Reset
*/
typedef struct clk_and_reset {
uint car_sccr;
uint car_plprcr;
ushort car_rsr;
ushort car_res7a;
ushort car_colir;
ushort car_res7b;
ushort car_vsrmcr;
ushort car_res7c;
char res1[108];
} car5xx_t;
#define TBSCR_TBE ((ushort)0x0001)
/* System Integration Timer Keys
*/
typedef struct sitk {
uint sitk_tbscrk;
uint sitk_tbref0k;
uint sitk_tbref1k;
uint sitk_tbk;
char res1[16];
uint sitk_rtcsck;
uint sitk_rtck;
uint sitk_rtseck;
uint sitk_rtcalk;
char res2[16];
uint sitk_piscrk;
uint sitk_pitck;
char res3[56];
} sitk5xx_t;
/* Clocks and Reset Keys.
*/
typedef struct cark {
uint cark_sccrk;
uint cark_plprcrk;
uint cark_rsrk;
char res1[1140];
} cark8xx_t;
/* The key to unlock registers maintained by keep-alive power.
*/
#define KAPWR_KEY ((unsigned int)0x55ccaa33)
/* Flash Configuration
*/
typedef struct fl {
uint fl_cmfmcr;
uint fl_cmftst;
uint fl_cmfctl;
char res1[52];
} fl5xx_t;
/* Dpram Control
*/
typedef struct dprc {
ushort dprc_dptmcr;
ushort dprc_ramtst;
ushort dprc_rambar;
ushort dprc_misrh;
ushort dprc_misrl;
ushort dprc_miscnt;
} dprc5xx_t;
/* Time Processor Unit
*/
typedef struct tpu {
ushort tpu_tpumcr;
ushort tpu_tcr;
ushort tpu_dscr;
ushort tpu_dssr;
ushort tpu_ticr;
ushort tpu_cier;
ushort tpu_cfsr0;
ushort tpu_cfsr1;
ushort tpu_cfsr2;
ushort tpu_cfsr3;
ushort tpu_hsqr0;
ushort tpu_hsqr1;
ushort tpu_hsrr0;
ushort tpu_hsrr1;
ushort tpu_cpr0;
ushort tpu_cpr1;
ushort tpu_cisr;
ushort tpu_lr;
ushort tpu_sglr;
ushort tpu_dcnr;
ushort tpu_tpumcr2;
ushort tpu_tpumcr3;
ushort tpu_isdr;
ushort tpu_iscr;
char res1[208];
char tpu[16][16];
char res2[512];
} tpu5xx_t;
/* QADC
*/
typedef struct qadc {
ushort qadc_64mcr;
ushort qadc_64test;
ushort qadc_64int;
u_char qadc_portqa;
u_char qadc_portqb;
ushort qadc_ddrqa;
ushort qadc_qacr0;
ushort qadc_qacr1;
ushort qadc_qacr2;
ushort qadc_qasr0;
ushort qadc_qasr1;
char res1[492];
/* command convertion word table */
ushort qadc_ccw[64];
/* result word table, unsigned right justified */
ushort qadc_rjurr[64];
/* result word table, signed left justified */
ushort qadc_ljsrr[64];
/* result word table, unsigned left justified */
ushort qadc_ljurr[64];
} qadc5xx_t;
/* QSMCM
*/
typedef struct qsmcm {
ushort qsmcm_qsmcr;
ushort qsmcm_qtest;
ushort qsmcm_qdsci_il;
ushort qsmcm_qspi_il;
ushort qsmcm_scc1r0;
ushort qsmcm_scc1r1;
ushort qsmcm_sc1sr;
ushort qsmcm_sc1dr;
char res1[2];
char res2[2];
ushort qsmcm_portqs;
u_char qsmcm_pqspar;
u_char qsmcm_ddrqs;
ushort qsmcm_spcr0;
ushort qsmcm_spcr1;
ushort qsmcm_spcr2;
u_char qsmcm_spcr3;
u_char qsmcm_spsr;
ushort qsmcm_scc2r0;
ushort qsmcm_scc2r1;
ushort qsmcm_sc2sr;
ushort qsmcm_sc2dr;
ushort qsmcm_qsci1cr;
ushort qsmcm_qsci1sr;
ushort qsmcm_sctq[16];
ushort qsmcm_scrq[16];
char res3[212];
ushort qsmcm_recram[32];
ushort qsmcm_tranram[32];
u_char qsmcm_comdram[32];
char res[3616];
} qsmcm5xx_t;
/* MIOS
*/
typedef struct mios {
ushort mios_mpwmsm0perr; /* mpwmsm0 */
ushort mios_mpwmsm0pulr;
ushort mios_mpwmsm0cntr;
ushort mios_mpwmsm0scr;
ushort mios_mpwmsm1perr; /* mpwmsm1 */
ushort mios_mpwmsm1pulr;
ushort mios_mpwmsm1cntr;
ushort mios_mpwmsm1scr;
ushort mios_mpwmsm2perr; /* mpwmsm2 */
ushort mios_mpwmsm2pulr;
ushort mios_mpwmsm2cntr;
ushort mios_mpwmsm2scr;
ushort mios_mpwmsm3perr; /* mpwmsm3 */
ushort mios_mpwmsm3pulr;
ushort mios_mpwmsm3cntr;
ushort mios_mpwmsm3scr;
char res1[16];
ushort mios_mmcsm6cnt; /* mmcsm6 */
ushort mios_mmcsm6mlr;
ushort mios_mmcsm6scrd, mmcsm6scr;
char res2[32];
ushort mios_mdasm11ar; /* mdasm11 */
ushort mios_mdasm11br;
ushort mios_mdasm11scrd, mdasm11scr;
ushort mios_mdasm12ar; /* mdasm12 */
ushort mios_mdasm12br;
ushort mios_mdasm12scrd, mdasm12scr;
ushort mios_mdasm13ar; /* mdasm13 */
ushort mios_mdasm13br;
ushort mios_mdasm13scrd, mdasm13scr;
ushort mios_mdasm14ar; /* mdasm14 */
ushort mios_mdasm14br;
ushort mios_mdasm14scrd, mdasm14scr;
ushort mios_mdasm15ar; /* mdasm15 */
ushort mios_mdasm15br;
ushort mios_mdasm15scrd, mdasm15scr;
ushort mios_mpwmsm16perr; /* mpwmsm16 */
ushort mios_mpwmsm16pulr;
ushort mios_mpwmsm16cntr;
ushort mios_mpwmsm16scr;
ushort mios_mpwmsm17perr; /* mpwmsm17 */
ushort mios_mpwmsm17pulr;
ushort mios_mpwmsm17cntr;
ushort mios_mpwmsm17scr;
ushort mios_mpwmsm18perr; /* mpwmsm18 */
ushort mios_mpwmsm18pulr;
ushort mios_mpwmsm18cntr;
ushort mios_mpwmsm18scr;
ushort mios_mpwmsm19perr; /* mpwmsm19 */
ushort mios_mpwmsm19pulr;
ushort mios_mpwmsm19cntr;
ushort mios_mpwmsm19scr;
char res3[16];
ushort mios_mmcsm22cnt; /* mmcsm22 */
ushort mios_mmcsm22mlr;
ushort mios_mmcsm22scrd, mmcsm22scr;
char res4[32];
ushort mios_mdasm27ar; /* mdasm27 */
ushort mios_mdasm27br;
ushort mios_mdasm27scrd, mdasm27scr;
ushort mios_mdasm28ar; /*mdasm28 */
ushort mios_mdasm28br;
ushort mios_mdasm28scrd, mdasm28scr;
ushort mios_mdasm29ar; /* mdasm29 */
ushort mios_mdasm29br;
ushort mios_mdasm29scrd, mdasm29scr;
ushort mios_mdasm30ar; /* mdasm30 */
ushort mios_mdasm30br;
ushort mios_mdasm30scrd, mdasm30scr;
ushort mios_mdasm31ar; /* mdasm31 */
ushort mios_mdasm31br;
ushort mios_mdasm31scrd, mdasm31scr;
ushort mios_mpiosm32dr;
ushort mios_mpiosm32ddr;
char res5[1788];
ushort mios_mios1tpcr;
char mios_res13[2];
ushort mios_mios1vnr;
ushort mios_mios1mcr;
char res6[12];
ushort mios_res42z;
ushort mios_mcpsmscr;
char res7[1000];
ushort mios_mios1sr0;
char res12[2];
ushort mios_mios1er0;
ushort mios_mios1rpr0;
char res8[40];
ushort mios_mios1lvl0;
char res9[14];
ushort mios_mios1sr1;
char res10[2];
ushort mios_mios1er1;
ushort mios_mios1rpr1;
char res11[40];
ushort mios_mios1lvl1;
char res13[1038];
} mios5xx_t;
/* Toucan Module
*/
typedef struct tcan {
ushort tcan_tcnmcr;
ushort tcan_cantcr;
ushort tcan_canicr;
u_char tcan_canctrl0;
u_char tcan_canctrl1;
u_char tcan_presdiv;
u_char tcan_canctrl2;
ushort tcan_timer;
char res1[4];
ushort tcan_rxgmskhi;
ushort tcan_rxgmsklo;
ushort tcan_rx14mskhi;
ushort tcan_rx14msklo;
ushort tcan_rx15mskhi;
ushort tcan_rx15msklo;
char res2[4];
ushort tcan_estat;
ushort tcan_imask;
ushort tcan_iflag;
u_char tcan_rxectr;
u_char tcan_txectr;
char res3[88];
struct {
ushort scr;
ushort id_high;
ushort id_low;
u_char data[8];
char res4[2];
} tcan_mbuff[16];
char res5[640];
} tcan5xx_t;
/* UIMB
*/
typedef struct uimb {
uint uimb_umcr;
char res1[12];
uint uimb_utstcreg;
char res2[12];
uint uimb_uipend;
} uimb5xx_t;
/* Internal Memory Map MPC555
*/
typedef struct immap {
char res1[262144]; /* CMF Flash A 256 Kbytes */
char res2[196608]; /* CMF Flash B 192 Kbytes */
char res3[2670592]; /* Reserved for Flash */
sysconf5xx_t im_siu_conf; /* SIU Configuration */
memctl5xx_t im_memctl; /* Memory Controller */
sit5xx_t im_sit; /* System Integration Timers */
car5xx_t im_clkrst; /* Clocks and Reset */
sitk5xx_t im_sitk; /* System Integration Timer Keys*/
cark8xx_t im_clkrstk; /* Clocks and Resert Keys */
fl5xx_t im_fla; /* Flash Module A */
fl5xx_t im_flb; /* Flash Module B */
char res4[14208]; /* Reserved for SIU */
dprc5xx_t im_dprc; /* Dpram Control Register */
char res5[8180]; /* Reserved */
char dptram[6144]; /* Dptram */
char res6[2048]; /* Reserved */
tpu5xx_t im_tpua; /* Time Proessing Unit A */
tpu5xx_t im_tpub; /* Time Processing Unit B */
qadc5xx_t im_qadca; /* QADC A */
qadc5xx_t im_qadcb; /* QADC B */
qsmcm5xx_t im_qsmcm; /* SCI and SPI */
mios5xx_t im_mios; /* MIOS */
tcan5xx_t im_tcana; /* Toucan A */
tcan5xx_t im_tcanb; /* Toucan B */
char res7[1792]; /* Reserved */
uimb5xx_t im_uimb; /* UIMB */
} immap_t;
#endif /* __IMMAP_5XX__ */