📄 mac2500.h
字号:
#ifndef __MAC2500h#define __MAC2500h/* Big endian or little endian big = 1, little = 0 */#define BIG_ENDIAN 0/*FOR VxWorks*//*#define PACK_RESERVED (__attribute__((__packed__)))*/#define PACK_RESERVED/********** ETHERNET control registers **************/#define BDMATXCON (0x0000)#define BDMARXCON (0x0004)#define BDMATXDPTR (0x0008)#define BDMARXDPTR (0x000C)#define BTXBDCNT (0x0010)#define BRXBDCNT (0x0014)#define BMTXINTEN (0x0018)#define BMRXINTEN (0x001C)#define BMTXSTAT (0x0020)#define BMRXSTAT (0x0024)#define BDMARXLEN (0x0028)#define CFTXSTAT (0x0030)#define MACCON (0x10000)#define CAMCON (0x10004)#define MACTXCON (0x10008)#define MACTXSTAT (0x1000C)#define MACRXCON (0x10010)#define MACRXSTAT (0x10014)#define STADATA (0x10018)#define STACON (0x1001C)#define CAMEN (0x10028)#define MISSCNT (0x1003C)#define PZCNT (0x10040)#define RMPZCNT (0x10044)#define CAM_BASE (0x10080)/********** Tx Buffer Descriptor **************/struct FD_TX_STATUS_LENGTH_PACKED{#if BIG_ENDIAN ulong owner:1; /* 31, 0 = CPU */ ulong reserved:1; /* 30 */ ulong paused:1; /* 29 */ ulong halted:1; /* 28 */ ulong sqeErr:1; /* 27 */ ulong defer:1; /* 26 */ ulong coll:1; /* 25 */ ulong comp:1; /* 24 */ ulong parErr:1; /* 23 */ ulong lateColl:1; /* 22 */ ulong noCarr:1; /* 21 */ ulong deferErr:1; /* 20 */ ulong underflow:1; /* 19 */ ulong exColl:1; /* 18 */ ulong TxWidget:2; /* 17 - 16 */ ulong TxLength:16; /* 15 - 0 */#else ulong TxLength:16; /* 15 - 0 */ ulong TxWidget:2; /* 17 - 16 */ ulong exColl:1; /* 18 */ ulong underflow:1; /* 19 */ ulong deferErr:1; /* 20 */ ulong noCarr:1; /* 21 */ ulong lateColl:1; /* 22 */ ulong parErr:1; /* 23 */ ulong comp:1; /* 24 */ ulong coll:1; /* 25 */ ulong defer:1; /* 26 */ ulong sqeErr:1; /* 27 */ ulong halted:1; /* 28 */ ulong paused:1; /* 29 */ ulong reserved:1; /* 30 */ ulong owner:1; /* 31, 0 = CPU */#endif }PACK_RESERVED;typedef struct FD_TX_STATUS_LENGTH_PACKED FD_TX_STATUS_LENGTH;struct TRANSMIT_FRAME_DESC_PACKED{ ulong txFrameData; FD_TX_STATUS_LENGTH txStatusLength;}PACK_RESERVED;typedef struct TRANSMIT_FRAME_DESC_PACKED TRANSMIT_FRAME_DESC;/********** Rx Buffer Descriptor **************/struct FD_RX_STATUS_LENGTH_PACKED{#if BIG_ENDIAN /* rx command */ ulong owner:1; /* 31, 0 = CPU */ ulong skipBD:1; /* 30 */ ulong sof:1; /* 29 */ ulong eof:1; /* 28 */ ulong done:1; /* 27 */ /* rx status */ ulong mso:1; /* 26 */ ulong halted:1; /* 25 */ ulong mRx10Stat:1; /* 24 */ ulong bRxDone:1; /* 23 */ ulong rxParErr:1; /* 22 */ ulong mufs:1; /* 21 */ ulong overFlow:1; /* 20 */ ulong crcErr:1; /* 19 */ ulong alignErr:1; /* 18 */ ulong reserved:2; /* 17-16 */ /* length */ ulong RxLength:16; /* 15-0 */#else /* length */ ulong RxLength:16; /* 15-0 */ /* rx status */ ulong reserved:2; /* 17-16 */ ulong alignErr:1; /* 18 */ ulong crcErr:1; /* 19 */ ulong overFlow:1; /* 20 */ ulong mufs:1; /* 21 */ ulong rxParErr:1; /* 22 */ ulong bRxDone:1; /* 23 */ ulong mRx10Stat:1; /* 24 */ ulong halted:1; /* 25 */ ulong mso:1; /* 26 */ /* rx command */ ulong done:1; /* 27 */ ulong eof:1; /* 28 */ ulong sof:1; /* 29 */ ulong skipBD:1; /* 30 */ ulong owner:1; /* 31, 0 = CPU */#endif }PACK_RESERVED;typedef struct FD_RX_STATUS_LENGTH_PACKED FD_RX_STATUS_LENGTH;struct RECEIVE_FRAME_DESC_PACKED /* receive frame descriptor */{ ulong rxFrameData; FD_RX_STATUS_LENGTH rxStatusLength;}PACK_RESERVED;typedef struct RECEIVE_FRAME_DESC_PACKED RECEIVE_FRAME_DESC;#define MACRXFRAMEERRMASK 0x067c0000/* ********* Control Registers ************* */struct BDMATXCON_PACKED{#if BIG_ENDIAN ulong reserved_1:20; ulong bTxRS:1; ulong bTxEn:1; ulong reserved_0:3; ulong bTxMSL:3; ulong bTxNBD:4;#else ulong bTxNBD:4; ulong bTxMSL:3; ulong reserved_0:3; ulong bTxEn:1; ulong bTxRS:1; ulong reserved_1:20;#endif}PACK_RESERVED;union UNION_BDMATXCON { struct BDMATXCON_PACKED txCon_reg; ulong txCon_resetval; }PACK_RESERVED; typedef union UNION_BDMATXCON uBDMATXCON;struct BDMARXCON_PACKED{#if BIG_ENDIAN ulong reserved_1:20; ulong bRxRS:1; ulong bRxEn:1; ulong reserved_0:4; ulong bRxWA:2; ulong bRxNBD:4;#else ulong bRxNBD:4; ulong bRxWA:2; ulong reserved_0:4; ulong bRxEn:1; ulong bRxRS:1; ulong reserved_1:20;#endif}PACK_RESERVED;union UNION_BDMARXCON{ struct BDMARXCON_PACKED rxCon_reg; ulong rxCon_resetval;}PACK_RESERVED; typedef union UNION_BDMARXCON uBDMARXCON;struct BDMATXINTEN_PACKED{#if BIG_ENDIAN ulong reserved_1:13; /* 19 - 31 */ ulong bTxEmptyIE:1; /* 18 */ ulong bTxNOIE:1; /* 17 */ ulong txCFcompIE:1; /* 16 */ ulong reserved_0:9; /* 7 - 15 */ ulong txCompIE:1; /* 6 */ ulong txParErrIE:1; /* 5 */ ulong lateCollIE:1; /* 4 */ ulong noCarrIE:1; /* 3 */ ulong deferErrIE:1; /* 2 */ ulong underflowIE:1; /* 1 */ ulong exCollIE:1; /* 0 */#else ulong exCollIE:1; /* 0 */ ulong underflowIE:1; /* 1 */ ulong deferErrIE:1; /* 2 */ ulong noCarrIE:1; /* 3 */ ulong lateCollIE:1; /* 4 */ ulong txParErrIE:1; /* 5 */ ulong txCompIE:1; /* 6 */ ulong reserved_0:9; /* 7 - 15 */ ulong txCFcompIE:1; /* 16 */ ulong bTxNOIE:1; /* 17 */ ulong bTxEmptyIE:1; /* 18 */ ulong reserved_1:13; /* 19 - 31 */#endif }PACK_RESERVED;union UNION_BDMATXINTEN{ struct BDMATXINTEN_PACKED txIntEn_reg; ulong txIntEn_resetval;}PACK_RESERVED; typedef union UNION_BDMATXINTEN uBDMATXINTEN;struct BDMATXSTAT_PACKED{#if BIG_ENDIAN ulong reserved_1:13; /* 19 - 31 */ ulong bTxEmpty:1; /* 18 */ ulong bTxNO:1; /* 17 */ ulong txCFcomp:1; /* 16 */ ulong reserved_0:9; /* 7 - 15 */ ulong txComp:1; /* 6 */ ulong txParErr:1; /* 5 */ ulong lateColl:1; /* 4 */ ulong noCarr:1; /* 3 */ ulong deferErr:1; /* 2 */ ulong underflow:1; /* 1 */ ulong exColl:1; /* 0 */#else ulong exColl:1; /* 0 */ ulong underflow:1; /* 1 */ ulong deferErr:1; /* 2 */ ulong noCarr:1; /* 3 */ ulong lateColl:1; /* 4 */ ulong txParErr:1; /* 5 */ ulong txComp:1; /* 6 */ ulong reserved_0:9; /* 7 - 15 */ ulong txCFcomp:1; /* 16 */ ulong bTxNO:1; /* 17 */ ulong bTxEmpty:1; /* 18 */ ulong reserved_1:13; /* 19 - 31 */#endif }PACK_RESERVED;union UNION_BDMATXSTAT{ struct BDMATXSTAT_PACKED txstat_reg; ulong txstat_resetval;}PACK_RESERVED; typedef union UNION_BDMATXSTAT uBDMATXSTAT;struct BDMARXINTEN_PACKED{#if BIG_ENDIAN ulong reserved_1:11; /* 21 - 31 */ ulong bRxEarlyIE:1; /* 20 */ ulong bRxFullIE:1; /* 19 */ ulong overflowIE:1; /* 3 */ ulong longErrIE:1; /* 4 */ ulong rxParErrIE:1; /* 5 */ ulong reserved_0:10; /* 6 - 15 */ ulong bRxDoneIE:1; /* 16 */ ulong bRxNOIE:1; /* 17 */ ulong bRxMSOIE:1; /* 18 */ ulong crcErrIE:1; /* 2 */ ulong alignErrIE:1; /* 1 */ ulong missRollIE:1; /* 0 */#else ulong missRollIE:1; /* 0 */ ulong alignErrIE:1; /* 1 */ ulong crcErrIE:1; /* 2 */ ulong overflowIE:1; /* 3 */ ulong longErrIE:1; /* 4 */ ulong rxParErrIE:1; /* 5 */ ulong reserved_0:10; /* 6 - 15 */ ulong bRxDoneIE:1; /* 16 */ ulong bRxNOIE:1; /* 17 */ ulong bRxMSOIE:1; /* 18 */ ulong bRxFullIE:1; /* 19 */ ulong bRxEarlyIE:1; /* 20 */ ulong reserved_1:11; /* 21 - 31 */#endif }PACK_RESERVED;union UNION_BDMARXINTEN{ struct BDMATXINTEN_PACKED rxIntEn_reg; ulong rxIntEn_resetval;}PACK_RESERVED; typedef union UNION_BDMARXINTEN uBDMARXINTEN;struct BDMARXSTAT_PACKED{#if BIG_ENDIAN ulong reserved_1:5; /* 27 - 31 */ ulong noFrameInRXBUFF:5; /* 22 - 26 */ ulong bRxFRF:1; /* 21 */ ulong bRxEarly:1; /* 20 */ ulong bRxFull:1; /* 19 */ ulong bRxMSO:1; /* 18 */ ulong bRxNO:1; /* 17 */ ulong bRxDone:1; /* 16 */ ulong reserved_0:10; /* 6 - 15 */ ulong rxParErr:1; /* 5 */ ulong longErr:1; /* 4 */ ulong overflow:1; /* 3 */ ulong crcErr:1; /* 2 */ ulong alignErr:1; /* 1 */ ulong missRoll:1; /* 0 */#else ulong missRoll:1; /* 0 */ ulong alignErr:1; /* 1 */ ulong crcErr:1; /* 2 */ ulong overflow:1; /* 3 */ ulong longErr:1; /* 4 */ ulong rxParErr:1; /* 5 */ ulong reserved_0:10; /* 6 - 15 */ ulong bRxDone:1; /* 16 */ ulong bRxNO:1; /* 17 */ ulong bRxMSO:1; /* 18 */ ulong bRxFull:1; /* 19 */ ulong bRxEarly:1; /* 20 */ ulong bRxFRF:1; /* 21 */ ulong noFrameInRXBUFF:5; /* 22 - 26 */ ulong reserved_1:5; /* 27 - 31 */#endif }PACK_RESERVED;union UNION_BDMARXSTAT{ struct BDMARXSTAT_PACKED rxStat_reg; ulong rxStat_resetval;}PACK_RESERVED; typedef union UNION_BDMARXSTAT uBDMARXSTAT;struct BMTXINTEN_PACKED{#if BIG_ENDIAN ulong reserved_1:13; /* 19 - 31 */ ulong bTxEmptyIE:1; /* 18 */ ulong bTxNOIE:1; /* 17 */ ulong txCFcompIE:1; /* 16 */ ulong reserved_0:9; /* 7 - 15 */ ulong txCompIE:1; /* 6 */ ulong txParErrIE:1; /* 5 */ ulong lateCollIE:1; /* 4 */ ulong noCarrrIE:1; /* 3 */ ulong deferErrIE:1; /* 2 */ ulong underflowIE:1; /* 1 */ ulong exCollIE:1; /* 0 */#else ulong exCollIE:1; /* 0 */ ulong underflowIE:1; /* 1 */ ulong deferErrIE:1; /* 2 */ ulong noCarrrIE:1; /* 3 */ ulong lateCollIE:1; /* 4 */ ulong txParErrIE:1; /* 5 */ ulong txCompIE:1; /* 6 */ ulong reserved_0:9; /* 7 - 15 */ ulong txCFcompIE:1; /* 16 */ ulong bTxNOIE:1; /* 17 */ ulong bTxEmptyIE:1; /* 18 */ ulong reserved_1:13; /* 19 - 31 */#endif}PACK_RESERVED;union UNION_BMTXINTEN{ struct BMTXINTEN_PACKED txIntEn_reg; ulong txIntEn_resetval;}PACK_RESERVED; typedef union UNION_BMTXINTEN uBMTXINTEN;struct BMTXSTAT_PACKED{#if BIG_ENDIAN ulong reserved_1:13; /* 19 - 31 */ ulong bTxEmpty:1; /* 18 */ ulong bTxNO:1; /* 17 */ ulong txCFcomp:1; /* 16 */ ulong reserved_0:9; /* 7 - 15 */ ulong tcComp:1; /* 6 */ ulong txParErr:1; /* 5 */ ulong lateColl:1; /* 4 */ ulong noCarrr:1; /* 3 */ ulong deferErr:1; /* 2 */ ulong underflow:1; /* 1 */ ulong exColl:1; /* 0 */#else ulong exColl:1; /* 0 */ ulong underflow:1; /* 1 */ ulong deferErr:1; /* 2 */ ulong noCarrr:1; /* 3 */ ulong lateColl:1; /* 4 */ ulong txParErr:1; /* 5 */ ulong txComp:1; /* 6 */ ulong reserved_0:9; /* 7 - 15 */ ulong txCFcomp:1; /* 16 */ ulong bTxNO:1; /* 17 */ ulong bTxEmpty:1; /* 18 */ ulong reserved_1:13; /* 19 - 31 */#endif}PACK_RESERVED;union UNION_BMTXSTAT{ struct BMTXSTAT_PACKED txStat_reg; ulong txStat_resetval;}PACK_RESERVED; typedef union UNION_BMTXSTAT uBMTXSTAT;struct BMRXINTEN_PACKED{#if BIG_ENDIAN ulong reserved_1:11; /* 21 - 31 */ ulong bRxEarlyIE:1; /* 20 */ ulong bRxFullIE:1; /* 19 */ ulong bRxMSOIE:1; /* 18 */ ulong bRxNOIE:1; /* 17 */ ulong bRxDoneIE:1; /* 16 */ ulong reserved_0:10; /* 6 - 15 */ ulong rxParErrIE:1; /* 5 */ ulong longErrIE:1; /* 4 */ ulong overflowIE:1; /* 3 */ ulong crcErrIE:1; /* 2 */ ulong alignErrIE:1; /* 1 */ ulong missRollIE:1; /* 0 */#else ulong missRollIE:1; /* 0 */ ulong alignErrIE:1; /* 1 */ ulong crcErrIE:1; /* 2 */ ulong overflowIE:1; /* 3 */ ulong longErrIE:1; /* 4 */ ulong rxParErrIE:1; /* 5 */ ulong reserved_0:10; /* 6 - 15 */ ulong bRxDoneIE:1; /* 16 */ ulong bRxNOIE:1; /* 17 */ ulong bRxMSOIE:1; /* 18 */ ulong bRxFullIE:1; /* 19 */ ulong bRxEarlyIE:1; /* 20 */ ulong reserved_1:11; /* 21 - 31 */#endif}PACK_RESERVED;union UNION_BMRXINTEN{ struct BMRXINTEN_PACKED rxIntEn_reg; ulong rxIntEn_resetval;}PACK_RESERVED; typedef union UNION_BMRXINTEN uBMRXINTEN;struct BMRXSTAT_PACKED{#if BIG_ENDIAN ulong reserved_1:5; /* 27 - 31 */ ulong bRxNFR:5; /* 22 - 26 */ ulong bRxFRF:1; /* 21 */ ulong bRxEarly:1; /* 20 */ ulong bRxFull:1; /* 19 */ ulong bRxMSO:1; /* 18 */ ulong bRxNO:1; /* 17 */ ulong bRxDone:1; /* 16 */ ulong reserved_0:10; /* 6 - 15 */ ulong rxParErr:1; /* 5 */ ulong longErr:1; /* 4 */ ulong overflow:1; /* 3 */ ulong crcErr:1; /* 2 */ ulong alignErr:1; /* 1 */ ulong missRoll:1; /* 0 */#else ulong missRoll:1; /* 0 */ ulong alignErr:1; /* 1 */ ulong crcErr:1; /* 2 */ ulong overflow:1; /* 3 */ ulong longErr:1; /* 4 */ ulong rxParErr:1; /* 5 */ ulong reserved_0:10; /* 6 - 15 */ ulong bRxDone:1; /* 16 */ ulong bRxNO:1; /* 17 */ ulong bRxMSO:1; /* 18 */ ulong bRxFull:1; /* 19 */ ulong bRxEarly:1; /* 20 */ ulong bRxFRF:1; /* 21 */ ulong bRxNFR:5; /* 22 - 26 */ ulong reserved_1:5; /* 27 - 31 */#endif}PACK_RESERVED;union UNION_BMRXSTAT{ struct BMRXSTAT_PACKED rxStat_reg; ulong rxStat_resetval;}PACK_RESERVED; typedef union UNION_BMRXSTAT uBMRXSTAT;struct BDMARXLEN_PACKED{#if BIG_ENDIAN ulong reserved_1:4; /* 28 - 31 */ ulong bRxMFS:12; /* 16 - 27 */ ulong reserved_0:4; /* 12 - 15 */ ulong bRxBS:12; /* 0 - 11 */#else ulong bRxBS:12; /* 0 - 11 */ ulong reserved_0:4; /* 12 - 15 */ ulong bRxMFS:12; /* 16 - 27 */ ulong reserved_1:4; /* 28 - 31 */#endif }PACK_RESERVED;union UNION_BDMARXLEN{ struct BDMARXLEN_PACKED rxLen_reg; ulong rxLen_resetval;}PACK_RESERVED; typedef union UNION_BDMARXLEN uBDMARXLEN;struct MACCON_PACKED{#if BIG_ENDIAN ulong reserved_3:1; /* 16 - 31 */ ulong mLINK10:1; /* 15 */ ulong reserved_2:2; /* 13 - 14 */ ulong mDC_OFFf:1; /* 12 */ ulong reserved_1:4; /* 8 -11 */ ulong mLOOP10:1; /* 7 */ ulong mII_OFF:1; /* 6 */ ulong reserved_0:1; /* 5 */ ulong mLoopBack:1; /* 4 */ ulong full_duplex:1; /* 3 */ ulong mReset:1; /* 2 */ ulong mHaltImm:1; /* 1 */ ulong mHaltReq:1; /* 0 */#else ulong mHaltReq:1; /* 0 */ ulong mHaltImm:1; /* 1 */ ulong mReset:1; /* 2 */ ulong full_duplex:1; /* 3 */ ulong mLoopBack:1; /* 4 */ ulong reserved_0:1; /* 5 */ ulong mII_OFF:1; /* 6 */ ulong mLOOP10:1; /* 7 */ ulong reserved_1:4; /* 8 -11 */ ulong mDC_OFFf:1; /* 12 */ ulong reserved_2:2; /* 13 - 14 */ ulong mLINK10:1; /* 15 */ ulong reserved_3:1; /* 16 - 31 */#endif }PACK_RESERVED;union UNION_MACCON{ struct MACCON_PACKED macCon_reg; ulong macCon_resetval;}PACK_RESERVED; typedef union UNION_MACCON uMACCON;struct CAMCON_PACKED{#if BIG_ENDIAN ulong reserved_0:27;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -