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

📄 cs8900a.h

📁 PXA255/270平台的 CS8900网卡驱动程序
💻 H
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------
//
//  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 + -