home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-ppc / immap_cpm2.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  10.5 KB  |  649 lines

  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__ */
  649.