if_vrreg.h

来自「基于组件方式开发操作系统的OSKIT源代码」· C头文件 代码 · 共 637 行 · 第 1/2 页

H
637
字号
/* * Copyright (c) 1997, 1998 *	Bill Paul <wpaul@ctr.columbia.edu>.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by Bill Paul. * 4. Neither the name of the author nor the names of any co-contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * *	$Id: if_vrreg.h,v 1.2.2.2 1999/05/06 15:39:39 wpaul Exp $ *//* * Rhine register definitions. */#define VR_PAR0			0x00	/* node address 0 to 4 */#define VR_PAR1			0x04	/* node address 2 to 6 */#define VR_RXCFG		0x06	/* receiver config register */#define VR_TXCFG		0x07	/* transmit config register */#define VR_COMMAND		0x08	/* command register */#define VR_ISR			0x0C	/* interrupt/status register */#define VR_IMR			0x0E	/* interrupt mask register */#define VR_MAR0			0x10	/* multicast hash 0 */#define VR_MAR1			0x14	/* multicast hash 1 */#define VR_RXADDR		0x18	/* rx descriptor list start addr */#define VR_TXADDR		0x1C	/* tx descriptor list start addr */#define VR_CURRXDESC0		0x20#define VR_CURRXDESC1		0x24#define VR_CURRXDESC2		0x28#define VR_CURRXDESC3		0x2C#define VR_NEXTRXDESC0		0x30#define VR_NEXTRXDESC1		0x34#define VR_NEXTRXDESC2		0x38#define VR_NEXTRXDESC3		0x3C#define VR_CURTXDESC0		0x40#define VR_CURTXDESC1		0x44#define VR_CURTXDESC2		0x48#define VR_CURTXDESC3		0x4C#define VR_NEXTTXDESC0		0x50#define VR_NEXTTXDESC1		0x54#define VR_NEXTTXDESC2		0x58#define VR_NEXTTXDESC3		0x5C#define VR_CURRXDMA		0x60	/* current RX DMA address */#define VR_CURTXDMA		0x64	/* current TX DMA address */#define VR_TALLYCNT		0x68	/* tally counter test register */#define VR_PHYADDR		0x6C#define VR_MIISTAT		0x6D#define VR_BCR0			0x6E#define VR_BCR1			0x6F#define VR_MIICMD		0x70#define VR_MIIADDR		0x71#define VR_MIIDATA		0x72#define VR_EECSR		0x74#define VR_TEST			0x75#define VR_GPIO			0x76#define VR_CONFIG		0x78#define VR_MPA_CNT		0x7C#define VR_CRC_CNT		0x7E/* * RX config bits. */#define VR_RXCFG_RX_ERRPKTS	0x01#define VR_RXCFG_RX_RUNT	0x02#define VR_RXCFG_RX_MULTI	0x04#define VR_RXCFG_RX_BROAD	0x08#define VR_RXCFG_RX_PROMISC	0x10#define VR_RXCFG_RX_THRESH	0xE0#define VR_RXTHRESH_32BYTES	0x00#define VR_RXTHRESH_64BYTES	0x20#define VR_RXTHRESH_128BYTES	0x40#define VR_RXTHRESH_256BYTES	0x60#define VR_RXTHRESH_512BYTES	0x80#define VR_RXTHRESH_768BYTES	0xA0#define VR_RXTHRESH_1024BYTES	0xC0#define VR_RXTHRESH_STORENFWD	0xE0/* * TX config bits. */#define VR_TXCFG_RSVD0		0x01#define VR_TXCFG_LOOPBKMODE	0x06#define VR_TXCFG_BACKOFF	0x08#define VR_TXCFG_RSVD1		0x10#define VR_TXCFG_TX_THRESH	0xE0#define VR_TXTHRESH_32BYTES	0x00#define VR_TXTHRESH_64BYTES	0x20#define VR_TXTHRESH_128BYTES	0x40#define VR_TXTHRESH_256BYTES	0x60#define VR_TXTHRESH_512BYTES	0x80#define VR_TXTHRESH_768BYTES	0xA0#define VR_TXTHRESH_1024BYTES	0xC0#define VR_TXTHRESH_STORENFWD	0xE0/* * Command register bits. */#define VR_CMD_INIT		0x0001#define VR_CMD_START		0x0002#define VR_CMD_STOP		0x0004#define VR_CMD_RX_ON		0x0008#define VR_CMD_TX_ON		0x0010#define	VR_CMD_TX_GO		0x0020#define VR_CMD_RX_GO		0x0040#define VR_CMD_RSVD		0x0080#define VR_CMD_RX_EARLY		0x0100#define VR_CMD_TX_EARLY		0x0200#define VR_CMD_FULLDUPLEX	0x0400#define VR_CMD_TX_NOPOLL	0x0800#define VR_CMD_RESET		0x8000/* * Interrupt status bits. */#define VR_ISR_RX_OK		0x0001	/* packet rx ok */#define VR_ISR_TX_OK		0x0002	/* packet tx ok */#define VR_ISR_RX_ERR		0x0004	/* packet rx with err */#define VR_ISR_TX_ABRT		0x0008	/* tx aborted due to excess colls */#define VR_ISR_TX_UNDERRUN	0x0010	/* tx buffer underflow */#define VR_ISR_RX_NOBUF		0x0020	/* no rx buffer available */#define VR_ISR_BUSERR		0x0040	/* PCI bus error */#define VR_ISR_STATSOFLOW	0x0080	/* stats counter oflow */#define VR_ISR_RX_EARLY		0x0100	/* rx early */#define VR_ISR_LINKSTAT		0x0200	/* MII status change */#define VR_ISR_RX_OFLOW		0x0400	/* rx FIFO overflow */#define VR_ISR_RX_DROPPED	0x0800#define VR_ISR_RX_NOBUF2	0x1000#define VR_ISR_TX_ABRT2		0x2000#define VR_ISR_LINKSTAT2	0x4000#define VR_ISR_MAGICPACKET	0x8000/* * Interrupt mask bits. */#define VR_IMR_RX_OK		0x0001	/* packet rx ok */#define VR_IMR_TX_OK		0x0002	/* packet tx ok */#define VR_IMR_RX_ERR		0x0004	/* packet rx with err */#define VR_IMR_TX_ABRT		0x0008	/* tx aborted due to excess colls */#define VR_IMR_TX_UNDERRUN	0x0010	/* tx buffer underflow */#define VR_IMR_RX_NOBUF		0x0020	/* no rx buffer available */#define VR_IMR_BUSERR		0x0040	/* PCI bus error */#define VR_IMR_STATSOFLOW	0x0080	/* stats counter oflow */#define VR_IMR_RX_EARLY		0x0100	/* rx early */#define VR_IMR_LINKSTAT		0x0200	/* MII status change */#define VR_IMR_RX_OFLOW		0x0400	/* rx FIFO overflow */#define VR_IMR_RX_DROPPED	0x0800#define VR_IMR_RX_NOBUF2	0x1000#define VR_IMR_TX_ABRT2		0x2000#define VR_IMR_LINKSTAT2	0x4000#define VR_IMR_MAGICPACKET	0x8000#define VR_INTRS							\	(VR_IMR_RX_OK|VR_IMR_TX_OK|VR_IMR_RX_NOBUF|			\	VR_IMR_TX_ABRT|VR_IMR_TX_UNDERRUN|VR_IMR_BUSERR|		\	VR_IMR_RX_ERR|VR_ISR_RX_DROPPED)/* * MII status register. */#define VR_MIISTAT_SPEED	0x01#define VR_MIISTAT_LINKFAULT	0x02#define VR_MIISTAT_MGTREADERR	0x04#define VR_MIISTAT_MIIERR	0x08#define VR_MIISTAT_PHYOPT	0x10#define VR_MIISTAT_MDC_SPEED	0x20#define VR_MIISTAT_RSVD		0x40#define VR_MIISTAT_GPIO1POLL	0x80/* * MII command register bits. */#define VR_MIICMD_CLK		0x01#define VR_MIICMD_DATAOUT	0x02#define VR_MIICMD_DATAIN	0x04#define VR_MIICMD_DIR		0x08#define VR_MIICMD_DIRECTPGM	0x10#define VR_MIICMD_WRITE_ENB	0x20#define VR_MIICMD_READ_ENB	0x40#define VR_MIICMD_AUTOPOLL	0x80/* * EEPROM control bits. */#define VR_EECSR_DATAIN		0x01	/* data out */#define VR_EECSR_DATAOUT	0x02	/* data in */#define VR_EECSR_CLK		0x04	/* clock */#define VR_EECSR_CS		0x08	/* chip select */#define VR_EECSR_DPM		0x10#define VR_EECSR_LOAD		0x20#define VR_EECSR_EMBP		0x40#define VR_EECSR_EEPR		0x80#define VR_EECMD_WRITE		0x140#define VR_EECMD_READ		0x180#define VR_EECMD_ERASE		0x1c0/* * Test register bits. */#define VR_TEST_TEST0		0x01#define VR_TEST_TEST1		0x02#define VR_TEST_TEST2		0x04#define VR_TEST_TSTUD		0x08#define VR_TEST_TSTOV		0x10#define VR_TEST_BKOFF		0x20#define VR_TEST_FCOL		0x40#define VR_TEST_HBDES		0x80/* * Config register bits. */#define VR_CFG_GPIO2OUTENB	0x00000001#define VR_CFG_GPIO2OUT		0x00000002	/* gen. purp. pin */#define VR_CFG_GPIO2IN		0x00000004	/* gen. purp. pin */#define VR_CFG_AUTOOPT		0x00000008	/* enable rx/tx autopoll */#define VR_CFG_MIIOPT		0x00000010#define VR_CFG_MMIENB		0x00000020	/* memory mapped mode enb */#define VR_CFG_JUMPER		0x00000040	/* PHY and oper. mode select */#define VR_CFG_EELOAD		0x00000080	/* enable EEPROM programming */#define VR_CFG_LATMENB		0x00000100	/* larency timer effect enb. */#define VR_CFG_MRREADWAIT	0x00000200#define VR_CFG_MRWRITEWAIT	0x00000400#define VR_CFG_RX_ARB		0x00000800#define VR_CFG_TX_ARB		0x00001000#define VR_CFG_READMULTI	0x00002000#define VR_CFG_TX_PACE		0x00004000#define VR_CFG_TX_QDIS		0x00008000#define VR_CFG_ROMSEL0		0x00010000#define VR_CFG_ROMSEL1		0x00020000#define VR_CFG_ROMSEL2		0x00040000#define VR_CFG_ROMTIMESEL	0x00080000#define VR_CFG_RSVD0		0x00100000#define VR_CFG_ROMDLY		0x00200000#define VR_CFG_ROMOPT		0x00400000#define VR_CFG_RSVD1		0x00800000#define VR_CFG_BACKOFFOPT	0x01000000#define VR_CFG_BACKOFFMOD	0x02000000#define VR_CFG_CAPEFFECT	0x04000000#define VR_CFG_BACKOFFRAND	0x08000000#define VR_CFG_MAGICKPACKET	0x10000000#define VR_CFG_PCIREADLINE	0x20000000#define VR_CFG_DIAG		0x40000000#define VR_CFG_GPIOEN		0x80000000/* * Rhine TX/RX list structure. */struct vr_desc {	u_int32_t		vr_status;	u_int32_t		vr_ctl;	u_int32_t		vr_ptr1;	u_int32_t		vr_ptr2;};#define vr_data		vr_ptr1#define vr_next		vr_ptr2#define VR_RXSTAT_RXERR		0x00000001#define VR_RXSTAT_CRCERR	0x00000002#define VR_RXSTAT_FRAMEALIGNERR	0x00000004#define VR_RXSTAT_FIFOOFLOW	0x00000008#define VR_RXSTAT_GIANT		0x00000010#define VR_RXSTAT_RUNT		0x00000020#define VR_RXSTAT_BUSERR	0x00000040#define VR_RXSTAT_BUFFERR	0x00000080#define VR_RXSTAT_LASTFRAG	0x00000100#define VR_RXSTAT_FIRSTFRAG	0x00000200#define VR_RXSTAT_RLINK		0x00000400#define VR_RXSTAT_RX_PHYS	0x00000800#define VR_RXSTAT_RX_BROAD	0x00001000#define VR_RXSTAT_RX_MULTI	0x00002000#define VR_RXSTAT_RX_OK		0x00004000#define VR_RXSTAT_RXLEN		0x07FF0000#define VR_RXSTAT_RXLEN_EXT	0x78000000#define VR_RXSTAT_OWN		0x80000000#define VR_RXBYTES(x)		((x & VR_RXSTAT_RXLEN) >> 16)#define VR_RXSTAT (VR_RXSTAT_FIRSTFRAG|VR_RXSTAT_LASTFRAG|VR_RXSTAT_OWN)#define VR_RXCTL_BUFLEN		0x000007FF#define VR_RXCTL_BUFLEN_EXT	0x00007800#define VR_RXCTL_CHAIN		0x00008000#define VR_RXCTL_RX_INTR	0x00800000#define VR_RXCTL (VR_RXCTL_CHAIN|VR_RXCTL_RX_INTR)#define VR_TXSTAT_DEFER		0x00000001#define VR_TXSTAT_UNDERRUN	0x00000002#define VR_TXSTAT_COLLCNT	0x00000078#define VR_TXSTAT_SQE		0x00000080

⌨️ 快捷键说明

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