typedef unsigned char  uint8;
typedef unsigned short uint16;
typedef unsigned int   uint32;
typedef volatile unsigned char  vuint8;
typedef volatile unsigned short vuint16;
typedef volatile unsigned int   vuint32;


#define DPRAM_ATM CFG_IMMR + 0x3000

#define ATM_DPRAM_BEGIN  (DPRAM_ATM - CFG_IMMR - 0x2000)
#define NUM_CONNECTIONS  1
#define SAR_RXB_SIZE     1584
#define AM_HMASK         0x0FFFFFF0

#define NUM_CT_ENTRIES           (NUM_CONNECTIONS)
#define NUM_TCTE_ENTRIES         (NUM_CONNECTIONS)
#define NUM_AM_ENTRIES           (NUM_CONNECTIONS+1)
#define NUM_AP_ENTRIES           (NUM_CONNECTIONS+1)
#define NUM_MPHYPT_ENTRIES       1
#define NUM_APCP_ENTRIES         1
#define NUM_APCT_PRIO_1_ENTRIES  146 /* Determines minimum rate */
#define NUM_TQ_ENTRIES           12

#define SIZE_OF_CT_ENTRY         64
#define SIZE_OF_TCTE_ENTRY       32
#define SIZE_OF_AM_ENTRY         4
#define SIZE_OF_AP_ENTRY         2
#define SIZE_OF_MPHYPT_ENTRY     2
#define SIZE_OF_APCP_ENTRY       32
#define SIZE_OF_APCT_ENTRY       2
#define SIZE_OF_TQ_ENTRY         2

#define CT_BASE           ((ATM_DPRAM_BEGIN + 63) & 0xFFC0) /*64*/
#define TCTE_BASE         (CT_BASE + NUM_CT_ENTRIES * SIZE_OF_CT_ENTRY) /*32*/
#define APCP_BASE         (TCTE_BASE + NUM_TCTE_ENTRIES * SIZE_OF_TCTE_ENTRY)  /*32*/
#define AM_BEGIN          (APCP_BASE + NUM_APCP_ENTRIES * SIZE_OF_APCP_ENTRY) /*4*/
#define AM_BASE           (AM_BEGIN + (NUM_AM_ENTRIES - 1) * SIZE_OF_AM_ENTRY)
#define AP_BEGIN          (AM_BEGIN + NUM_AM_ENTRIES * SIZE_OF_AM_ENTRY) /*2*/
#define AP_BASE           (AP_BEGIN + (NUM_AP_ENTRIES - 1) * SIZE_OF_AP_ENTRY)
#define MPHYPT_BASE       (AP_BEGIN + NUM_AP_ENTRIES * SIZE_OF_AP_ENTRY) /*2*/
#define APCT_PRIO_1_BASE  (MPHYPT_BASE + NUM_MPHYPT_ENTRIES * SIZE_OF_MPHYPT_ENTRY) /*2*/
#define TQ_BASE           (APCT_PRIO_1_BASE + NUM_APCT_PRIO_1_ENTRIES * SIZE_OF_APCT_ENTRY) /*2*/
#define ATM_DPRAM_SIZE    ((TQ_BASE + NUM_TQ_ENTRIES * SIZE_OF_TQ_ENTRY) - ATM_DPRAM_BEGIN)

#define CT_PTR(base)      ((struct ct_entry_t *)((char *)(base) + 0x2000 + CT_BASE))
#define TCTE_PTR(base)    ((struct tcte_entry_t *)((char *)(base) + 0x2000 + TCTE_BASE))
#define AM_PTR(base)      ((uint32 *)((char *)(base) + 0x2000 + AM_BASE))
#define AP_PTR(base)      ((uint16 *)((char *)(base) + 0x2000 + AP_BASE))
#define MPHYPT_PTR(base)  ((uint16 *)((char *)(base) + 0x2000 + MPHYPT_BASE))
#define APCP_PTR(base)    ((struct apc_params_t *)((char*)(base) + 0x2000 + APCP_BASE))
#define APCT1_PTR(base)   ((uint16 *)((char *)(base) + 0x2000 + APCT_PRIO_1_BASE))
#define APCT2_PTR(base)   ((uint16 *)((char *)(base) + 0x2000 + APCT_PRIO_2_BASE))
#define APCT3_PTR(base)   ((uint16 *)((char *)(base) + 0x2000 + APCT_PRIO_3_BASE))
#define TQ_PTR(base)      ((uint16 *)((char *)(base) + 0x2000 + TQ_BASE))

/* SAR registers */
#define RBDBASE(base)	  ((vuint32 *)(base + 0x3F00)) /* Base address of RxBD-List */
#define SRFCR(base)	  ((vuint8 *)(base + 0x3F04))  /* DMA Receive function code */
#define SRSTATE(base)	  ((vuint8 *)(base + 0x3F05))  /* DMA Receive status */
#define MRBLR(base)	  ((vuint16 *)(base + 0x3F06)) /* Init to 0 for ATM */
#define RSTATE(base)	  ((vuint32 *)(base + 0x3F08)) /* Do not write to */
#define R_CNT(base)	  ((vuint16 *)(base + 0x3F10)) /* Do not write to */
#define STFCR(base)	  ((vuint8 *)(base + 0x3F12))  /* DMA Transmit function code */
#define STSTATE(base)	  ((vuint8 *)(base + 0x3F13))  /* DMA Transmit status */
#define TBDBASE(base)	  ((vuint32 *)(base + 0x3F14)) /* Base address of TxBD-List */
#define TSTATE(base)	  ((vuint32 *)(base + 0x3F18)) /* Do not write to */
#define COMM_CH(base)	  ((vuint16 *)(base + 0x3F1C)) /* Command channel */
#define STCHNUM(base)	  ((vuint16 *)(base + 0x3F1E)) /* Do not write to */
#define T_CNT(base)	  ((vuint16 *)(base + 0x3F20)) /* Do not write to */
#define CTBASE(base)	  ((vuint16 *)(base + 0x3F22)) /* Base address of Connection-table */
#define ECTBASE(base)	  ((vuint32 *)(base + 0x3F24)) /* Valid only for external Conn.-table */
#define INTBASE(base)	  ((vuint32 *)(base + 0x3F28)) /* Base address of Interrupt-table */
#define INTPTR(base)	  ((vuint32 *)(base + 0x3F2C)) /* Pointer to Interrupt-queue */
#define C_MASK(base)	  ((vuint32 *)(base + 0x3F30)) /* CRC-mask */
#define SRCHNUM(base)	  ((vuint16 *)(base + 0x3F34)) /* Do not write to */
#define INT_CNT(base)	  ((vuint16 *)(base + 0x3F36)) /* Interrupt-Counter */
#define INT_ICNT(base)	  ((vuint16 *)(base + 0x3F38)) /* Interrupt threshold */
#define TSTA(base)	  ((vuint16 *)(base + 0x3F3A)) /* Time-stamp-address */
#define OLDLEN(base)	  ((vuint16 *)(base + 0x3F3C)) /* Do not write to */
#define SMRBLR(base)	  ((vuint16 *)(base + 0x3F3E)) /* SAR max RXBuffer length */
#define EHEAD(base)	  ((vuint32 *)(base + 0x3F40)) /* Valid for serial mode */
#define EPAYLOAD(base)	  ((vuint32 *)(base + 0x3F44)) /* Valid for serial mode */
#define TQBASE(base)	  ((vuint16 *)(base + 0x3F48)) /* Base address of Tx queue */
#define TQEND(base)	  ((vuint16 *)(base + 0x3F4A)) /* End address of Tx queue */
#define TQAPTR(base)	  ((vuint16 *)(base + 0x3F4C)) /* TQ APC pointer */
#define TQTPTR(base)	  ((vuint16 *)(base + 0x3F4E)) /* TQ Tx pointer */
#define APCST(base)	  ((vuint16 *)(base + 0x3F50)) /* APC status */
#define APCPTR(base)	  ((vuint16 *)(base + 0x3F52)) /* APC parameter pointer */
#define HMASK(base)	  ((vuint32 *)(base + 0x3F54)) /* Header mask */
#define AMBASE(base)	  ((vuint16 *)(base + 0x3F58)) /* Address match table base */
#define AMEND(base)	  ((vuint16 *)(base + 0x3F5A)) /* Address match table end */
#define APBASE(base)	  ((vuint16 *)(base + 0x3F5C)) /* Address match parameter */
#define FLBASE(base)	  ((vuint32 *)(base + 0x3F54)) /* First-level table base */
#define SLBASE(base)	  ((vuint32 *)(base + 0x3F58)) /* Second-level table base */
#define FLMASK(base)	  ((vuint16 *)(base + 0x3F5C)) /* First-level mask */
#define ECSIZE(base)	  ((vuint16 *)(base + 0x3F5E)) /* Valid for extended mode */
#define APCT_REAL(base)	  ((vuint32 *)(base + 0x3F60)) /* APC 32 bit counter */
#define R_PTR(base)	  ((vuint32 *)(base + 0x3F64)) /* Do not write to */
#define RTEMP(base)	  ((vuint32 *)(base + 0x3F68)) /* Do not write to */
#define T_PTR(base)	  ((vuint32 *)(base + 0x3F6C)) /* Do not write to */
#define TTEMP(base)	  ((vuint32 *)(base + 0x3F70)) /* Do not write to */

/* ESAR registers */
#define FMCTIMESTMP(base) ((vuint32 *)(base + 0x3F80)) /* Perf.Mon.Timestamp */
#define FMCTEMPLATE(base) ((vuint32 *)(base + 0x3F84)) /* Perf.Mon.Template */
#define PMPTR(base)       ((vuint16 *)(base + 0x3F88)) /* Perf.Mon.Table */
#define PMCHANNEL(base)	  ((vuint16 *)(base + 0x3F8A)) /* Perf.Mon.Channel */
#define MPHYST(base)	  ((vuint16 *)(base + 0x3F90)) /* Multi-PHY Status */
#define TCTEBASE(base)	  ((vuint16 *)(base + 0x3F92)) /* Internal TCT Extension Base */
#define ETCTEBASE(base)	  ((vuint32 *)(base + 0x3F94)) /* External TCT Extension Base */
#define COMM_CH2(base)	  ((vuint32 *)(base + 0x3F98)) /* 2nd command channel word */
#define STATBASE(base)	  ((vuint16 *)(base + 0x3F9C)) /* Statistics table pointer */

/* UTOPIA Mode Register */
#define UTMODE(base)      (CAST(vuint32 *)(base + 0x0978))

/* SAR commands */
#define TRANSMIT_CHANNEL_ACTIVATE_CMD   0x0FC1
#define TRANSMIT_CHANNEL_DEACTIVATE_CMD 0x1FC1
#define STOP_TRANSMIT_CMD               0x2FC1
#define RESTART_TRANSMIT_CMD            0x3FC1
#define STOP_RECEIVE_CMD                0x4FC1
#define RESTART_RECEIVE_CMD             0x5FC1
#define APC_BYPASS_CMD                  0x6FC1
#define MEM_WRITE_CMD                   0x7FC1
#define CPCR_FLG                        0x0001

/* INT flags */
#define INT_VALID	0x80000000
#define INT_WRAP	0x40000000
#define INT_APCO	0x00800000
#define INT_TQF		0x00200000
#define INT_RXF		0x00080000
#define INT_BSY		0x00040000
#define INT_TXB		0x00020000
#define INT_RXB		0x00010000

#define NUM_INT_ENTRIES   80
#define SIZE_OF_INT_ENTRY 4

struct apc_params_t
{
  vuint16 apct_base1;	/* APC Table - First Priority Base pointer */
  vuint16 apct_end1;	/* First APC Table - Length */
  vuint16 apct_ptr1;	/* First APC Table Pointer */
  vuint16 apct_sptr1;	/* APC Table First Priority Service pointer */
  vuint16 etqbase;	/* Enhanced Transmit Queue Base pointer */
  vuint16 etqend;	/* Enhanced Transmit Queue End pointer */
  vuint16 etqaptr;	/* Enhanced Transmit Queue APC pointer */
  vuint16 etqtptr;	/* Enhanced Transmit Queue Transmitter pointer */
  vuint16 apc_mi;	/* APC - Max Iteration */
  vuint16 ncits;	/* Number of Cells In TimeSlot  */
  vuint16 apcnt;	/* APC - N Timer */
  vuint16 reserved1;	/* reserved */
  vuint16 eapcst;	/* APC status */
  vuint16 ptp_counter;	/* PTP queue length */
  vuint16 ptp_txch;	/* PTP channel */
  vuint16 reserved2;	/* reserved */
};

struct ct_entry_t
{
  /* RCT */
  unsigned fhnt	      : 1;
  unsigned pm_rct     : 1;
  unsigned reserved0  : 6;
  unsigned hec        : 1;
  unsigned clp	      : 1;
  unsigned cng_ncrc   : 1;
  unsigned inf_rct    : 1;
  unsigned cngi_ptp   : 1;
  unsigned cdis_rct   : 1;
  unsigned aal_rct    : 2;
  uint16 rbalen;
  uint32 rcrc;
  uint32 rb_ptr;
  uint16 rtmlen;
  uint16 rbd_ptr;
  uint16 rbase;
  uint16 tstamp;
  uint16 imask;
  unsigned ft	      : 2;
  unsigned nim	      : 1;
  unsigned reserved1  : 2;
  unsigned rpmt	      : 6;
  unsigned reserved2  : 5;
  uint8 reserved3[8];
  /* TCT */
  unsigned reserved4  : 1;
  unsigned pm_tct     : 1;
  unsigned reserved5  : 6;
  unsigned pc	      : 1;
  unsigned reserved6  : 2;
  unsigned inf_tct    : 1;
  unsigned cr10       : 1;
  unsigned cdis_tct   : 1;
  unsigned aal_tct    : 2;
  uint16 tbalen;
  uint32 tcrc;
  uint32 tb_ptr;
  uint16 ttmlen;
  uint16 tbd_ptr;
  uint16 tbase;
  unsigned reserved7  : 5;
  unsigned tpmt	      : 6;
  unsigned reserved8  : 3;
  unsigned avcf	      : 1;
  unsigned act	      : 1;
  uint32 chead;
  uint16 apcl;
  uint16 apcpr;
  unsigned out	      : 1;
  unsigned bnr        : 1;
  unsigned tservice   : 2;
  unsigned apcp	      : 12;
  uint16 apcpf;
};

struct tcte_entry_t
{
  unsigned res1       : 4;
  unsigned scr        : 12;
  uint16 scrf;
  uint16 bt;
  uint16 buptrh;
  uint32 buptrl;
  unsigned vbr2       : 1;
  unsigned res2       : 15;
  uint16 oobr;
  uint16 res3[8];
};

#define SIZE_OF_RBD  12
#define SIZE_OF_TBD  12

struct atm_bd_t
{
  vuint16 flags;
  vuint16 length;
  unsigned char * buffer_ptr;
  vuint16 cpcs_uu_cpi;
  vuint16 reserved;
};

/* BD flags */
#define EMPTY		0x8000
#define READY		0x8000
#define WRAP		0x2000
#define INTERRUPT	0x1000
#define LAST		0x0800
#define FIRST		0x0400
#define OAM             0x0400
#define CONTINUOUS	0x0200
#define HEC_ERROR	0x0080
#define CELL_LOSS	0x0040
#define CONGESTION	0x0020
#define ABORT		0x0010
#define LEN_ERROR	0x0002
#define CRC_ERROR	0x0001

struct atm_connection_t
{
  struct atm_bd_t * rbd_ptr;
  int num_rbd;
  struct atm_bd_t * tbd_ptr;
  int num_tbd;
  struct ct_entry_t * ct_ptr;
  struct tcte_entry_t * tcte_ptr;
  void * drv;
  void (* notify)(void * drv, int event);
};

struct atm_driver_t
{
  int loaded;
  int started;
  char * csram;
  int csram_size;
  uint32 * am_top;
  uint16 * ap_top;
  uint32 * int_reload_ptr;
  uint32 * int_serv_ptr;
  struct atm_bd_t * rbd_base_ptr;
  struct atm_bd_t * tbd_base_ptr;
  unsigned linerate_in_bps;
};

extern struct atm_connection_t g_conn[NUM_CONNECTIONS];
extern struct atm_driver_t g_atm;

extern int    atmLoad(void);
extern void   atmUnload(void);
