📄 cs8900a.h
字号:
//---------------------------------------------------------------------------
//
// Copyright (C) 1996-1997. Unpublished Work of Crystal Semiconductor Corp.
// All Rights Reserved.
//
// THIS WORK IS AN UNPUBLISHED WORK AND CONTAINS CONFIDENTIAL,
// PROPRIETARY AND TRADE SECRET INFORMATION OF CRYSTAL SEMICONDUCTOR.
// ACCESS TO THIS WORK IS RESTRICTED TO (I) CRYSTAL SEMICONDUCTOR EMPLOYEES
// WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF THEIR
// ASSIGNMENTS AND (II) ENTITIES OTHER THAN CRYSTAL SEMICONDUCTOR WHO
// HAVE ENTERED INTO APPROPRIATE LICENSE AGREEMENTS. NO PART OF THIS
// WORK MAY BE USED, PRACTICED, PERFORMED, COPIED, DISTRIBUTED, REVISED,
// MODIFIED, TRANSLATED, ABRIDGED, CONDENSED, EXPANDED, COLLECTED,
// COMPILED,LINKED,RECAST, TRANSFORMED, ADAPTED IN ANY FORM OR BY ANY
// MEANS,MANUAL, MECHANICAL, CHEMICAL, ELECTRICAL, ELECTRONIC, OPTICAL,
// BIOLOGICAL, OR OTHERWISE WITHOUT THE PRIOR WRITTEN PERMISSION AND
// CONSENT OF CRYSTAL SEMICONDUCTOR . ANY USE OR EXPLOITATION OF THIS WORK
// WITHOUT THE PRIOR WRITTEN CONSENT OF CRYSTAL SEMICONDUCTOR COULD
// SUBJECT THE PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY.
//
//---------------------------------------------------------------------------
/* v8900.h */
#ifndef _cs8900a_h_
#include <ndis.h>
#define _cs8900a_h_
#include "Ind.h"
//#include "Bvd1BD.h"
//////////////////////////////////////////////////
#define PRINTDEBUGMSG //DEBUGMSG//RETAILMSG
#define PRINTRETAILMSG //RETAILMSG
//Windows CE debug zones
#define ZONEID_INIT 0
#define ZONEID_INTR 1
#define ZONEID_TX 2
#define ZONEID_RX 3
#define ZONEID_RX_OVRN 4
#define ZONEID_MC 5
//...
#define ZONEID_WARN 14
#define ZONEID_ERROR 15
#define ZONEMASK_INIT (1<<ZONEID_INIT)
#define ZONEMASK_INTR (1<<ZONEID_INTR)
#define ZONEMASK_TX (1<<ZONEID_TX)
#define ZONEMASK_RX (1<<ZONEID_RX)
#define ZONEMASK_RX_OVRN (1<<ZONEID_RX_OVRN)
#define ZONEMASK_MC (1<<ZONEID_MC)
//...
#define ZONEMASK_WARN (1<<ZONEID_WARN)
#define ZONEMASK_ERROR (1<<ZONEID_ERROR)
#ifdef DEBUG
// These macros are used as the first arg to DEBUGMSG.
#define ZONE_INIT DEBUGZONE(ZONEID_INIT)
#define ZONE_INTR DEBUGZONE(ZONEID_INTR)
#define ZONE_TX DEBUGZONE(ZONEID_TX)
#define ZONE_RX DEBUGZONE(ZONEID_RX)
#define ZONE_RX_OVRN DEBUGZONE(ZONEID_RX_OVRN)
#define ZONE_MC DEBUGZONE(ZONEID_MC)
//...
#define ZONE_WARN DEBUGZONE(ZONEID_WARN)
#define ZONE_ERROR DEBUGZONE(ZONEID_ERROR)
#else
// For release configurations, these conditionals are always 0.
#define ZONE_INIT 1
#define ZONE_INTR 1
#define ZONE_TX 1
#define ZONE_RX 1
#define ZONE_RX_OVRN 1
#define ZONE_MC 1
//...
#define ZONE_WARN 1
#define ZONE_ERROR 1
#endif
///////////////////////////////////////////////
// Strings/messages containing vendor specific information
#define VENDOR_FILEDESCRIPTION_STR "Crystal LAN(tm) CS8900A Ethernet Network Driver"
#define VENDOR_PRODUCT_NAME_STR "Crystal LAN(tm) CS8900A Ethernet Adapter"
///by marshal, defines
//DCD 0x9A800000, 0x08000000, 1 ; MAINSTONEII: nCS2 (lower half): Board registers (FPGA). cs8900
#define CACHED_TO_UNCACHED_OFFSET 0x20000000
#define ETHERNET_CS8900_BASE_PHYSICAL 0x08000000 //GPS board:nCS2: Ethernet
#define ETHERNET_CS8900_BASE_C_VIRTUAL 0x9A800000
#define ETHERNET_CS8900_BASE_U_VIRTUAL (ETHERNET_CS8900_BASE_C_VIRTUAL + CACHED_TO_UNCACHED_OFFSET)
// nCS4: Indicator Light
//
//#define INDICATOR_LIGHT_BASE_PHYSICAL 0x11000000
//#define INDICATOR_LIGHT_BASE_C_VIRTUAL 0x9E600000
//#define INDICATOR_LIGHT_BASE_U_VIRTUAL (INDICATOR_LIGHT_BASE_C_VIRTUAL + CACHED_TO_UNCACHED_OFFSET)
//
//forward pointer declaration
typedef struct CHIP_t *PCHIP;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned char *PBYTE;
typedef unsigned short *PWORD;
typedef unsigned long *PDWORD;
typedef void *PVOID;
typedef DWORD PORT;
#define UNSPECIFIED (-1)
#define TRUE 1
#define FALSE 0
#define SUCCESS 0
#define FAILURE 1
/* Ethernet Address */
typedef struct
{
WORD Part[3];
} EA, *PEA;
/* Chip Configuration */
typedef struct CFG_t
{
PORT IOBase;
WORD IOSize; /* In bytes */
DWORD MemoryBase;
WORD MemorySize; /* In bytes */
DWORD ROMBase;
WORD ROMSize; /* In bytes */
BYTE IntLine;
BYTE DMALine;
EA EthernetAddr;
WORD MediaSpeed; /* 10 = 10 Mbit */
BYTE RequestedMediaType;
BYTE DetectedMediaType;
BYTE RequestedDuplexMode;
BYTE CurrentDuplexMode;
BYTE Filtering;
BYTE BusType;
WORD BusSlot;
BYTE MaxTxCount;
BYTE MaxRxCount;
WORD LookAheadSize;
DWORD Flags;
//@drs 11-3-97 3.21 add cs8900 support
WORD ChipType;
WORD ChipRev;
} CFG, *PCFG;
/* Bus Type */
#define BUS_ISA 0
#define BUS_MCA 1
#define BUS_EISA 2
#define BUS_PCMCIA 3
#define BUS_PCI 4
#define BUS_VESA 5
/* Media Type */
#define MEDIA_AUTO_DETECT 0x00
#define MEDIA_BASE_T 0x01
#define MEDIA_BASE_AUI 0x02
#define MEDIA_BASE_2 0x03
#define MEDIA_PENDING 0xFE
#define MEDIA_NONE 0xFF
/* Duplex Mode */
#define DUPLEX_AUTO_NEGOTIATE 0x00
#define DUPLEX_HALF 0x01
#define DUPLEX_FULL 0x02
#define DUPLEX_PENDING 0xFE
#define DUPLEX_NONE 0xFF
/* Filtering */
#define FILTER_INDIVIDUAL_ACCEPT 0x01
#define FILTER_BROADCAST_ACCEPT 0x02
#define FILTER_MULTICAST_ACCEPT 0x04
#define FILTER_PROMISCUOUS_ACCEPT 0x08
/* Transmit Errors */
#define TX_ERR_NO_BUFFER 0x0001
#define TX_ERR_TOO_BIG 0x0002
#define TX_ERR_TOO_MANY_FRAGS 0x0004
#define TX_ERR_SQE_ERROR 0x0008
#define TX_ERR_JABBER 0x0010
#define TX_ERR_LOCK_FAIL 0x0020
#define TX_ERR_EXCESS_COLL 0x0100
#define TX_ERR_UNDERRUN 0x0200
#define TX_ERR_OUT_OF_WIN 0x0400
#define TX_ERR_LOSS_CRS 0x1000
#define TX_ERR_FRAME_ABORT 0x2000
/* Receive Errors */
#define RX_ERR_CRC_ERROR 0x0001
#define RX_ERR_EXTRA_DATA 0x0002
#define RX_ERR_RUNT 0x0004
#define RX_ERR_FRAMING 0x0008
#define RX_ERR_OVERRUN 0x0010
#define RX_ERR_RX_ERR 0x0020
#define RX_ERR_RX_MISS 0x0100
#define RX_ERR_DRIBBLE 0x0200
#define RX_ERR_TOO_MANY_FRAGS 0x0400
#define RX_ERR_NO_BUFFER 0x0800
/* Flags */
#define FLAG_BUS_MASTER 0x00000001
#define FLAG_INTERRUPT_SHARED 0x00000002
/* Override permission bits */
#define OVERRIDE_IO_BASE 0x0001
#define OVERRIDE_MEM_BASE 0x0002
#define OVERRIDE_ROM_BASE 0x0004
#define OVERRIDE_INT_LINE 0x0008
#define OVERRIDE_DMA_LINE 0x0010
#define OVERRIDE_ETHER_ADDR 0x0020
#define OVERRIDE_MEDIA_TYPE 0x0040
#define OVERRIDE_DUPLEX_MODE 0x0080
#define OVERRIDE_FILTERING 0x0100
/* Chip Result Codes */
#define CHIP_SUCCESS 0
#define CHIP_FAILURE 1
/* Timer Event Handler Type */
typedef void (* TIMER_EVENT_HANDLER)( PCHIP pChip, WORD TimerID, PVOID pParm );
#define MAX_TIMERS 1
typedef struct
{
NDIS_MINIPORT_TIMER TimerHandle;
WORD TimerActive;
TIMER_EVENT_HANDLER TimerRoutine;
WORD TimerID;
PCHIP pChip;
PVOID pParm;
} VOMINITIMER, *PVOMINITIMER;
typedef struct
{
VOMINITIMER Timers[MAX_TIMERS];
} VOMINIPDATA, *PVOMINIPDATA;
#define VP_MAX_FRAMESIZE 1514
#define VP_MIN_FRAMESIZE 60
#define VP_HEADERSIZE 14
#define CRYSTAL_MCAST_LIST_SIZE 32 // @kml 6/24/99 changed from 6 ro 32
typedef struct txqueueelement
{
PNDIS_PACKET NextPacket;
NDIS_STATUS XmitRC;
} TXQUEUEELEMENT, *PTXQUEUEELEMENT;
typedef struct
{
char McastAddress[ETH_LENGTH_OF_ADDRESS];
} CRYSTALMCASTADDRESS, *PCRYSTALMCASTADDRESS;
typedef struct
{
NDIS_HANDLE vpMiniportAdapterHandle;
PVOID VMHandle;
PVOID VOSHandle;
PCHIP pChip;
UCHAR PermanentNetworkAddress[ETH_LENGTH_OF_ADDRESS];
UCHAR CurrentNetworkAddress[ETH_LENGTH_OF_ADDRESS];
WORD ProtocolLookahead;
ULONG PacketFilter;
ULONG CableConnected;
ULONG CurrentState;
ULONG XmitOKs;
ULONG XmitErrors;
ULONG XmitOneCollisions;
ULONG XmitMoreCollisions;
ULONG XmitMaxCollisions;
ULONG XmitLateCollisions;
ULONG XmitUnderrun;
ULONG XmitLostCRS;
ULONG RcvOKs;
ULONG RcvErrors;
ULONG RcvNoBuffers;
ULONG RcvErrorAlignments;
ULONG RcvCRCErrors;
ULONG RcvOverrun;
PNDIS_PACKET TxQueueHead;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -