2 * CPM2 Internal Memory Map
3 * Copyright (c) 1999 Dan Malek (dmalek@jlc.net)
5 * The Internal Memory Map for devices with CPM2 on them. This
6 * is the superset of all CPM2 devices (8260, 8266, 8280, 8272,
10 #ifndef __IMMAP_CPM2__
11 #define __IMMAP_CPM2__
13 #include <linux/types.h>
15 /* System configuration registers.
17 typedef struct sys_82xx_conf {
42 } sysconf_82xx_cpm2_t;
44 typedef struct sys_85xx_conf {
58 } sysconf_85xx_cpm2_t;
60 typedef union sys_conf {
61 sysconf_82xx_cpm2_t siu_82xx;
62 sysconf_85xx_cpm2_t siu_85xx;
67 /* Memory controller registers.
69 typedef struct mem_ctlr {
124 /* System Integration Timers.
126 typedef struct sys_int_timers {
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)
150 typedef struct pci_ctlr {
280 /* Interrupt Controller.
282 typedef struct interrupt_controller {
299 typedef struct clk_and_reset {
309 /* Input/Output Port control/status registers.
310 * Names consistent with processor manual, although they are different
311 * from the original 8xx names.......
313 typedef struct io_port {
340 /* Communication Processor Module Timers
342 typedef struct cpm_timers {
370 /* DMA control/status registers.
372 typedef struct sdma_csr {
414 /* Fast controllers continued
416 typedef struct fcc_c {
427 typedef struct tclayer {
459 typedef struct scc { /* Serial communication channels */
474 typedef struct smc { /* Serial management channels */
484 /* Serial Peripheral Interface.
486 typedef struct spi_ctrl {
499 typedef struct cpmux {
514 typedef struct siram {
537 typedef struct comm_proc {
552 typedef struct usb_ctlr {
566 /* ...and the whole thing wrapped up....
569 typedef struct immap {
570 /* Some references are into the unique and known dpram spaces,
571 * others are from the generic base.
573 #define im_dprambase im_dpram1
574 u8 im_dpram1[16*1024];
576 u8 im_dpram2[4*1024];
578 u8 im_dpram3[4*1024];
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 */
591 fcc_t im_fcc[3]; /* Three FCCs */
593 fcc_c_t im_fcc_c[3]; /* Continued FCCs */
597 tclayer_t im_tclayer[8]; /* Eight TCLayers */
601 /* First set of baud rate generators.
611 i2c_cpm2_t im_i2c; /* I2C control/status */
612 cpm_cpm2_t im_cpm; /* Communication processor */
614 /* Second set of baud rate generators.
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 */
633 u16 im_si1txram[256];
635 u16 im_si1rxram[256];
637 u16 im_si2txram[256];
639 u16 im_si2rxram[256];
644 extern cpm2_map_t __iomem *cpm2_immr;
646 #endif /* __IMMAP_CPM2__ */
647 #endif /* __KERNEL__ */