⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atm.h

📁 U-BOOT主要用于LINUX系统的初始化及系统引导
💻 H
字号:
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 4struct 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  12struct 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	0x0001struct 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);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -