1 /* SPDX-License-Identifier: GPL-2.0 */
3 * CPM2 Internal Memory Map
4 * Copyright (c) 1999 Dan Malek (dmalek@jlc.net)
6 * The Internal Memory Map for devices with CPM2 on them. This
7 * is the superset of all CPM2 devices (8260, 8266, 8280, 8272,
11 #ifndef __IMMAP_CPM2__
12 #define __IMMAP_CPM2__
14 #include <linux/types.h>
16 /* System configuration registers.
18 typedef struct sys_82xx_conf
{
43 } sysconf_82xx_cpm2_t
;
45 typedef struct sys_85xx_conf
{
59 } sysconf_85xx_cpm2_t
;
61 typedef union sys_conf
{
62 sysconf_82xx_cpm2_t siu_82xx
;
63 sysconf_85xx_cpm2_t siu_85xx
;
68 /* Memory controller registers.
70 typedef struct mem_ctlr
{
125 /* System Integration Timers.
127 typedef struct sys_int_timers
{
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)
151 typedef struct pci_ctlr
{
281 /* Interrupt Controller.
283 typedef struct interrupt_controller
{
300 typedef struct clk_and_reset
{
310 /* Input/Output Port control/status registers.
311 * Names consistent with processor manual, although they are different
312 * from the original 8xx names.......
314 typedef struct io_port
{
341 /* Communication Processor Module Timers
343 typedef struct cpm_timers
{
371 /* DMA control/status registers.
373 typedef struct sdma_csr
{
415 /* Fast controllers continued
417 typedef struct fcc_c
{
428 typedef struct tclayer
{
460 typedef struct scc
{ /* Serial communication channels */
475 typedef struct smc
{ /* Serial management channels */
485 /* Serial Peripheral Interface.
487 typedef struct spi_ctrl
{
500 typedef struct cpmux
{
515 typedef struct siram
{
538 typedef struct comm_proc
{
553 typedef struct cpm_usb_ctlr
{
567 /* ...and the whole thing wrapped up....
570 typedef struct immap
{
571 /* Some references are into the unique and known dpram spaces,
572 * others are from the generic base.
574 #define im_dprambase im_dpram1
575 u8 im_dpram1
[16*1024];
577 u8 im_dpram2
[4*1024];
579 u8 im_dpram3
[4*1024];
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 */
592 fcc_t im_fcc
[3]; /* Three FCCs */
594 fcc_c_t im_fcc_c
[3]; /* Continued FCCs */
598 tclayer_t im_tclayer
[8]; /* Eight TCLayers */
602 /* First set of baud rate generators.
612 i2c_cpm2_t im_i2c
; /* I2C control/status */
613 cpm_cpm2_t im_cpm
; /* Communication processor */
615 /* Second set of baud rate generators.
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 */
634 u16 im_si1txram
[256];
636 u16 im_si1rxram
[256];
638 u16 im_si2txram
[256];
640 u16 im_si2rxram
[256];
645 extern cpm2_map_t __iomem
*cpm2_immr
;
647 #endif /* __IMMAP_CPM2__ */
648 #endif /* __KERNEL__ */