~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/powerpc/include/asm/immap_cpm2.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php