Loading...
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*/
18typedef 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
45typedef 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
61typedef 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*/
70typedef 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*/
127typedef 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*/
151typedef 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*/
283typedef 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*/
300typedef 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 */
314typedef 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*/
343typedef 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*/
373typedef 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*/
399typedef 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 */
417typedef 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 */
428typedef 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*/
445typedef 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
460typedef 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
475typedef 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*/
487typedef 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*/
500typedef 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*/
515typedef 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
529typedef 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
538typedef 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*/
553typedef 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
570typedef 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
645extern cpm2_map_t __iomem *cpm2_immr;
646
647#endif /* __IMMAP_CPM2__ */
648#endif /* __KERNEL__ */
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__ */