root/arch/powerpc/include/asm/immap_cpm2.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */