Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / u-boot / arch / powerpc / include / asm / immap_8260.h
diff --git a/qemu/roms/u-boot/arch/powerpc/include/asm/immap_8260.h b/qemu/roms/u-boot/arch/powerpc/include/asm/immap_8260.h
new file mode 100644 (file)
index 0000000..c7021a7
--- /dev/null
@@ -0,0 +1,604 @@
+/*
+ * 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.
+        */
+       union {
+               struct {
+                       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];
+               };
+               u8      im_dprambase[64 * 1024];
+               u16     im_dprambase16[32 * 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__ */