linux/arch/powerpc/include/asm/immap_cpm2.h
<<
>>
Prefs
   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#include <linux/types.h>
  14
  15/* System configuration registers.
  16*/
  17typedef struct sys_82xx_conf {
  18        u32     sc_siumcr;
  19        u32     sc_sypcr;
  20        u8      res1[6];
  21        u16     sc_swsr;
  22        u8      res2[20];
  23        u32     sc_bcr;
  24        u8      sc_ppc_acr;
  25        u8      res3[3];
  26        u32     sc_ppc_alrh;
  27        u32     sc_ppc_alrl;
  28        u8      sc_lcl_acr;
  29        u8      res4[3];
  30        u32     sc_lcl_alrh;
  31        u32     sc_lcl_alrl;
  32        u32     sc_tescr1;
  33        u32     sc_tescr2;
  34        u32     sc_ltescr1;
  35        u32     sc_ltescr2;
  36        u32     sc_pdtea;
  37        u8      sc_pdtem;
  38        u8      res5[3];
  39        u32     sc_ldtea;
  40        u8      sc_ldtem;
  41        u8      res6[163];
  42} sysconf_82xx_cpm2_t;
  43
  44typedef struct sys_85xx_conf {
  45        u32     sc_cear;
  46        u16     sc_ceer;
  47        u16     sc_cemr;
  48        u8      res1[70];
  49        u32     sc_smaer;
  50        u8      res2[4];
  51        u32     sc_smevr;
  52        u32     sc_smctr;
  53        u32     sc_lmaer;
  54        u8      res3[4];
  55        u32     sc_lmevr;
  56        u32     sc_lmctr;
  57        u8      res4[144];
  58} sysconf_85xx_cpm2_t;
  59
  60typedef union sys_conf {
  61        sysconf_82xx_cpm2_t     siu_82xx;
  62        sysconf_85xx_cpm2_t     siu_85xx;
  63} sysconf_cpm2_t;
  64
  65
  66
  67/* Memory controller registers.
  68*/
  69typedef struct  mem_ctlr {
  70        u32     memc_br0;
  71        u32     memc_or0;
  72        u32     memc_br1;
  73        u32     memc_or1;
  74        u32     memc_br2;
  75        u32     memc_or2;
  76        u32     memc_br3;
  77        u32     memc_or3;
  78        u32     memc_br4;
  79        u32     memc_or4;
  80        u32     memc_br5;
  81        u32     memc_or5;
  82        u32     memc_br6;
  83        u32     memc_or6;
  84        u32     memc_br7;
  85        u32     memc_or7;
  86        u32     memc_br8;
  87        u32     memc_or8;
  88        u32     memc_br9;
  89        u32     memc_or9;
  90        u32     memc_br10;
  91        u32     memc_or10;
  92        u32     memc_br11;
  93        u32     memc_or11;
  94        u8      res1[8];
  95        u32     memc_mar;
  96        u8      res2[4];
  97        u32     memc_mamr;
  98        u32     memc_mbmr;
  99        u32     memc_mcmr;
 100        u8      res3[8];
 101        u16     memc_mptpr;
 102        u8      res4[2];
 103        u32     memc_mdr;
 104        u8      res5[4];
 105        u32     memc_psdmr;
 106        u32     memc_lsdmr;
 107        u8      memc_purt;
 108        u8      res6[3];
 109        u8      memc_psrt;
 110        u8      res7[3];
 111        u8      memc_lurt;
 112        u8      res8[3];
 113        u8      memc_lsrt;
 114        u8      res9[3];
 115        u32     memc_immr;
 116        u32     memc_pcibr0;
 117        u32     memc_pcibr1;
 118        u8      res10[16];
 119        u32     memc_pcimsk0;
 120        u32     memc_pcimsk1;
 121        u8      res11[52];
 122} memctl_cpm2_t;
 123
 124/* System Integration Timers.
 125*/
 126typedef struct  sys_int_timers {
 127        u8      res1[32];
 128        u16     sit_tmcntsc;
 129        u8      res2[2];
 130        u32     sit_tmcnt;
 131        u8      res3[4];
 132        u32     sit_tmcntal;
 133        u8      res4[16];
 134        u16     sit_piscr;
 135        u8      res5[2];
 136        u32     sit_pitc;
 137        u32     sit_pitr;
 138        u8      res6[94];
 139        u8      res7[390];
 140} sit_cpm2_t;
 141
 142#define PISCR_PIRQ_MASK         ((u16)0xff00)
 143#define PISCR_PS                ((u16)0x0080)
 144#define PISCR_PIE               ((u16)0x0004)
 145#define PISCR_PTF               ((u16)0x0002)
 146#define PISCR_PTE               ((u16)0x0001)
 147
 148/* PCI Controller.
 149*/
 150typedef struct pci_ctlr {
 151        u32     pci_omisr;
 152        u32     pci_omimr;
 153        u8      res1[8];
 154        u32     pci_ifqpr;
 155        u32     pci_ofqpr;
 156        u8      res2[8];
 157        u32     pci_imr0;
 158        u32     pci_imr1;
 159        u32     pci_omr0;
 160        u32     pci_omr1;
 161        u32     pci_odr;
 162        u8      res3[4];
 163        u32     pci_idr;
 164        u8      res4[20];
 165        u32     pci_imisr;
 166        u32     pci_imimr;
 167        u8      res5[24];
 168        u32     pci_ifhpr;
 169        u8      res6[4];
 170        u32     pci_iftpr;
 171        u8      res7[4];
 172        u32     pci_iphpr;
 173        u8      res8[4];
 174        u32     pci_iptpr;
 175        u8      res9[4];
 176        u32     pci_ofhpr;
 177        u8      res10[4];
 178        u32     pci_oftpr;
 179        u8      res11[4];
 180        u32     pci_ophpr;
 181        u8      res12[4];
 182        u32     pci_optpr;
 183        u8      res13[8];
 184        u32     pci_mucr;
 185        u8      res14[8];
 186        u32     pci_qbar;
 187        u8      res15[12];
 188        u32     pci_dmamr0;
 189        u32     pci_dmasr0;
 190        u32     pci_dmacdar0;
 191        u8      res16[4];
 192        u32     pci_dmasar0;
 193        u8      res17[4];
 194        u32     pci_dmadar0;
 195        u8      res18[4];
 196        u32     pci_dmabcr0;
 197        u32     pci_dmandar0;
 198        u8      res19[86];
 199        u32     pci_dmamr1;
 200        u32     pci_dmasr1;
 201        u32     pci_dmacdar1;
 202        u8      res20[4];
 203        u32     pci_dmasar1;
 204        u8      res21[4];
 205        u32     pci_dmadar1;
 206        u8      res22[4];
 207        u32     pci_dmabcr1;
 208        u32     pci_dmandar1;
 209        u8      res23[88];
 210        u32     pci_dmamr2;
 211        u32     pci_dmasr2;
 212        u32     pci_dmacdar2;
 213        u8      res24[4];
 214        u32     pci_dmasar2;
 215        u8      res25[4];
 216        u32     pci_dmadar2;
 217        u8      res26[4];
 218        u32     pci_dmabcr2;
 219        u32     pci_dmandar2;
 220        u8      res27[88];
 221        u32     pci_dmamr3;
 222        u32     pci_dmasr3;
 223        u32     pci_dmacdar3;
 224        u8      res28[4];
 225        u32     pci_dmasar3;
 226        u8      res29[4];
 227        u32     pci_dmadar3;
 228        u8      res30[4];
 229        u32     pci_dmabcr3;
 230        u32     pci_dmandar3;
 231        u8      res31[344];
 232        u32     pci_potar0;
 233        u8      res32[4];
 234        u32     pci_pobar0;
 235        u8      res33[4];
 236        u32     pci_pocmr0;
 237        u8      res34[4];
 238        u32     pci_potar1;
 239        u8      res35[4];
 240        u32     pci_pobar1;
 241        u8      res36[4];
 242        u32     pci_pocmr1;
 243        u8      res37[4];
 244        u32     pci_potar2;
 245        u8      res38[4];
 246        u32     pci_pobar2;
 247        u8      res39[4];
 248        u32     pci_pocmr2;
 249        u8      res40[50];
 250        u32     pci_ptcr;
 251        u32     pci_gpcr;
 252        u32     pci_gcr;
 253        u32     pci_esr;
 254        u32     pci_emr;
 255        u32     pci_ecr;
 256        u32     pci_eacr;
 257        u8      res41[4];
 258        u32     pci_edcr;
 259        u8      res42[4];
 260        u32     pci_eccr;
 261        u8      res43[44];
 262        u32     pci_pitar1;
 263        u8      res44[4];
 264        u32     pci_pibar1;
 265        u8      res45[4];
 266        u32     pci_picmr1;
 267        u8      res46[4];
 268        u32     pci_pitar0;
 269        u8      res47[4];
 270        u32     pci_pibar0;
 271        u8      res48[4];
 272        u32     pci_picmr0;
 273        u8      res49[4];
 274        u32     pci_cfg_addr;
 275        u32     pci_cfg_data;
 276        u32     pci_int_ack;
 277        u8      res50[756];
 278} pci_cpm2_t;
 279
 280/* Interrupt Controller.
 281*/
 282typedef struct interrupt_controller {
 283        u16     ic_sicr;
 284        u8      res1[2];
 285        u32     ic_sivec;
 286        u32     ic_sipnrh;
 287        u32     ic_sipnrl;
 288        u32     ic_siprr;
 289        u32     ic_scprrh;
 290        u32     ic_scprrl;
 291        u32     ic_simrh;
 292        u32     ic_simrl;
 293        u32     ic_siexr;
 294        u8      res2[88];
 295} intctl_cpm2_t;
 296
 297/* Clocks and Reset.
 298*/
 299typedef struct clk_and_reset {
 300        u32     car_sccr;
 301        u8      res1[4];
 302        u32     car_scmr;
 303        u8      res2[4];
 304        u32     car_rsr;
 305        u32     car_rmr;
 306        u8      res[104];
 307} car_cpm2_t;
 308
 309/* Input/Output Port control/status registers.
 310 * Names consistent with processor manual, although they are different
 311 * from the original 8xx names.......
 312 */
 313typedef struct io_port {
 314        u32     iop_pdira;
 315        u32     iop_ppara;
 316        u32     iop_psora;
 317        u32     iop_podra;
 318        u32     iop_pdata;
 319        u8      res1[12];
 320        u32     iop_pdirb;
 321        u32     iop_pparb;
 322        u32     iop_psorb;
 323        u32     iop_podrb;
 324        u32     iop_pdatb;
 325        u8      res2[12];
 326        u32     iop_pdirc;
 327        u32     iop_pparc;
 328        u32     iop_psorc;
 329        u32     iop_podrc;
 330        u32     iop_pdatc;
 331        u8      res3[12];
 332        u32     iop_pdird;
 333        u32     iop_ppard;
 334        u32     iop_psord;
 335        u32     iop_podrd;
 336        u32     iop_pdatd;
 337        u8      res4[12];
 338} iop_cpm2_t;
 339
 340/* Communication Processor Module Timers
 341*/
 342typedef struct cpm_timers {
 343        u8      cpmt_tgcr1;
 344        u8      res1[3];
 345        u8      cpmt_tgcr2;
 346        u8      res2[11];
 347        u16     cpmt_tmr1;
 348        u16     cpmt_tmr2;
 349        u16     cpmt_trr1;
 350        u16     cpmt_trr2;
 351        u16     cpmt_tcr1;
 352        u16     cpmt_tcr2;
 353        u16     cpmt_tcn1;
 354        u16     cpmt_tcn2;
 355        u16     cpmt_tmr3;
 356        u16     cpmt_tmr4;
 357        u16     cpmt_trr3;
 358        u16     cpmt_trr4;
 359        u16     cpmt_tcr3;
 360        u16     cpmt_tcr4;
 361        u16     cpmt_tcn3;
 362        u16     cpmt_tcn4;
 363        u16     cpmt_ter1;
 364        u16     cpmt_ter2;
 365        u16     cpmt_ter3;
 366        u16     cpmt_ter4;
 367        u8      res3[584];
 368} cpmtimer_cpm2_t;
 369
 370/* DMA control/status registers.
 371*/
 372typedef struct sdma_csr {
 373        u8      res0[24];
 374        u8      sdma_sdsr;
 375        u8      res1[3];
 376        u8      sdma_sdmr;
 377        u8      res2[3];
 378        u8      sdma_idsr1;
 379        u8      res3[3];
 380        u8      sdma_idmr1;
 381        u8      res4[3];
 382        u8      sdma_idsr2;
 383        u8      res5[3];
 384        u8      sdma_idmr2;
 385        u8      res6[3];
 386        u8      sdma_idsr3;
 387        u8      res7[3];
 388        u8      sdma_idmr3;
 389        u8      res8[3];
 390        u8      sdma_idsr4;
 391        u8      res9[3];
 392        u8      sdma_idmr4;
 393        u8      res10[707];
 394} sdma_cpm2_t;
 395
 396/* Fast controllers
 397*/
 398typedef struct fcc {
 399        u32     fcc_gfmr;
 400        u32     fcc_fpsmr;
 401        u16     fcc_ftodr;
 402        u8      res1[2];
 403        u16     fcc_fdsr;
 404        u8      res2[2];
 405        u16     fcc_fcce;
 406        u8      res3[2];
 407        u16     fcc_fccm;
 408        u8      res4[2];
 409        u8      fcc_fccs;
 410        u8      res5[3];
 411        u8      fcc_ftirr_phy[4];
 412} fcc_t;
 413
 414/* Fast controllers continued
 415 */
 416typedef struct fcc_c {
 417        u32     fcc_firper;
 418        u32     fcc_firer;
 419        u32     fcc_firsr_hi;
 420        u32     fcc_firsr_lo;
 421        u8      fcc_gfemr;
 422        u8      res1[15];
 423} fcc_c_t;
 424
 425/* TC Layer
 426 */
 427typedef struct tclayer {
 428        u16     tc_tcmode;
 429        u16     tc_cdsmr;
 430        u16     tc_tcer;
 431        u16     tc_rcc;
 432        u16     tc_tcmr;
 433        u16     tc_fcc;
 434        u16     tc_ccc;
 435        u16     tc_icc;
 436        u16     tc_tcc;
 437        u16     tc_ecc;
 438        u8      res1[12];
 439} tclayer_t;
 440
 441
 442/* I2C
 443*/
 444typedef struct i2c {
 445        u8      i2c_i2mod;
 446        u8      res1[3];
 447        u8      i2c_i2add;
 448        u8      res2[3];
 449        u8      i2c_i2brg;
 450        u8      res3[3];
 451        u8      i2c_i2com;
 452        u8      res4[3];
 453        u8      i2c_i2cer;
 454        u8      res5[3];
 455        u8      i2c_i2cmr;
 456        u8      res6[331];
 457} i2c_cpm2_t;
 458
 459typedef struct scc {            /* Serial communication channels */
 460        u32     scc_gsmrl;
 461        u32     scc_gsmrh;
 462        u16     scc_psmr;
 463        u8      res1[2];
 464        u16     scc_todr;
 465        u16     scc_dsr;
 466        u16     scc_scce;
 467        u8      res2[2];
 468        u16     scc_sccm;
 469        u8      res3;
 470        u8      scc_sccs;
 471        u8      res4[8];
 472} scc_t;
 473
 474typedef struct smc {            /* Serial management channels */
 475        u8      res1[2];
 476        u16     smc_smcmr;
 477        u8      res2[2];
 478        u8      smc_smce;
 479        u8      res3[3];
 480        u8      smc_smcm;
 481        u8      res4[5];
 482} smc_t;
 483
 484/* Serial Peripheral Interface.
 485*/
 486typedef struct spi_ctrl {
 487        u16     spi_spmode;
 488        u8      res1[4];
 489        u8      spi_spie;
 490        u8      res2[3];
 491        u8      spi_spim;
 492        u8      res3[2];
 493        u8      spi_spcom;
 494        u8      res4[82];
 495} spictl_cpm2_t;
 496
 497/* CPM Mux.
 498*/
 499typedef struct cpmux {
 500        u8      cmx_si1cr;
 501        u8      res1;
 502        u8      cmx_si2cr;
 503        u8      res2;
 504        u32     cmx_fcr;
 505        u32     cmx_scr;
 506        u8      cmx_smr;
 507        u8      res3;
 508        u16     cmx_uar;
 509        u8      res4[16];
 510} cpmux_t;
 511
 512/* SIRAM control
 513*/
 514typedef struct siram {
 515        u16     si_amr;
 516        u16     si_bmr;
 517        u16     si_cmr;
 518        u16     si_dmr;
 519        u8      si_gmr;
 520        u8      res1;
 521        u8      si_cmdr;
 522        u8      res2;
 523        u8      si_str;
 524        u8      res3;
 525        u16     si_rsr;
 526} siramctl_t;
 527
 528typedef struct mcc {
 529        u16     mcc_mcce;
 530        u8      res1[2];
 531        u16     mcc_mccm;
 532        u8      res2[2];
 533        u8      mcc_mccf;
 534        u8      res3[7];
 535} mcc_t;
 536
 537typedef struct comm_proc {
 538        u32     cp_cpcr;
 539        u32     cp_rccr;
 540        u8      res1[14];
 541        u16     cp_rter;
 542        u8      res2[2];
 543        u16     cp_rtmr;
 544        u16     cp_rtscr;
 545        u8      res3[2];
 546        u32     cp_rtsr;
 547        u8      res4[12];
 548} cpm_cpm2_t;
 549
 550/* USB Controller.
 551*/
 552typedef struct cpm_usb_ctlr {
 553        u8      usb_usmod;
 554        u8      usb_usadr;
 555        u8      usb_uscom;
 556        u8      res1[1];
 557        __be16  usb_usep[4];
 558        u8      res2[4];
 559        __be16  usb_usber;
 560        u8      res3[2];
 561        __be16  usb_usbmr;
 562        u8      usb_usbs;
 563        u8      res4[7];
 564} usb_cpm2_t;
 565
 566/* ...and the whole thing wrapped up....
 567*/
 568
 569typedef struct immap {
 570        /* Some references are into the unique and known dpram spaces,
 571         * others are from the generic base.
 572         */
 573#define im_dprambase    im_dpram1
 574        u8              im_dpram1[16*1024];
 575        u8              res1[16*1024];
 576        u8              im_dpram2[4*1024];
 577        u8              res2[8*1024];
 578        u8              im_dpram3[4*1024];
 579        u8              res3[16*1024];
 580
 581        sysconf_cpm2_t  im_siu_conf;    /* SIU Configuration */
 582        memctl_cpm2_t   im_memctl;      /* Memory Controller */
 583        sit_cpm2_t      im_sit;         /* System Integration Timers */
 584        pci_cpm2_t      im_pci;         /* PCI Controller */
 585        intctl_cpm2_t   im_intctl;      /* Interrupt Controller */
 586        car_cpm2_t      im_clkrst;      /* Clocks and reset */
 587        iop_cpm2_t      im_ioport;      /* IO Port control/status */
 588        cpmtimer_cpm2_t im_cpmtimer;    /* CPM timers */
 589        sdma_cpm2_t     im_sdma;        /* SDMA control/status */
 590
 591        fcc_t           im_fcc[3];      /* Three FCCs */
 592        u8              res4z[32];
 593        fcc_c_t         im_fcc_c[3];    /* Continued FCCs */
 594
 595        u8              res4[32];
 596
 597        tclayer_t       im_tclayer[8];  /* Eight TCLayers */
 598        u16             tc_tcgsr;
 599        u16             tc_tcger;
 600
 601        /* First set of baud rate generators.
 602        */
 603        u8              res[236];
 604        u32             im_brgc5;
 605        u32             im_brgc6;
 606        u32             im_brgc7;
 607        u32             im_brgc8;
 608
 609        u8              res5[608];
 610
 611        i2c_cpm2_t      im_i2c;         /* I2C control/status */
 612        cpm_cpm2_t      im_cpm;         /* Communication processor */
 613
 614        /* Second set of baud rate generators.
 615        */
 616        u32             im_brgc1;
 617        u32             im_brgc2;
 618        u32             im_brgc3;
 619        u32             im_brgc4;
 620
 621        scc_t           im_scc[4];      /* Four SCCs */
 622        smc_t           im_smc[2];      /* Couple of SMCs */
 623        spictl_cpm2_t   im_spi;         /* A SPI */
 624        cpmux_t         im_cpmux;       /* CPM clock route mux */
 625        siramctl_t      im_siramctl1;   /* First SI RAM Control */
 626        mcc_t           im_mcc1;        /* First MCC */
 627        siramctl_t      im_siramctl2;   /* Second SI RAM Control */
 628        mcc_t           im_mcc2;        /* Second MCC */
 629        usb_cpm2_t      im_usb;         /* USB Controller */
 630
 631        u8              res6[1153];
 632
 633        u16             im_si1txram[256];
 634        u8              res7[512];
 635        u16             im_si1rxram[256];
 636        u8              res8[512];
 637        u16             im_si2txram[256];
 638        u8              res9[512];
 639        u16             im_si2rxram[256];
 640        u8              res10[512];
 641        u8              res11[4096];
 642} cpm2_map_t;
 643
 644extern cpm2_map_t __iomem *cpm2_immr;
 645
 646#endif /* __IMMAP_CPM2__ */
 647#endif /* __KERNEL__ */
 648