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

📄 rtl81x9.h

📁 在Tornado环境下实现的8139网卡芯片的驱动程序
💻 H
📖 第 1 页 / 共 2 页
字号:
											/* 11 - Cfg Reg Write Mode */#define RTL_EEMODE_WRITECFG		(0x80|0x40)#define RTL_EEMODE_OFF			0x00/* MII register (8129 only) *//* Offset 005Ah - R/W */#define RTL_MII_CLK			0x01#define RTL_MII_DATAIN		0x02#define RTL_MII_DATAOUT		0x04#define RTL_MII_DIR			0x80	/* 0 == input, 1 == output *//* * EEPROM control register */#define RTL_EE_DATAOUT			0x01		/* Data out */#define RTL_EE_DATAIN			0x02		/* Data in */#define RTL_EE_CLK				0x04		/* clock */#define RTL_EE_SEL				0x08		/* chip select */#define RTL_EE_MODE				(0x40|0x80)/* 9346 EEPROM commands */#define RTL_EECMD_WRITE			0x140#define RTL_EECMD_READ			0x180#define RTL_EECMD_ERASE			0x1c0#define RTL_EE_ID				0x00#define RTL_EE_PCI_VID			0x01#define RTL_EE_PCI_DID			0x02/* Location of station address inside EEPROM */#define RTL_EE_EADDR			0x07/* Configuration Register 0 *//* Offset 0051h - R/W */#define RTL_CONFIG0_BS2			0x04		/* Boot ROM Size */#define RTL_CONFIG0_BS1			0x02		/* 000 - No  Boot Rom */#define RTL_CONFIG0_BS0			0x01		/* 001 - 8k  Boot Rom */											/* 010 - 16k Boot Rom */											/* 011 - 32k Boot Rom */											/* 100 - 64k Boot Rom */											/* 101 - 128 Boot Rom */											/* 110 - unused */											/* 111 - unused *//* Configuration Register 1 *//* Offset 0052h - R/W */#define RTL_CONFIG1_LEDS1		0x80		/* LED's */#define RTL_CONFIG1_LEDS0		0x40		/* Refer to LED IFace */#define RTL_CONFIG1_DVRLOAD		0x20		/* Driver loaded status bit */#define RTL_CONFIG1_LWACT		0x10		/* LWAKE Active mode */#define RTL_CONFIG1_MEMMAP		0x08		/* Registers Mapped to PCI Memory */#define RTL_CONFIG1_IOMAP		0x04		/* Registers Mapped to PCI I/O space */#define RTL_CONFIG1_VPD			0x02		/* Vital Product Data */#define RTL_CONFIG1_PMEN		0x01		/* Power Management Enable *//* Media Status Bits 	*//* Offset 0058h - R/W 	*/#define RTL_MED_RXPF				0x01	/* Rx Pause Flag */#define RTL_MED_TXPF				0x02	/* Tx Pause Flag */#define	RTL_MED_LINKB				0x04	/* Inverse of Link Status */											/* 0 - Link OK */#define	RTL_MED_SPEED				0x08    /* 1 - 10Mbps, 0 - 100Mbps */#define RTL_MED_AUX					0x10	/* Aux power Status */#define	RTL_MED_RXFCE				0x40	/* Rx Flow Control enable */#define	RTL_MED_TXFCE				0x80	/* Tx Flow control enable *//* Configuration Register 3	*//* Offset 0059h - R/W 		*/#define RTL_CONFIG3_GNTSEL			0x80	/* Grant Select */#define RTL_CONFIG3_PARM_EN			0x40	/* Paramater Enable - 100Mbps only */#define RTL_CONFIG3_MAGIC			0x20	/* Magic Packet */#define RTL_CONFIG3_LINKUP			0x10#define RTL_CONFIG3_CARDB_EN		0x08	/* Card Bus Enable */#define RTL_CONFIG3_CLKRUN_EN		0x04#define RTL_CONFIG3_FUNCREG_EN		0x02	/* Functions registers enable */#define RTL_CONFIG3_FBTBEN			0x01	/* Fast back to back enable *//* Configuration Register 4 *//* Offset 005Ah - R/W 		*/#define RTL_CONFIG4_RXFIFO_CLR		0x80	/* Automatically clear RX FIFO OFlow */#define RTL_CONFIG4_ANAOFF			0x40	/* Analogue Power Off */#define RTL_CONFIG4_LONGWF			0x20	/* Long Wake up Frame */#define RTL_CONFIG4_LWPME			0x10	/* LANWAKE vs PMEB */#define RTL_CONFIG4_MSWFB			0x08	/* Microsoft Wake up frame */#define RTL_CONFIG4_LWPTN			0x04	/* LWAKE Pattern */#define RTL_CONFIG4_PARM_EN2		0x02	/* Parameter Enable 2  */#define RTL_CONFIG4_RD_AUX			0x01	/* Rev d - Aux Power Status *//* Transmit Status of all Descriptors *//* Offset 0060 - 0061h - R/W 		  *//* RTL_REGS_TX_SUMMARY			      */#define RTL_TSAD_TOK_MSK			0xf000	/* Tx Ok Descs          */#define RTL_TSAD_TUN_MSK			0x0f00	/* Tx Underrun Descs    */#define RTL_TSAD_TABT_MSK			0x00f0	/* Transmit Abort Descs */#define RTL_TSAD_OWN_MSK			0x000f	/* OWN Bit Descriptors  *//* Basic Mode Control Register 	*//* Offset 0062-0063h - R/W 		*//* Note : All Default are 0 	*/#define	RTL_BMCR_RESET				0x8000	/* Sets Status and Control Regs */											/* 1=Software reset 0=normal op */#define	RTL_BMCR_SPD_SET			0x2000	/* Network Speed */											/* 1=100Mbps, 0=10Mbps */#define	RTL_BMCR_ANE				0x1000	/* Auto Negotiation Enable */#define	RTL_BMCR_RAN				0x0200	/* Restart Auto Negotiation */#define	RTL_BMCR_DUPX				0x0100	/* Duplex mode */											/* 1=full duplex, 0=normal *//* Basic Mode Status Register 	*//* Offset 0064-0065h - R/W 		*/#define	RTL_BMSR_100BASE_T4			0x8000	/* 1=enable, default = 0 */#define	RTL_BMSR_100BASE_TX_FDUPX	0x4000	/* 1=enable, default = 1 */#define	RTL_BMSR_100BASE_TX_HDUPX	0x2000	/* 1=enable, default = 1 */#define	RTL_BMSR_10BASE_T_FDUPX		0x1000	/* 1=enable, default = 1 */#define	RTL_BMSR_10BASE_T_HDUPX		0x0800	/* 1=enable, default = 1 */#define	RTL_BMSR_AUTO_NEG_COMP		0x0020	/* 1=completed,   default = 0 */#define	RTL_BMSR_REMOTE_FAULT		0x0010	/* 1=detected,    default = 0 */#define	RTL_BMSR_AUTO_NEG_FAIL		0x0008	/* 1=failed,      default = 1 */#define	RTL_BMSR_LINK_STATUS		0x0004	/* 1=established, default = 0 */#define	RTL_BMSR_JABBER_DETECT		0x0002	/* 1=detected,    default = 0 */#define	RTL_BMSR_EXT_CAPABILITY		0x0001	/* 1=extended,    default = 1 */											/* 0=basic regs *//* Auto Negotiation Advertisement Register 	*//* Offset 0066-0067h - R/W 		*/#define	RTL_ANAR_NP			0x8000	/* Next Page Bit */									/* 0=primary capability data page 	*/									/* 1=protocol specific data page	*/									/* default = 0 */#define	RTL_ANAR_ACK		0x4000	/* 1=acknowledge, default = 0 */#define	RTL_ANAR_RF			0x2000	/* 1=advertise remote fault detection	*/									/*  default = 0 */#define	RTL_ANAR_PAUSE		0x0400	/* 1=flow control supported locally */									/* default comes from EEPROM */#define	RTL_ANAR_T4			0x0200	/* 1=100Base-T4 supported */									/* default = 0 */#define	RTL_ANAR_TXFD		0x0100	/* 1=100Base-Tx full duplex supported */									/* default = 1 */#define	RTL_ANAR_TX			0x0080	/* 1=100Base-Tx supported */									/* default = 1 */#define	RTL_ANAR_10FD		0x0040	/* 1=10Base-T full duplex supported */									/* default = 1 */#define	RTL_ANAR_10			0x0020	/* 1=10Base-T supported */									/* default = 1 */#define	RTL_ANAR_SELECTOR	0x0001	/* Binary Encoded Selector */									/* Currently only CSMA/CD <00001> */									/* Supported */									/* default = 00001 *//*  EEPROM_Ctrl bits. *//* eeprom contents */    #define RTL_EE_OEM_ADR0		0x0E#define	RTL_EE_OEM_ADR1		0x11#define RTL_EE_OEM_ADR2		0x13#define	RTL_VENDOR_ID		0x10ec#define	RTL_VENDOR_ID_MIS	0x1113#define	RTL_8129_DEV_ID		0x8129#define	RTL_8139_DEV_ID 	0x8139#define	RTL_MIS_DEV_ID 		0x1211#define	RTL_DEV_MASK		0xffff#define	RTL_IO_SIZE			0x80#define RTL_TIMEOUT			1000#define RTL_WIN_0    		0#define RTL_MIN_FBUF     100    /* Minimum size of the first buffer in a */                               /* chain. */typedef struct rtl_mii_frame {	UINT8			mii_stdelim;	UINT8			mii_opcode;	UINT8			mii_phyaddr;	UINT8			mii_regaddr;	UINT8			mii_turnaround;	USHORT			mii_data;} RTL_MII_FRAME ;/* * MII constants */#define RTL_MII_STARTDELIM	0x01#define RTL_MII_READOP		0x02#define RTL_MII_WRITEOP		0x01#define RTL_MII_TURNAROUND	0x02/* * Texas Instruments PHY identifiers */#define TI_PHY_VENDORID		0x4000#define TI_PHY_10BT			0x501F#define TI_PHY_100VGPMI		0x502F/* * These ID values are for the NS DP83840A 10/100 PHY */#define NS_PHY_VENDORID		0x2000#define NS_PHY_83840A		0x5C0F/* * Level 1 10/100 PHY */#define LEVEL1_PHY_VENDORID	0x7810#define LEVEL1_PHY_LXT970	0x000F/* * Intel 82555 10/100 PHY */#define INTEL_PHY_VENDORID	0x0A28#define INTEL_PHY_82555		0x015F/* * SEEQ 80220 10/100 PHY */#define SEEQ_PHY_VENDORID	0x0016#define SEEQ_PHY_80220		0xF83F#define RTL_PHY_UNKNOWN			6#define RTL_PHYADDR_MIN			0x00#define RTL_PHYADDR_MAX			0x1F#define RTL_PHY_BMCR			0x00#define RTL_PHY_BMSR			0x01#define RTL_PHY_VENID			0x02#define RTL_PHY_DEVID			0x03#define RTL_PHY_ANAR			0x04#define RTL_PHY_LPAR			0x05#define RTL_PHY_ANEXP			0x06#define RTL_PHY_ANAR_NEXTPAGE	0x8000#define RTL_PHY_ANAR_RSVD0		0x4000#define RTL_PHY_ANAR_TLRFLT		0x2000#define RTL_PHY_ANAR_RSVD1		0x1000#define RTL_PHY_ANAR_RSVD2		0x0800#define RTL_PHY_ANAR_RSVD3		0x0400#define RTL_PHY_ANAR_100BT4		0x0200#define RTL_PHY_ANAR_100BTXFULL	0x0100#define RTL_PHY_ANAR_100BTXHALF	0x0080#define RTL_PHY_ANAR_10BTFULL	0x0040#define RTL_PHY_ANAR_10BTHALF	0x0020#define RTL_PHY_ANAR_PROTO4		0x0010#define RTL_PHY_ANAR_PROTO3		0x0008#define RTL_PHY_ANAR_PROTO2		0x0004#define RTL_PHY_ANAR_PROTO1		0x0002#define RTL_PHY_ANAR_PROTO0		0x0001/* * These are the register definitions for the PHY (physical layer * interface chip). *//* * PHY BMCR Basic Mode Control Register */#define RTL_PHY_BMCR_RESET			0x8000#define RTL_PHY_BMCR_LOOPBK			0x4000#define RTL_PHY_BMCR_SPEEDSEL		0x2000#define RTL_PHY_BMCR_AUTONEGENBL		0x1000#define RTL_PHY_BMCR_RSVD0			0x0800	/* write as zero */#define RTL_PHY_BMCR_ISOLATE		0x0400#define RTL_PHY_BMCR_AUTONEGRSTR		0x0200#define RTL_PHY_BMCR_DUPLEX			0x0100#define RTL_PHY_BMCR_COLLTEST		0x0080#define RTL_PHY_BMCR_RSVD1			0x0040	/* write as zero, don't care */#define RTL_PHY_BMCR_RSVD2			0x0020	/* write as zero, don't care */#define RTL_PHY_BMCR_RSVD3			0x0010	/* write as zero, don't care */#define RTL_PHY_BMCR_RSVD4			0x0008	/* write as zero, don't care */#define RTL_PHY_BMCR_RSVD5			0x0004	/* write as zero, don't care */#define RTL_PHY_BMCR_RSVD6			0x0002	/* write as zero, don't care */#define RTL_PHY_BMCR_RSVD7			0x0001	/* write as zero, don't care *//* * RESET: 1 == software reset, 0 == normal operation * Resets status and control registers to default values. * Relatches all hardware config values. * * LOOPBK: 1 == loopback operation enabled, 0 == normal operation * * SPEEDSEL: 1 == 100Mb/s, 0 == 10Mb/s * Link speed is selected byt his bit or if auto-negotiation if bit * 12 (AUTONEGENBL) is set (in which case the value of this register * is ignored). * * AUTONEGENBL: 1 == Autonegotiation enabled, 0 == Autonegotiation disabled * Bits 8 and 13 are ignored when autoneg is set, otherwise bits 8 and 13 * determine speed and mode. Should be cleared and then set if PHY configured * for no autoneg on startup. * * ISOLATE: 1 == isolate PHY from MII, 0 == normal operation * * AUTONEGRSTR: 1 == restart autonegotiation, 0 = normal operation * * DUPLEX: 1 == full duplex mode, 0 == half duplex mode * * COLLTEST: 1 == collision test enabled, 0 == normal operation *//*  * PHY, BMSR Basic Mode Status Register  */   #define RTL_PHY_BMSR_100BT4			0x8000#define RTL_PHY_BMSR_100BTXFULL		0x4000#define RTL_PHY_BMSR_100BTXHALF		0x2000#define RTL_PHY_BMSR_10BTFULL		0x1000#define RTL_PHY_BMSR_10BTHALF		0x0800#define RTL_PHY_BMSR_RSVD1			0x0400	/* write as zero, don't care */#define RTL_PHY_BMSR_RSVD2			0x0200	/* write as zero, don't care */#define RTL_PHY_BMSR_RSVD3			0x0100	/* write as zero, don't care */#define RTL_PHY_BMSR_RSVD4			0x0080	/* write as zero, don't care */#define RTL_PHY_BMSR_MFPRESUP		0x0040#define RTL_PHY_BMSR_AUTONEGCOMP	0x0020#define RTL_PHY_BMSR_REMFAULT		0x0010#define RTL_PHY_BMSR_CANAUTONEG		0x0008#define RTL_PHY_BMSR_LINKSTAT		0x0004#define RTL_PHY_BMSR_JABBER			0x0002#define RTL_PHY_BMSR_EXTENDED		0x0001/* ethernet media */#define IFM_ETHER		0x00000020#define	IFM_10_T		3		/* 10BaseT - RJ45 */#define	IFM_10_2		4		/* 10Base2 - Thinnet */#define	IFM_10_5		5		/* 10Base5 - AUI */#define	IFM_100_TX		6		/* 100BaseTX - RJ45 */#define	IFM_100_FX		7		/* 100BaseFX - Fiber */#define	IFM_100_T4		8		/* 100BaseT4 - 4 pair cat 3 */#define	IFM_100_VG		9		/* 100VG-AnyLAN */#define	IFM_100_T2		10		/* 100BaseT2 *//* Shared media sub-types */#define	IFM_AUTO		0	/* Autoselect best media */#define	IFM_MANUAL		1	/* Jumper/dipswitch selects media */#define	IFM_NONE		2	/* Deselect all media *//* Shared options */#define IFM_FDX			0x00100000	/* Force full duplex */#define	IFM_HDX			0x00200000	/* Force half duplex */#define IFM_FLAG0		0x01000000	/* Driver defined flag */#define IFM_FLAG1		0x02000000	/* Driver defined flag */#define IFM_FLAG2		0x04000000	/* Driver defined flag */#define	IFM_LOOP		0x08000000	/* Put hardware in loopback *//* Masks */#define	IFM_NMASK		0x000000e0	/* Network type */#define	IFM_TMASK		0x0000000f	/* Media sub-type */#define	IFM_IMASK		0xf0000000	/* Instance */#define	IFM_ISHIFT		28		/* Instance shift */#define	IFM_OMASK		0x0000ff00	/* Type specific options */#define	IFM_GMASK		0x0ff00000	/* Global options *//* Status bits */#define	IFM_AVALID		0x00000001	/* Active bit valid */#define	IFM_ACTIVE		0x00000002	/* Iface bound to working net *//* * Macros to extract various bits of information from the media word. */#define	IFM_TYPE(x)	((x) & IFM_NMASK)#define	IFM_SUBTYPE(x)	((x) & IFM_TMASK)#define	IFM_INST(x)	(((x) & IFM_IMASK) >> IFM_ISHIFT)#define RTL_FLAG_FORCEDELAY	1#define RTL_FLAG_SCHEDDELAY	2#define RTL_FLAG_DELAYTIMEO	3	/* The definition of the driver control structure */typedef struct rtl_device    {	    END_OBJ     end;			/* The class we inherit from. */    rtl_ib       *ib;			/* ptr to Initialization Block */    UINT8		devType;	    /* 8129, 8139A or 8139B  OR 8139C*/    int			unit;			/* unit number */	UINT8		phy_addr;		/* PHY address */    int			nextDesc;		/* Next Tx Descriptor */    int			freeDesc;		/* Free Tx Descriptors */    char		*pDescMem[RTL_NUM_TX_DESC]; /* Pointer to buffer */	char 		txmemspace[RTL_NUM_TX_DESC * RTL81x9_BUFSIZE];    ULONG		rmdNext;		/* index into the next Rx Pkt */    char		*ptrRxBufSpace;	/* Ptr to the Rx Buffer Pool */    int			rringSize;		/* RMD ring size */    int 		rringLen; 		/* RMD ring length (bytes) */    RTL_RMD		*pRring;		/* RMD ring start */    int         ivec;           /* interrupt vector */    int         ilevel;         /* interrupt level */    UINT32		devAdrs;		/* device register RAP */    UINT16		csr3B;			/* csr3 value board specific */    char*       pShMem;         /* real ptr to shared memory */    char*       memBase;        /* RTL memory pool base */    char*       memAdrs;        /* RTL memory pool base */    int         memSize;        /* RTL memory pool size */    int         memWidth;       /* width of data port */    int         offset;    int         csr0Errs;       /* count of csr0 errors */    UINT32      flags;			/* Our local flags */    UINT32		pciMemBase;		/* memory base as seen from PCI*/    UCHAR		enetAddr[6];	/* ethernet address */    CACHE_FUNCS cacheFuncs;     /* cache function pointers */    BOOL		txBlocked; 		/* transmit flow control */    CL_POOL_ID  pClPoolId;    END_ERR     lastError;      /* Last error passed to muxError */    BOOL        errorHandling;  /* task level error handling */    u_short     errorStat;      /* error status */    UINT32      reg_rcr;	/* RCR for reset */    			    } RTL81X9END_DEVICE;/* Configuration items */#define RMD_SIZ	sizeof(RTL_RMD)#define IB_SIZ	sizeof(rtl_ib)#ifdef __cplusplus}#endif#endif /* __INCrtl81x9Endh */

⌨️ 快捷键说明

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