?? atm.h
字號(hào):
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);
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -