diff packages/hal/powerpc/fads/current/src/ppc_860.h @ 14:01ce82f3e11a ecos-sw-1999-06-11

Merge from eCos master repository on 1999-06-11-17:05:41-BST
author jlarmour
date Fri, 11 Jun 1999 09:36:56 +0000
parents
children c38311975d4f
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/hal/powerpc/fads/current/src/ppc_860.h
@@ -0,0 +1,1312 @@
+#ifndef CYGONCE_HAL_PPC_FADS_PPC_860_H
+#define CYGONCE_HAL_PPC_FADS_PPC_860_H
+
+//=============================================================================
+//####UNSUPPORTEDBEGIN####
+//
+// -------------------------------------------
+// This source file has been contributed to eCos/Cygnus. It may have been
+// changed slightly to provide an interface consistent with those of other 
+// files.
+//
+// The functionality and contents of this file is supplied "AS IS"
+// without any form of support and will not necessarily be kept up
+// to date by Cygnus.
+//
+// The style of programming used in this file may not comply with the
+// eCos programming guidelines. Please do not use as a base for other
+// files.
+//
+// All inquiries about this file, or the functionality provided by it,
+// should be directed to the 'ecos-discuss' mailing list (see
+// http://sourceware.cygnus.com/ecos/intouch.html for details).
+//
+// Contributed by: Kevin Hester <khester@opticworks.com>
+// Maintained by:  <Unmaintained>
+// See also:
+//   Motorola's "Example Software Initializing the SMC as a UART" package 
+//   (smc2.zip) at:
+//    http://www.mot.com/SPS/RISC/netcomm/tools/index.html#MPC860_table
+// -------------------------------------------
+//
+//####UNSUPPORTEDEND####
+//=============================================================================
+
+#include <cyg/infra/cyg_type.h>
+
+/******************************************************************************
+*
+* Definitions of Parameter RAM entries for each peripheral and mode
+*
+******************************************************************************/
+
+/*---------------------------------------------------------------------------*/
+/*      HDLC parameter RAM (SCC)                                             */
+/*---------------------------------------------------------------------------*/
+
+struct hdlc_pram 
+
+{
+       
+   /*-------------------*/
+   /* SCC parameter RAM */
+   /*-------------------*/
+   
+   cyg_uint16   rbase;          /* RX BD base address */
+   cyg_uint16   tbase;          /* TX BD base address */
+   cyg_uint8       rfcr;                   /* Rx function code */
+   cyg_uint8       tfcr;                   /* Tx function code */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rtemp;               /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32      ttemp;               /* Tx temp */
+   cyg_uint32      rcrc;                   /* temp receive CRC */
+   cyg_uint32      tcrc;                   /* temp transmit CRC */
+   
+   /*-----------------------------*/
+   /* HDLC specific parameter RAM */
+   /*-----------------------------*/
+
+   cyg_uint8       RESERVED1[4];        /* Reserved area */
+   cyg_uint32      c_mask;                      /* CRC constant */
+   cyg_uint32      c_pres;                      /* CRC preset */
+   cyg_uint16   disfc;                  /* discarded frame counter */
+   cyg_uint16   crcec;                  /* CRC error counter */
+   cyg_uint16   abtsc;                  /* abort sequence counter */
+   cyg_uint16   nmarc;                  /* nonmatching address rx cnt */
+   cyg_uint16   retrc;                  /* frame retransmission cnt */
+   cyg_uint16   mflr;                      /* maximum frame length reg */
+   cyg_uint16   max_cnt;                   /* maximum length counter */
+   cyg_uint16   rfthr;                  /* received frames threshold */
+   cyg_uint16   rfcnt;                  /* received frames count */
+   cyg_uint16   hmask;                  /* user defined frm addr mask */
+   cyg_uint16   haddr1;                 /* user defined frm address 1 */
+   cyg_uint16   haddr2;                 /* user defined frm address 2 */
+   cyg_uint16   haddr3;                 /* user defined frm address 3 */
+   cyg_uint16   haddr4;                 /* user defined frm address 4 */
+   cyg_uint16   tmp;                       /* temp */
+   cyg_uint16   tmp_mb;                 /* temp */
+};
+
+
+/*-------------------------------------------------------------------------*/
+/*                       ASYNC HDLC parameter RAM (SCC)                                                  */
+/*-------------------------------------------------------------------------*/
+
+struct async_hdlc_pram 
+
+{
+       
+   /*-------------------*/
+   /* SCC parameter RAM */
+   /*-------------------*/
+
+   cyg_uint16   rbase;          /* RX BD base address */
+   cyg_uint16   tbase;          /* TX BD base address */
+   cyg_uint8       rfcr;                   /* Rx function code */
+   cyg_uint8       tfcr;                   /* Tx function code */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rtemp;               /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32   ttemp;          /* Tx temp */
+   cyg_uint32      rcrc;                   /* temp receive CRC */
+   cyg_uint32    tcrc;             /* temp transmit CRC */
+         
+   /*-----------------------------------*/
+   /* ASYNC HDLC specific parameter RAM */
+   /*-----------------------------------*/
+
+   cyg_uint8       RESERVED2[4];        /* Reserved area */
+   cyg_uint32      c_mask;                      /* CRC constant */
+   cyg_uint32      c_pres;                      /* CRC preset */
+   cyg_uint16   bof;                       /* begining of flag character */
+   cyg_uint16   eof;                       /* end of flag character */
+   cyg_uint16   esc;                       /* control escape character */
+   cyg_uint8       RESERVED3[4];        /* Reserved area */
+   cyg_uint16   zero;                      /* zero */
+   cyg_uint8       RESERVED4[2];        /* Reserved area */
+   cyg_uint16   rfthr;                  /* received frames threshold */
+   cyg_uint8       RESERVED5[4];        /* Reserved area */
+   cyg_uint32      txctl_tbl;           /* Tx ctl char mapping table */
+   cyg_uint32      rxctl_tbl;           /* Rx ctl char mapping table */
+   cyg_uint16   nof;                       /* Number of opening flags */
+};
+
+
+/*--------------------------------------------------------------------------*/
+/*                    UART parameter RAM (SCC)                                                                 */
+/*--------------------------------------------------------------------------*/
+
+/*----------------------------------------*/
+/* bits in uart control characters table  */
+/*----------------------------------------*/
+
+#define CC_INVALID      0x8000          /* control character is valid */
+#define CC_REJ          0x4000          /* don't store char in buffer */
+#define CC_CHAR         0x00ff          /* control character */
+
+/*------*/
+/* UART */
+/*------*/
+
+struct uart_pram 
+
+{
+   /*-------------------*/
+   /* SCC parameter RAM */
+   /*-------------------*/
+
+   cyg_uint16   rbase;          /* RX BD base address */
+   cyg_uint16   tbase;          /* TX BD base address */
+   cyg_uint8       rfcr;                   /* Rx function code */
+   cyg_uint8       tfcr;                   /* Tx function code */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rx_temp;        /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32      ttemp;               /* Tx temp */
+   cyg_uint32      rcrc;                   /* temp receive CRC */
+   cyg_uint32      tcrc;                   /* temp transmit CRC */
+
+   /*------------------------------*/
+   /*   UART specific parameter RAM  */
+   /*------------------------------*/
+
+   cyg_uint8       RESERVED6[8];        /* Reserved area */
+   cyg_uint16   max_idl;                   /* maximum idle characters */
+   cyg_uint16   idlc;                      /* rx idle counter (internal) */
+   cyg_uint16   brkcr;                  /* break count register */
+
+   cyg_uint16   parec;                  /* Rx parity error counter */
+   cyg_uint16   frmec;                  /* Rx framing error counter */
+   cyg_uint16   nosec;                  /* Rx noise counter */
+   cyg_uint16   brkec;                  /* Rx break character counter */
+   cyg_uint16   brkln;                  /* Reaceive break length */
+                                           
+   cyg_uint16   uaddr1;                 /* address character 1 */
+   cyg_uint16   uaddr2;                 /* address character 2 */
+   cyg_uint16   rtemp;                  /* temp storage */
+   cyg_uint16   toseq;                  /* Tx out of sequence char */
+   cyg_uint16   cc[8];                  /* Rx control characters */
+   cyg_uint16   rccm;                      /* Rx control char mask */
+   cyg_uint16   rccr;                      /* Rx control char register */
+   cyg_uint16   rlbc;                      /* Receive last break char */
+};
+
+
+/*---------------------------------------------------------------------------
+*                    BISYNC parameter RAM (SCC)
+*--------------------------------------------------------------------------*/
+
+struct bisync_pram 
+
+{
+   /*-------------------*/
+   /* SCC parameter RAM */
+   /*-------------------*/
+
+   cyg_uint16   rbase;          /* RX BD base address */
+   cyg_uint16   tbase;          /* TX BD base address */
+   cyg_uint8       rfcr;                   /* Rx function code */
+   cyg_uint8       tfcr;                   /* Tx function code */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rtemp;               /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32      ttemp;               /* Tx temp */
+   cyg_uint32      rcrc;                   /* temp receive CRC */
+   cyg_uint32      tcrc;                   /* temp transmit CRC */
+
+   /*--------------------------------*/
+   /*   BISYNC specific parameter RAM */
+   /*--------------------------------*/
+
+   cyg_uint8       RESERVED7[4];        /* Reserved area */
+   cyg_uint32      crcc;                           /* CRC Constant Temp Value */
+   cyg_uint16   prcrc;                  /* Preset Receiver CRC-16/LRC */
+   cyg_uint16   ptcrc;                  /* Preset Transmitter CRC-16/LRC */
+   cyg_uint16   parec;                  /* Receive Parity Error Counter */
+   cyg_uint16   bsync;                  /* BISYNC SYNC Character */
+   cyg_uint16   bdle;                      /* BISYNC DLE Character */
+   cyg_uint16   cc[8];                  /* Rx control characters */
+   cyg_uint16   rccm;                      /* Receive Control Character Mask */
+};
+
+
+/*-------------------------------------------------------------------------*/
+/*             Transparent mode parameter RAM (SCC)                                                */
+/*-------------------------------------------------------------------------*/
+
+struct transparent_pram 
+
+{
+   /*--------------------*/
+   /*   SCC parameter RAM */
+   /*--------------------*/
+
+   cyg_uint16   rbase;          /* RX BD base address */
+   cyg_uint16   tbase;          /* TX BD base address */
+   cyg_uint8       rfcr;                   /* Rx function code */
+   cyg_uint8       tfcr;                   /* Tx function code */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rtemp;               /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32      ttemp;               /* Tx temp */
+   cyg_uint32      rcrc;                   /* temp receive CRC */
+   cyg_uint32      tcrc;                   /* temp transmit CRC */
+
+   /*-------------------------------------*/
+   /*   TRANSPARENT specific parameter RAM */
+   /*-------------------------------------*/
+
+   cyg_uint32   crc_p;          /* CRC Preset */
+   cyg_uint32   crc_c;          /* CRC constant */
+};
+
+
+/*-------------------------------------------------------------------------*/ 
+/*                    Ethernet parameter RAM (SCC)                                                       */
+/*-------------------------------------------------------------------------*/
+
+struct ethernet_pram 
+
+{
+   /*--------------------*/
+   /*   SCC parameter RAM */
+   /*--------------------*/
+
+   cyg_uint16   rbase;          /* RX BD base address */
+   cyg_uint16   tbase;          /* TX BD base address */
+   cyg_uint8       rfcr;                   /* Rx function code */
+   cyg_uint8       tfcr;                   /* Tx function code */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rtemp;               /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32      ttemp;               /* Tx temp */
+   cyg_uint32      rcrc;                   /* temp receive CRC */
+   cyg_uint32      tcrc;                   /* temp transmit CRC */
+
+   /*---------------------------------*/
+   /*   ETHERNET specific parameter RAM */
+   /*---------------------------------*/
+
+   cyg_uint32      c_pres;                      /* preset CRC */
+   cyg_uint32      c_mask;                      /* constant mask for CRC */
+   cyg_uint32      crcec;                       /* CRC error counter */
+   cyg_uint32      alec;                           /* alighnment error counter */
+   cyg_uint32      disfc;                       /* discard frame counter */
+   cyg_uint16   pads;                      /* short frame PAD characters */
+   cyg_uint16   ret_lim;                   /* retry limit threshold */
+   cyg_uint16   ret_cnt;                   /* retry limit counter */
+   cyg_uint16   mflr;                      /* maximum frame length reg */
+   cyg_uint16   minflr;                 /* minimum frame length reg */
+   cyg_uint16   maxd1;                  /* maximum DMA1 length reg */
+   cyg_uint16   maxd2;                  /* maximum DMA2 length reg */
+   cyg_uint16   maxd;                      /* rx max DMA */
+   cyg_uint16   dma_cnt;                   /* rx dma counter */
+   cyg_uint16   max_b;                  /* max bd byte count */
+   cyg_uint16   gaddr1;                 /* group address filter 1 */
+   cyg_uint16   gaddr2;                 /* group address filter 2 */
+   cyg_uint16   gaddr3;                 /* group address filter 3 */
+   cyg_uint16   gaddr4;                 /* group address filter 4 */
+   cyg_uint32      tbuf0_data0; /* save area 0 - current frm */
+   cyg_uint32      tbuf0_data1; /* save area 1 - current frm */
+   cyg_uint32      tbuf0_rba0;
+   cyg_uint32      tbuf0_crc;
+   cyg_uint16   tbuf0_bcnt;
+   cyg_uint16   paddr_h;                   /* physical address (MSB) */
+   cyg_uint16   paddr_m;                   /* physical address */
+   cyg_uint16   paddr_l;                   /* physical address (LSB) */
+   cyg_uint16   p_per;                  /* persistence */
+   cyg_uint16   rfbd_ptr;               /* rx first bd pointer */
+   cyg_uint16   tfbd_ptr;               /* tx first bd pointer */
+   cyg_uint16   tlbd_ptr;               /* tx last bd pointer */
+   cyg_uint32      tbuf1_data0; /* save area 0 - next frame */
+   cyg_uint32      tbuf1_data1; /* save area 1 - next frame */
+   cyg_uint32      tbuf1_rba0;
+   cyg_uint32      tbuf1_crc;
+   cyg_uint16   tbuf1_bcnt;
+   cyg_uint16   tx_len;                 /* tx frame length counter */
+   cyg_uint16   iaddr1;                 /* individual address filter 1*/
+   cyg_uint16   iaddr2;                 /* individual address filter 2*/
+   cyg_uint16   iaddr3;                 /* individual address filter 3*/
+   cyg_uint16   iaddr4;                 /* individual address filter 4*/
+   cyg_uint16   boff_cnt;               /* back-off counter */
+   cyg_uint16   taddr_h;                   /* temp address (MSB) */
+   cyg_uint16   taddr_m;                   /* temp address */
+   cyg_uint16   taddr_l;                   /* temp address (LSB) */
+};
+
+
+/*------------------------------------------------------------------*/
+/*                          QMC  definitions                                       */
+/*------------------------------------------------------------------*/
+
+
+struct global_qmc_pram {
+
+    cyg_uint32   mcbase;                /* Multichannel Base pointer */
+    cyg_uint16  qmcstate;       /* Multichannel Controller state */
+    cyg_uint16  mrblr;          /* Maximum Receive Buffer Length */
+    cyg_uint16  tx_s_ptr;   /* TSATTx Pointer */
+    cyg_uint16  rxptr;     /* Current Time slot entry in TSATRx */
+    cyg_uint16  grfthr;         /* Global Receive frame threshold */
+    cyg_uint16  grfcnt;         /* Global Receive Frame Count */
+    cyg_uint32   intbase;               /* Multichannel Base address */
+    cyg_uint32   intptr;                /* Pointer to interrupt queue */
+    cyg_uint16  rx_s_ptr;   /* TSATRx Pointer */
+    cyg_uint16  txptr;     /* Current Time slot entry in TSATTx */
+    cyg_uint32   c_mask32;      /* CRC Constant (debb20e3) */
+    cyg_uint16  tsatrx[32];     /* Time Slot Assignment Table Rx */
+    cyg_uint16  tsattx[32];     /* Time Slot Assignment Table Tx */
+    cyg_uint16  c_mask16;       /* CRC Constant (f0b8) */
+
+};
+
+
+   /*------------------------------------------*/
+   /* QMC HDLC channel specific parameter RAM  */
+   /*------------------------------------------*/
+
+struct qmc_hdlc_pram {
+
+    cyg_uint16  tbase;  /* Tx Buffer Descriptors Base Address */
+    cyg_uint16  chamr;  /* Channel Mode Register */
+    cyg_uint32   tstate;        /* Tx Internal State */
+    cyg_uint32   txintr;        /* Tx Internal Data Pointer */
+    cyg_uint16  tbptr;  /* Tx Buffer Descriptor Pointer */
+    cyg_uint16  txcntr; /* Tx Internal Byte Count */
+    cyg_uint32   tupack;        /* (Tx Temp) */
+    cyg_uint32   zistate;       /* Zero Insertion machine state */
+    cyg_uint32   tcrc;          /* Temp Transmit CRC */
+    cyg_uint16  intmsk; /* Channel's interrupt mask flags */
+    cyg_uint16  bdflags;                
+    cyg_uint16  rbase;  /* Rx Buffer Descriptors Base Address */
+    cyg_uint16  mflr;           /* Max Frame Length Register */
+    cyg_uint32   rstate;        /* Rx Internal State */
+    cyg_uint32   rxintr;        /* Rx Internal Data Pointer */
+    cyg_uint16  rbptr;  /* Rx Buffer Descriptor Pointer */
+    cyg_uint16  rxbyc;  /* Rx Internal Byte Count */
+    cyg_uint32   rpack; /* (Rx Temp) */
+    cyg_uint32   zdstate;       /* Zero Deletion machine state */
+    cyg_uint32   rcrc;          /* Temp Transmit CRC */
+    cyg_uint16  maxc;           /* Max_length counter */
+    cyg_uint16  tmp_mb; /* Temp */
+};
+
+
+         /*-------------------------------------------------*/
+         /* QMC Transparent channel specific parameter RAM  */
+         /*-------------------------------------------------*/
+
+struct qmc_tran_pram {
+    
+        cyg_uint16      tbase;          /* Tx Bufer Descriptors Base Address */
+        cyg_uint16      chamr;          /* Channel Mode Register */
+        cyg_uint32   tstate;            /* Tx Internal State */
+    cyg_uint32   txintr;                /* Tx Internal Data Pointer */
+    cyg_uint16  tbptr;          /* Tx Buffer Descriptor Pointer */
+    cyg_uint16  txcntr;         /* Tx Internal Byte Count */
+    cyg_uint32   tupack;                /* (Tx Temp) */
+    cyg_uint32   zistate;               /* Zero Insertion machine state */
+    cyg_uint32   RESERVED8;     
+    cyg_uint16  intmsk;         /* Channel's interrupt mask flags */
+    cyg_uint16  bdflags;                
+    cyg_uint16  rbase;          /* Rx Buffer Descriptors Base Address */
+    cyg_uint16  tmrblr;         /* Max receive buffer length */
+    cyg_uint32   rstate;                /* Rx Internal State */
+    cyg_uint32   rxintr;                /* Rx Internal Data Pointer */
+    cyg_uint16  rbptr;          /* Rx Buffer Descriptor Pointer */
+    cyg_uint16  rxbyc;          /* Rx Internal Byte Count */
+    cyg_uint32   rpack;         /* (Rx Temp) */
+    cyg_uint32   zdstate;               /* Zero Deletion machine state */
+    cyg_uint32   RESERVED9;     /* Temp Transmit CRC */
+    cyg_uint16  trnsync;                /* Max_length counter */
+    cyg_uint16  RESERVED10;     /* Temp */
+
+};
+
+/*----------------------------------------------------------*/
+/* allows multiprotocol array declaration in the memory map */
+/*----------------------------------------------------------*/
+
+struct qmc_chan_pram
+{
+        union
+        {
+                struct qmc_hdlc_pram h;
+                struct qmc_tran_pram t;
+        }h_or_t;
+};
+
+
+
+/*--------------------------------------------------------------------*/
+/*                          SMC UART parameter RAM                            */
+/*--------------------------------------------------------------------*/
+
+struct smc_uart_pram 
+
+{
+   cyg_uint16   rbase;          /* Rx BD Base Address */
+   cyg_uint16   tbase;          /* Tx BD Base Address */
+   cyg_uint8       rfcr;                   /* Rx function code */
+   cyg_uint8       tfcr;                   /* Tx function code */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rtemp;               /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32      ttemp;               /* Tx temp */
+   cyg_uint16   max_idl;           /* Maximum IDLE Characters */
+   cyg_uint16   idlc;              /* Temporary IDLE Counter */
+   cyg_uint16   brkln;          /* Last Rx Break Length */
+   cyg_uint16   brkec;          /* Rx Break Condition Counter */
+   cyg_uint16   brkcr;          /* Break Count Register (Tx) */
+   cyg_uint16   r_mask;         /* Temporary bit mask */
+};
+
+
+/*--------------------------------------------------------------------------*/
+/*                  SMC Transparent mode parameter RAM                                              */
+/*--------------------------------------------------------------------------*/
+
+struct smc_trnsp_pram 
+
+{
+   cyg_uint16   rbase;                  /* Rx BD Base Address */
+   cyg_uint16   tbase;                  /* Tx BD Base Address */
+   cyg_uint8       rfcr;                           /* Rx function code */
+   cyg_uint8       tfcr;                           /* Tx function code */
+   cyg_uint16   mrblr;                  /* Rx buffer length */
+   cyg_uint32      rstate;                      /* Rx internal state */
+   cyg_uint32      rptr;                           /* Rx internal data pointer */
+   cyg_uint16   rbptr;                  /* rb BD Pointer */
+   cyg_uint16   rcount;                 /* Rx internal byte count */
+   cyg_uint32      rtemp;                       /* Rx temp */
+   cyg_uint32      tstate;                      /* Tx internal state */
+   cyg_uint32      tptr;                           /* Tx internal data pointer */
+   cyg_uint16   tbptr;                  /* Tx BD pointer */
+   cyg_uint16   tcount;                 /* Tx byte count */
+   cyg_uint32      ttemp;                       /* Tx temp */
+   cyg_uint16   RESERVED11[5];  /* Reserved */
+};
+
+
+/*--------------------------------------------------------------------------*/
+/*                      SPI parameter RAM                                                                                 */
+/*--------------------------------------------------------------------------*/
+
+#define SPI_R   0x8000          /* Ready bit in BD */
+
+struct spi_pram 
+
+{
+   cyg_uint16   rbase;          /* Rx BD Base Address */
+   cyg_uint16   tbase;          /* Tx BD Base Address */
+   cyg_uint8       rfcr;                   /* Rx function code */
+   cyg_uint8       tfcr;                   /* Tx function code */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rtemp;               /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32      ttemp;               /* Tx temp */
+
+    cyg_uint8     RESERVED12[8]; /* Reserved */
+};
+
+
+/*--------------------------------------------------------------------------*/
+/*                       I2C parameter RAM                                                                             */
+/*--------------------------------------------------------------------------*/
+
+struct i2c_pram 
+
+{
+   /*--------------------*/
+   /*   I2C parameter RAM */
+   /*--------------------*/
+
+   cyg_uint16   rbase;          /* RX BD base address */
+   cyg_uint16   tbase;          /* TX BD base address */
+   cyg_uint8       rfcr;                   /* Rx function code */
+   cyg_uint8       tfcr;                   /* Tx function code */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rtemp;               /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32      ttemp;               /* Tx temp */
+
+    cyg_uint8     RESERVED13[8];    
+};
+
+/*--------------------------------------------------------------------------*/
+/*                       MISC parameter RAM                                                                             */
+/*--------------------------------------------------------------------------*/
+
+struct misc_pram 
+{
+    cyg_uint8    RESERVED14[16];
+};
+
+
+
+/*--------------------------------------------------------------------------*/
+/*                      PIP Centronics parameter RAM                                                   */
+/*--------------------------------------------------------------------------*/
+
+struct centronics_pram 
+
+{
+   cyg_uint16   rbase;          /* Rx BD Base Address */
+   cyg_uint16   tbase;          /* Tx BD Base Address */
+   cyg_uint8       fcr;            /* function code */
+   cyg_uint8       smask;               /* Status Mask */
+   cyg_uint16   mrblr;          /* Rx buffer length */
+   cyg_uint32      rstate;              /* Rx internal state */
+   cyg_uint32      rptr;                   /* Rx internal data pointer */
+   cyg_uint16   rbptr;          /* rb BD Pointer */
+   cyg_uint16   rcount;         /* Rx internal byte count */
+   cyg_uint32      rtemp;               /* Rx temp */
+   cyg_uint32      tstate;              /* Tx internal state */
+   cyg_uint32      tptr;                   /* Tx internal data pointer */
+   cyg_uint16   tbptr;          /* Tx BD pointer */
+   cyg_uint16   tcount;         /* Tx byte count */
+   cyg_uint32      ttemp;               /* Tx temp */
+   cyg_uint16   max_sl;         /* Maximum Silence period */
+   cyg_uint16   sl_cnt;         /* Silence Counter */
+   cyg_uint16   char1;          /* CONTROL char 1 */
+   cyg_uint16   char2;          /* CONTROL char 2 */
+   cyg_uint16   char3;          /* CONTROL char 3 */
+   cyg_uint16   char4;          /* CONTROL char 4 */
+   cyg_uint16   char5;          /* CONTROL char 5 */
+   cyg_uint16   char6;          /* CONTROL char 6 */
+   cyg_uint16   char7;          /* CONTROL char 7 */
+   cyg_uint16   char8;          /* CONTROL char 8 */
+   cyg_uint16   rccm;              /* Rx Control Char Mask */
+   cyg_uint16   rccr;              /* Rx Char Control Register */
+};
+
+
+/*--------------------------------------------------------------------------*/
+/*                                                      IDMA parameter RAM                                                                           */
+/*--------------------------------------------------------------------------*/
+
+struct idma_pram 
+
+{
+   cyg_uint16 ibase;        /* IDMA BD Base Address */
+   cyg_uint16 dcmr;       /* DMA Channel Mode Register */
+   cyg_uint32  sapr;       /* Source Internal Data Pointer */
+   cyg_uint32  dapr;       /* Destination Internal Data Pointer */
+   cyg_uint16 ibptr;      /* Buffer Descriptor Pointer */
+   cyg_uint16 write_sp;   /* No description given in manual */
+   cyg_uint32  s_byte_c;   /* Internal Source Byte Count */
+   cyg_uint32  d_byte_c;   /* Internal Destination Byte Count */
+   cyg_uint32  s_state;    /* Internal State */
+   cyg_uint32  itemp0;     /* Temp Data Storage */
+   cyg_uint32  itemp1;     /* Temp Data Storage */
+   cyg_uint32  itemp2;     /* Temp Data Storage */
+   cyg_uint32  itemp3;     /* Temp Data Storage */
+   cyg_uint32  sr_mem;     /* Data Storage for Peripherial Write */
+   cyg_uint16 read_sp;    /* No description given in manual */
+   cyg_uint16 nodesc0;    /* Diff Between Source and Destination Residue*/
+   cyg_uint16 nodesc1;    /* Temp Storage Address Pointer */
+   cyg_uint16 nodesc2;    /* SR_MEM Byte Count */
+   cyg_uint32  d_state;    /* Internal State */
+};
+
+
+
+/*--------------------------------------------------------------------------*/
+/*                                      RISC timer parameter RAM                                                                     */
+/*--------------------------------------------------------------------------*/
+
+struct timer_pram 
+
+{
+   /*----------------------------*/
+   /*   RISC timers parameter RAM */
+   /*----------------------------*/
+
+   cyg_uint16   tm_base;           /* RISC timer table base adr */
+   cyg_uint16   tm_ptr;         /* RISC timer table pointer */
+   cyg_uint16   r_tmr;          /* RISC timer mode register */
+   cyg_uint16   r_tmv;          /* RISC timer valid register */
+   cyg_uint32      tm_cmd;              /* RISC timer cmd register */
+   cyg_uint32      tm_cnt;              /* RISC timer internal cnt */
+};
+
+
+/*--------------------------------------------------------------------------*/
+/*                                              ROM Microcode parameter RAM                                                               */
+/*--------------------------------------------------------------------------*/
+
+struct ucode_pram 
+
+{
+   /*---------------------------*/
+   /*   RISC ucode parameter RAM */
+   /*---------------------------*/
+
+   cyg_uint16   rev_num;    /* Ucode Revision Number */
+   cyg_uint16   d_ptr;          /* MISC Dump area pointer */
+   cyg_uint32      temp1;               /* MISC Temp1 */
+   cyg_uint32      temp2;               /* MISC Temp2 */
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Example structuring of user data area of memory at 0x2000 (base of DPRAM) */
+/* Note that this area can also be used by microcodes and the QMC channel        */
+/* specific parameter ram.                                                                                                       */
+/*---------------------------------------------------------------------------*/
+
+struct user_data
+
+{
+
+   volatile cyg_uint8   udata_bd_ucode[0x200];  /* user data bd's or Ucode (small)  */
+   volatile cyg_uint8   udata_bd_ucode2[0x200]; /* user data bd's or Ucode (medium) */
+   volatile cyg_uint8   udata_bd_ucode3[0x400]; /* user data bd's or Ucode (large)  */
+   volatile cyg_uint8   udata_bd[0x700];                        /* user data bd's*/
+   volatile cyg_uint8   ucode_ext[0x100];                       /* Ucode Extension ram*/
+   volatile cyg_uint8   RESERVED12[0x0c00];             /* Reserved area */
+
+};
+
+
+
+/***************************************************************************/
+/*                                                                                                                                                                   */
+/*      Definitions of Embedded PowerPC (EPPC) internal memory structures,         */
+/*  including registers and dual-port RAM                                                                           */
+/*                                                                                                                                                                   */
+/***************************************************************************/
+
+typedef struct eppc 
+
+{
+   /*-----------------------------------*/
+   /* BASE + 0x0000: INTERNAL REGISTERS */
+   /*-----------------------------------*/
+
+   /*-----*/
+   /* SIU */
+   /*-----*/
+
+   volatile cyg_uint32  siu_mcr;                      /* module configuration reg */
+   volatile cyg_uint32  siu_sypcr;                 /* System protection cnt */
+   cyg_uint8    RESERVED13[0x6];
+   volatile cyg_uint16  siu_swsr;                  /* sw service */
+   volatile cyg_uint32  siu_sipend;                /* Interrupt pend reg */
+   volatile cyg_uint32  siu_simask;                /* Interrupt mask reg */
+   volatile cyg_uint32  siu_siel;                  /* Interrupt edge level mask reg */
+   volatile cyg_uint32  siu_sivec;                 /* Interrupt vector */
+   volatile cyg_uint32  siu_tesr;                  /* Transfer error status */
+   volatile cyg_uint8   RESERVED14[0xc];  /* Reserved area */
+   volatile cyg_uint32  dma_sdcr;                  /* SDMA configuration reg */
+   cyg_uint8    RESERVED15[0x4c];
+
+   /*--------*/
+   /* PCMCIA */
+   /*--------*/
+
+   volatile cyg_uint32  pcmcia_pbr0;      /* PCMCIA Base Reg: Window 0 */
+   volatile cyg_uint32  pcmcia_por0;      /* PCMCIA Option Reg: Window 0 */
+   volatile cyg_uint32  pcmcia_pbr1;      /* PCMCIA Base Reg: Window 1 */
+   volatile cyg_uint32  pcmcia_por1;      /* PCMCIA Option Reg: Window 1 */
+   volatile cyg_uint32  pcmcia_pbr2;      /* PCMCIA Base Reg: Window 2 */
+   volatile cyg_uint32  pcmcia_por2;      /* PCMCIA Option Reg: Window 2 */
+   volatile cyg_uint32  pcmcia_pbr3;      /* PCMCIA Base Reg: Window 3 */
+   volatile cyg_uint32  pcmcia_por3;      /* PCMCIA Option Reg: Window 3 */
+   volatile cyg_uint32  pcmcia_pbr4;      /* PCMCIA Base Reg: Window 4 */
+   volatile cyg_uint32  pcmcia_por4;      /* PCMCIA Option Reg: Window 4 */
+   volatile cyg_uint32  pcmcia_pbr5;      /* PCMCIA Base Reg: Window 5 */
+   volatile cyg_uint32  pcmcia_por5;      /* PCMCIA Option Reg: Window 5 */
+   volatile cyg_uint32  pcmcia_pbr6;      /* PCMCIA Base Reg: Window 6 */
+   volatile cyg_uint32  pcmcia_por6;      /* PCMCIA Option Reg: Window 6 */
+   volatile cyg_uint32  pcmcia_pbr7;      /* PCMCIA Base Reg: Window 7 */
+   volatile cyg_uint32  pcmcia_por7;      /* PCMCIA Option Reg: Window 7 */
+   volatile cyg_uint8  RESERVED16[0x20];  /* Reserved area */
+   volatile cyg_uint32  pcmcia_pgcra;     /* PCMCIA Slot A Control  Reg */
+   volatile cyg_uint32  pcmcia_pgcrb;     /* PCMCIA Slot B Control  Reg */
+   volatile cyg_uint32  pcmcia_pscr;      /* PCMCIA Status Reg */
+   volatile cyg_uint8  RESERVED17[0x4];  /* Reserved area */
+   volatile cyg_uint32  pcmcia_pipr;      /* PCMCIA Pins Value Reg */
+   volatile cyg_uint8  RESERVED18[0x4];  /* Reserved area */
+   volatile cyg_uint32  pcmcia_per;       /* PCMCIA Enable Reg */
+   volatile cyg_uint8  RESERVED19[0x4];  /* Reserved area */
+
+   /*------*/
+   /* MEMC */
+   /*------*/
+
+   volatile cyg_uint32  memc_br0;                       /* base register 0 */
+   volatile cyg_uint32  memc_or0;                       /* option register 0 */
+   volatile cyg_uint32  memc_br1;                       /* base register 1 */
+   volatile cyg_uint32  memc_or1;                       /* option register 1 */
+   volatile cyg_uint32  memc_br2;                       /* base register 2 */
+   volatile cyg_uint32  memc_or2;                       /* option register 2 */
+   volatile cyg_uint32  memc_br3;                       /* base register 3 */
+   volatile cyg_uint32  memc_or3;                       /* option register 3 */
+   volatile cyg_uint32  memc_br4;                       /* base register 3 */
+   volatile cyg_uint32  memc_or4;                       /* option register 3 */
+   volatile cyg_uint32  memc_br5;                       /* base register 3 */
+   volatile cyg_uint32  memc_or5;                       /* option register 3 */
+   volatile cyg_uint32  memc_br6;                       /* base register 3 */
+   volatile cyg_uint32  memc_or6;                       /* option register 3 */
+   volatile cyg_uint32  memc_br7;                       /* base register 3 */
+   volatile cyg_uint32  memc_or7;                       /* option register 3 */
+   volatile cyg_uint8   RESERVED20[0x24];       /* Reserved area */
+   volatile cyg_uint32  memc_mar;                       /* Memory address */
+   volatile cyg_uint32  memc_mcr;                       /* Memory command */
+   volatile cyg_uint8   RESERVED21[0x4];        /* Reserved area */
+   volatile cyg_uint32  memc_mamr;                      /* Machine A mode */
+   volatile cyg_uint32  memc_mbmr;                      /* Machine B mode */
+   volatile cyg_uint16  memc_mstat;                     /* Memory status */
+   volatile cyg_uint16  memc_mptpr;                     /* Memory preidic timer prescalar */
+   volatile cyg_uint32  memc_mdr;                       /* Memory data */
+   volatile cyg_uint8   RESERVED22[0x80];       /* Reserved area */
+
+   /*---------------------------*/
+   /* SYSTEM INTEGRATION TIMERS */
+   /*---------------------------*/
+
+   volatile cyg_uint16  simt_tbscr;                     /* Time base stat&ctr */
+   volatile cyg_uint8   RESERVED23[0x2];        /* Reserved area */
+   volatile cyg_uint32  simt_tbreff0;           /* Time base reference 0 */
+   volatile cyg_uint32  simt_tbreff1;           /* Time base reference 1 */
+   volatile cyg_uint8   RESERVED24[0x14];       /* Reserved area */
+   volatile cyg_uint16  simt_rtcsc;                     /* Realtime clk stat&cntr 1 */
+   volatile cyg_uint8   RESERVED25[0x2];        /* Reserved area */
+   volatile cyg_uint32  simt_rtc;                       /* Realtime clock */
+   volatile cyg_uint32  simt_rtsec;                     /* Realtime alarm seconds */
+   volatile cyg_uint32  simt_rtcal;                     /* Realtime alarm */
+   volatile cyg_uint8   RESERVED26[0x10];       /* Reserved area */
+   volatile cyg_uint32  simt_piscr;                     /* PIT stat&ctrl */
+   volatile cyg_uint32  simt_pitc;                      /* PIT counter */
+   volatile cyg_uint32  simt_pitr;                      /* PIT */
+   volatile cyg_uint8   RESERVED27[0x34];       /* Reserved area */
+
+   /*---------------*/
+   /* CLOCKS, RESET */
+   /*---------------*/
+   
+   volatile cyg_uint32  clkr_sccr;                      /* System clk cntrl */
+   volatile cyg_uint32  clkr_plprcr;            /* PLL reset&ctrl */
+   volatile cyg_uint32  clkr_rsr;                       /* reset status */
+   cyg_uint8    RESERVED28[0x74];       /* Reserved area */
+
+   /*--------------------------------*/
+   /* System Integration Timers Keys */
+   /*--------------------------------*/
+
+   volatile cyg_uint32  simt_tbscrk;            /* Timebase Status&Ctrl Key */
+   volatile cyg_uint32  simt_tbreff0k;          /* Timebase Reference 0 Key */
+   volatile cyg_uint32  simt_tbreff1k;          /* Timebase Reference 1 Key */
+   volatile cyg_uint32  simt_tbk;               /* Timebase and Decrementer Key */
+   cyg_uint8   RESERVED29[0x10];        /* Reserved area */
+   volatile cyg_uint32  simt_rtcsck;            /* Real-Time Clock Status&Ctrl Key */
+
+   volatile cyg_uint32  simt_rtck;              /* Real-Time Clock Key */
+   volatile cyg_uint32  simt_rtseck;            /* Real-Time Alarm Seconds Key */
+   volatile cyg_uint32  simt_rtcalk;            /* Real-Time Alarm Key */
+   cyg_uint8   RESERVED30[0x10];        /* Reserved area */
+   volatile cyg_uint32  simt_piscrk;            /* Periodic Interrupt Status&Ctrl Key */
+   volatile cyg_uint32  simt_pitck;             /* Periodic Interrupt Count Key */
+   cyg_uint8   RESERVED31[0x38];        /* Reserved area */
+        
+   /*----------------------*/
+   /* Clock and Reset Keys */
+   /*----------------------*/
+
+   volatile cyg_uint32  clkr_sccrk;           /* System Clock Control Key */
+   volatile cyg_uint32  clkr_plprcrk;         /* PLL, Low Power and Reset Control Key */
+   volatile cyg_uint32  clkr_rsrk;                 /* Reset Status Key */
+   cyg_uint8      RESERVED32[0x4d4];    /* Reserved area */
+              
+   /*-----*/
+   /* I2C */
+   /*-----*/
+   
+   volatile cyg_uint8   i2c_i2mod;                      /* i2c mode */
+   cyg_uint8            RESERVED33[3];
+   volatile cyg_uint8   i2c_i2add;                      /* i2c address */
+   cyg_uint8            RESERVED34[3];
+   volatile cyg_uint8   i2c_i2brg;                      /* i2c brg */
+   cyg_uint8            RESERVED35[3];
+   volatile cyg_uint8   i2c_i2com;                      /* i2c command */
+   cyg_uint8            RESERVED36[3];
+   volatile cyg_uint8   i2c_i2cer;                      /* i2c event */
+   cyg_uint8            RESERVED37[3];
+   volatile cyg_uint8   i2c_i2cmr;                      /* i2c mask */
+   volatile cyg_uint8   RESERVED38[0x8b];       /* Reserved area */
+
+   /*-----*/
+   /* DMA */
+   /*-----*/
+
+   volatile cyg_uint8   RESERVED39[0x4];        /* Reserved area */
+   volatile cyg_uint32  dma_sdar;                       /* SDMA address reg */
+   volatile cyg_uint8   RESERVED40[0x2];        /* Reserved area */
+   volatile cyg_uint8   dma_sdsr;                       /* SDMA status reg */
+   volatile cyg_uint8   RESERVED41[0x3];        /* Reserved area */
+   volatile cyg_uint8   dma_sdmr;                       /* SDMA mask reg */
+   volatile cyg_uint8   RESERVED42[0x1];        /* Reserved area */                        
+   volatile cyg_uint8   dma_idsr1;                      /* IDMA1 status reg */
+   volatile cyg_uint8   RESERVED43[0x3];        /* Reserved area */
+   volatile cyg_uint8   dma_idmr1;                      /* IDMA1 mask reg */
+   volatile cyg_uint8   RESERVED44[0x3];        /* Reserved area */
+   volatile cyg_uint8   dma_idsr2;                      /* IDMA2 status reg */
+   volatile cyg_uint8   RESERVED45[0x3];        /* Reserved area */
+   volatile cyg_uint8   dma_idmr2;                      /* IDMA2 mask reg */
+   volatile cyg_uint8   RESERVED46[0x13];       /* Reserved area */
+
+   /*--------------------------*/
+   /* CPM Interrupt Controller */
+   /*--------------------------*/
+
+   volatile cyg_uint16  cpmi_civr;                      /* CP interrupt vector reg */
+   volatile cyg_uint8   RESERVED47[0xe];        /* Reserved area */
+   volatile cyg_uint32  cpmi_cicr;                      /* CP interrupt configuration reg */
+   volatile cyg_uint32  cpmi_cipr;                      /* CP interrupt pending reg */
+   volatile cyg_uint32  cpmi_cimr;                      /* CP interrupt mask reg */
+   volatile cyg_uint32  cpmi_cisr;                      /* CP interrupt in-service reg */
+
+   /*----------*/
+   /* I/O port */
+   /*----------*/
+
+   volatile cyg_uint16  pio_padir;                      /* port A data direction reg */
+   volatile cyg_uint16  pio_papar;                      /* port A pin assignment reg */
+   volatile cyg_uint16  pio_paodr;                      /* port A open drain reg */
+   volatile cyg_uint16  pio_padat;                      /* port A data register */
+   volatile cyg_uint8   RESERVED48[0x8];        /* Reserved area */
+   volatile cyg_uint16  pio_pcdir;                      /* port C data direction reg */
+   volatile cyg_uint16  pio_pcpar;                      /* port C pin assignment reg */
+   volatile cyg_uint16  pio_pcso;                       /* port C special options */
+   volatile cyg_uint16  pio_pcdat;                      /* port C data register */
+   volatile cyg_uint16  pio_pcint;                      /* port C interrupt cntrl reg */
+   cyg_uint8            RESERVED49[6];
+   volatile cyg_uint16  pio_pddir;                      /* port D Data Direction reg */
+   volatile cyg_uint16  pio_pdpar;                      /* port D pin assignment reg */
+   cyg_uint8            RESERVED50[2];
+   volatile cyg_uint16  pio_pddat;                      /* port D data reg */
+   volatile cyg_uint8   RESERVED51[0x8];        /* Reserved area */
+
+   /*-----------*/
+   /* CPM Timer */
+   /*-----------*/
+
+   volatile cyg_uint16  timer_tgcr;                     /* timer global configuration reg */
+   volatile cyg_uint8   RESERVED52[0xe];        /* Reserved area */
+   volatile cyg_uint16  timer_tmr1;                     /* timer 1 mode reg */
+   volatile cyg_uint16  timer_tmr2;                     /* timer 2 mode reg */
+   volatile cyg_uint16  timer_trr1;                     /* timer 1 referance reg */
+   volatile cyg_uint16  timer_trr2;                     /* timer 2 referance reg */
+   volatile cyg_uint16  timer_tcr1;                     /* timer 1 capture reg */
+   volatile cyg_uint16  timer_tcr2;                     /* timer 2 capture reg */
+   volatile cyg_uint16  timer_tcn1;                     /* timer 1 counter reg */
+   volatile cyg_uint16  timer_tcn2;                     /* timer 2 counter reg */
+   volatile cyg_uint16  timer_tmr3;                     /* timer 3 mode reg */
+   volatile cyg_uint16  timer_tmr4;                     /* timer 4 mode reg */
+   volatile cyg_uint16  timer_trr3;                     /* timer 3 referance reg */
+   volatile cyg_uint16  timer_trr4;                     /* timer 4 referance reg */
+   volatile cyg_uint16  timer_tcr3;                     /* timer 3 capture reg */
+   volatile cyg_uint16  timer_tcr4;                     /* timer 4 capture reg */
+   volatile cyg_uint16  timer_tcn3;                     /* timer 3 counter reg */
+   volatile cyg_uint16  timer_tcn4;                     /* timer 4 counter reg */
+   volatile cyg_uint16  timer_ter1;                     /* timer 1 event reg */
+   volatile cyg_uint16  timer_ter2;                     /* timer 2 event reg */
+   volatile cyg_uint16  timer_ter3;                     /* timer 3 event reg */
+   volatile cyg_uint16  timer_ter4;                     /* timer 4 event reg */
+   volatile cyg_uint8   RESERVED53[0x8];        /* Reserved area */
+
+   /*----*/
+   /* CP */
+   /*----*/
+
+   volatile cyg_uint16  cp_cr;                          /* command register */
+   volatile cyg_uint8   RESERVED54[0x2];        /* Reserved area */
+   volatile cyg_uint16  cp_rccr;                                /* main configuration reg */
+   volatile cyg_uint8   RESERVED55;                     /* Reserved area */
+   volatile cyg_uint8   cp_resv1;                       /* Reserved reg */
+   volatile cyg_uint32  cp_resv2;                       /* Reserved reg */
+   volatile cyg_uint16  cp_rctr1;                       /* ram break register 1 */
+   volatile cyg_uint16  cp_rctr2;                       /* ram break register 2 */
+   volatile cyg_uint16  cp_rctr3;                       /* ram break register 3 */
+   volatile cyg_uint16  cp_rctr4;                       /* ram break register 4 */
+   volatile cyg_uint8   RESERVED56[0x2];        /* Reserved area */
+   volatile cyg_uint16  cp_rter;                                /* RISC timers event reg */
+   volatile cyg_uint8   RESERVED57[0x2];        /* Reserved area */
+   volatile cyg_uint16  cp_rtmr;                                /* RISC timers mask reg */
+   volatile cyg_uint8   RESERVED58[0x14];       /* Reserved area */
+
+   /*-----*/
+   /* BRG */
+   /*-----*/
+
+   volatile cyg_uint32  brgc1;          /* BRG1 configuration reg */
+   volatile cyg_uint32  brgc2;          /* BRG2 configuration reg */
+   volatile cyg_uint32  brgc3;          /* BRG3 configuration reg */
+   volatile cyg_uint32  brgc4;          /* BRG4 configuration reg */
+
+   /*---------------*/
+   /* SCC registers */
+   /*---------------*/
+
+   struct scc_regs 
+   
+   {
+       volatile cyg_uint32      scc_gsmr_l;             /* SCC Gen mode (LOW) */
+       volatile cyg_uint32      scc_gsmr_h;             /* SCC Gen mode (HIGH) */
+       volatile cyg_uint16      scc_psmr;                       /* protocol specific mode register */
+       volatile cyg_uint8       RESERVED59[0x2];        /* Reserved area */
+       volatile cyg_uint16      scc_todr;                       /* SCC transmit on demand */
+       volatile cyg_uint16      scc_dsr;                                /* SCC data sync reg */
+       volatile cyg_uint16      scc_scce;                       /* SCC event reg */
+       volatile cyg_uint8       RESERVED60[0x2];        /* Reserved area */
+       volatile cyg_uint16      scc_sccm;                       /* SCC mask reg */
+       volatile cyg_uint8       RESERVED61[0x1];        /* Reserved area */
+       volatile cyg_uint8       scc_sccs;                       /* SCC status reg */
+       volatile cyg_uint8       RESERVED62[0x8];        /* Reserved area */
+
+   } scc_regs[4];
+
+   
+   /*-----*/
+   /* SMC */
+   /*-----*/
+
+   struct smc_regs 
+   
+   {
+       volatile cyg_uint8       RESERVED63[0x2];        /* Reserved area */
+       volatile cyg_uint16      smc_smcmr;                      /* SMC mode reg */
+       volatile cyg_uint8       RESERVED64[0x2];        /* Reserved area */
+       volatile cyg_uint8       smc_smce;                       /* SMC event reg */
+       volatile cyg_uint8       RESERVED65[0x3];        /* Reserved area */
+       volatile cyg_uint8       smc_smcm;                       /* SMC mask reg */
+       volatile cyg_uint8       RESERVED66[0x5];        /* Reserved area */
+
+   } smc_regs[2];
+
+
+   /*-----*/
+   /* SPI */
+   /*-----*/
+
+   volatile cyg_uint16  spi_spmode;                     /* SPI mode reg */
+   volatile cyg_uint8   RESERVED67[0x4];        /* Reserved area */
+   volatile cyg_uint8   spi_spie;                       /* SPI event reg */
+   volatile cyg_uint8   RESERVED68[0x3];        /* Reserved area */
+   volatile cyg_uint8   spi_spim;                       /* SPI mask reg */
+   volatile cyg_uint8   RESERVED69[0x2];        /* Reserved area */
+   volatile cyg_uint8   spi_spcom;                      /* SPI command reg */
+   volatile cyg_uint8   RESERVED70[0x4];        /* Reserved area */
+
+   /*-----*/
+   /* PIP */
+   /*-----*/
+
+   volatile cyg_uint16  pip_pipc;                       /* pip configuration reg */
+   volatile cyg_uint8   RESERVED71[0x2];        /* Reserved area */
+   volatile cyg_uint16  pip_ptpr;                       /* pip timing parameters reg */
+   volatile cyg_uint32  pip_pbdir;                      /* port b data direction reg */
+   volatile cyg_uint32  pip_pbpar;                      /* port b pin assignment reg */
+   volatile cyg_uint8   RESERVED72[0x2];        /* Reserved area */
+   volatile cyg_uint16  pip_pbodr;                      /* port b open drain reg */
+   volatile cyg_uint32  pip_pbdat;                      /* port b data reg */
+   volatile cyg_uint8   RESERVED73[0x18];       /* Reserved area */
+
+
+   /*------------------*/
+   /* Serial Interface */
+   /*------------------*/
+
+   volatile cyg_uint32  si_simode;                              /* SI mode register */
+   volatile cyg_uint8   si_sigmr;                               /* SI global mode register */
+   volatile cyg_uint8   RESERVED74;                     /* Reserved area */
+   volatile cyg_uint8   si_sistr;                               /* SI status register */
+   volatile cyg_uint8   si_sicmr;                               /* SI command register */
+   volatile cyg_uint8   RESERVED75[0x4];                /* Reserved area */
+   volatile cyg_uint32  si_sicr;                                        /* SI clock routing */
+   volatile cyg_uint32  si_sirp;                                        /* SI ram pointers */
+   volatile cyg_uint8   RESERVED76[0x10c];      /* Reserved area */
+   volatile cyg_uint8   si_siram[0x200];                /* SI routing ram */
+   volatile cyg_uint8   RESERVED77[0x1200];     /* Reserved area */
+
+   /*-----------------------------------------------------------------*/
+   /* BASE + 0x2000: user data memory, microcode, or QMC channel PRAM */
+   /*-----------------------------------------------------------------*/
+        
+        union
+        {
+                struct qmc_chan_pram qcp[64];
+                struct user_data ud;
+                cyg_uint8 RESERVED[0x1c00];
+        } qcp_or_ud;
+
+
+   /*-----------------------------------------------------------------------*/
+   /* BASE + 0x3c00: PARAMETER RAM. This main union defines 4 memory blocks */
+   /* of an identical size. See the Parameter RAM definition in the MPC860  */
+   /* user's manual.                                                        */
+   /*-----------------------------------------------------------------------*/
+
+   /*------------------------*/
+   /* Base + 0x3C00 (page 1) */
+   /*      + 0x3D00 (page 2) */
+   /*      + 0x3E00 (page 3) */
+   /*      + 0x3F00 (page 4) */
+   /*------------------------*/
+
+   union 
+      
+   {
+      struct page_of_pram 
+       
+      {
+         /*------------------------------------------------------------*/
+         /* scc parameter area - 1st memory block (protocol dependent) */
+         /*------------------------------------------------------------*/
+
+         union 
+           
+         {
+            struct hdlc_pram          h;
+            struct uart_pram          u;
+            struct bisync_pram          b;
+            struct transparent_pram     t;
+            struct async_hdlc_pram      a;
+            cyg_uint8   RESERVED78[0x80];
+
+         } scc;         
+
+         /*----------------------------------------------------------------*/
+         /* Other protocol areas for the rest of the memory blocks in each */
+         /* page.                                                          */
+         /*----------------------------------------------------------------*/
+
+         union 
+                 
+         {
+            /*---------------------------------------------------------------*/
+            /* This structure defines the rest of the blocks on the 1st page */
+            /*---------------------------------------------------------------*/ 
+         
+            struct 
+         
+            {
+               struct i2c_pram  i2c;     /* I2C   */
+               struct misc_pram misc;    /* MISC  */
+               struct idma_pram idma1;   /* IDMA1 */
+
+            } i2c_idma; 
+
+            /*---------------------------------------------------------------*/
+            /* This structure defines the rest of the blocks on the 2nd page */
+            /*---------------------------------------------------------------*/
+ 
+            struct 
+         
+            {
+               struct spi_pram  spi;     /* SPI    */
+               struct timer_pram        timer;   /* Timers */
+               struct idma_pram idma2;   /* IDMA2  */
+
+            } spi_timer_idma; 
+
+            /*---------------------------------------------------------------*/
+            /* This structure defines the rest of the blocks on the 3rd page */
+            /*---------------------------------------------------------------*/
+ 
+            struct 
+         
+            {
+               union 
+          
+               {
+                  struct smc_uart_pram u1;   /* SMC1 */
+                  struct smc_trnsp_pram t1;  /* SMC1 */
+                  cyg_uint8     RESERVED78[0x80];     /* declare full block */
+
+               } psmc1; 
+
+            } smc_dsp1;
+
+
+            /*---------------------------------------------------------------*/
+            /* This structure defines the rest of the blocks on the 4th page */
+            /*---------------------------------------------------------------*/ 
+ 
+            struct 
+         
+            {
+               union 
+          
+               {
+                  struct smc_uart_pram u2;   /* SMC2 */
+                  struct smc_trnsp_pram t2;  /* SMC2 */
+                  struct centronics_pram c;  /* Uses SM2's space */
+                  cyg_uint8     RESERVED79[0x80];    /* declare full block */
+
+               } psmc2;
+
+            } smc_dsp2; 
+
+            cyg_uint8   RESERVED80[0x80];    /* declare full block */
+
+         } other;
+
+      } pg;
+
+      /*---------------------------------------------------------------*/
+      /* When selecting Ethernet as protocol for an SCC, this protocol */
+      /* uses a complete page of Parameter RAM memory.                 */
+      /*---------------------------------------------------------------*/
+
+      struct ethernet_pram      enet_scc;
+
+        /*---------------------------------------------------------------*/
+        /* When using QMC as a mode for an SCC, the QMC global parameter */
+        /* ram uses from SCC BASE to BASE+AC.                            */
+        /*---------------------------------------------------------------*/
+      
+      struct global_qmc_pram  gqp; 
+
+      /*--------------------------------------------------------*/
+      /* declaration to guarantee a page of memory is allocated */
+      /*--------------------------------------------------------*/
+
+      cyg_uint8   RESERVED83[0x100]; 
+
+   } PRAM[4]; /* end of union */
+
+} EPPC;
+
+
+/***************************************************************************/
+/*                   General Global Definitions                            */
+/***************************************************************************/
+
+
+#define PAGE1           0       /* SCC1 Index into SCC Param RAM Array */
+#define PAGE2           1       /* SCC2 Index into SCC Param RAM Array */
+#define PAGE3           2       /* SCC3 Index into SCC Param RAM Array */
+#define PAGE4           3       /* SCC4 Index into SCC Param RAM Array */
+
+#define SCC1_REG                0       /* SCC1 Index into SCC Regs Array  */                           
+#define SCC2_REG                1       /* SCC2 Index into SCC Regs Array  */                           
+#define SCC3_REG                2       /* SCC3 Index into SCC Regs Array  */                           
+#define SCC4_REG                3       /* SCC4 Index into SCC Regs Array  */                           
+
+
+/*--------------------------------*/
+/* KEEP ALIVE POWER REGISTERS KEY */
+/*--------------------------------*/
+
+#define KEEP_ALIVE_KEY 0x55ccaa33
+
+
+#define SMC2_REG 1          /* SMC Regs Array Index for SMC2 */
+
+/*-------------------------*/
+/* Single buffer component */
+/*-------------------------*/
+
+typedef struct BufferPool
+
+{
+   cyg_uint8  RxBuffer;
+   cyg_uint8  TxBuffer;
+
+} LB;
+
+
+/*--------------------------*/
+/* Buffer Descriptor Format */
+/*--------------------------*/
+
+typedef struct BufferDescriptor 
+
+{
+   cyg_uint16 bd_cstatus;     /* control and status */
+   cyg_uint16 bd_length;      /* transfer length */
+   cyg_uint8  *bd_addr;       /* buffer address */
+
+} BD;
+ 
+
+/*-------------------------------*/
+/* Buffer Descriptor Ring format */
+/*-------------------------------*/
+
+typedef struct BufferDescRings 
+
+{
+    volatile BD RxBD;    /* Rx BD ring */
+    volatile BD TxBD;    /* Tx BD ring */
+
+} BDRINGS;
+
+
+#endif /* CYGONCE_HAL_PPC_FADS_PPC_860_H */