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

📄 if_wxreg.h

📁 国产CPU-龙芯(loongson)BIOS源代码
💻 H
字号:
/*	$OpenBSD: if_wxreg.h,v 1.6 2001/10/24 18:25:55 mjacob Exp $	*//* * Principal Author: Matthew Jacob * Copyright (c) 1999, 2001 by Traakan Software * 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 unmodified, 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. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 THE AUTHOR OR CONTRIBUTORS 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. * * Additional Copyright (c) 2001 by Parag Patel * under same licence for MII PHY code. */#define WX_VENDOR_INTEL			0x8086#define WX_PRODUCT_82452		0x1000#define WX_PRODUCT_LIVENGOOD		0x1001#define	WX_PRODUCT_82452_SC		0x1003#define	WX_PRODUCT_82543		0x1004#define	WX_MMBA			0x10#define	MWI			0x10	/* Memory Write Invalidate */#define	WX_CACHELINE_SIZE	0x20/* Join PCI ID and revision into one value */#define	WX_WISEMAN_0		0x10000000#define	WX_WISEMAN_2_0		0x10000002#define	WX_WISEMAN_2_1		0x10000003#define	WX_LIVENGOOD		0x10010000#define	WX_LIVENGOOD_MM		0x10010002	/* Momentum Ocelot hack... */#define	WX_LIVENGOOD_CU		0x10040002#define	IS_WISEMAN(sc)		((sc)->wx_idnrev < WX_LIVENGOOD)#define	IS_LIVENGOOD(sc)	((sc)->wx_idnrev >= WX_LIVENGOOD)#define	IS_LIVENGOOD_CU(sc)	((sc)->wx_idnrev == WX_LIVENGOOD_CU || \				 (sc)->wx_idnrev == WX_LIVENGOOD_MM)/* * Information about this chipset gathered from a released Intel Linux driver, * which was clearly a port of an NT driver.  *//* * Various Descriptor Structures. * These are all in little endian format (for now). */typedef struct {	u_int32_t	lowpart;	u_int32_t	highpart;} wxpa_t, wxrp_t;/* * Receive Descriptor. * The base address of a receive descriptor ring must be on a 4KB boundary, * and they must be allocated in multiples of 8. */typedef struct {	wxpa_t		address;	/* physical address of buffer */	u_int16_t	length;	u_int16_t	csum;	u_int8_t	status;	u_int8_t	errors;	u_int16_t	special;} wxrd_t;#define	RDSTAT_DD	0x1		/* descriptor done */#define RDSTAT_EOP	0x2		/* end of packet */#define	RDSTAT_RSVD	0x74		/* reserved bits */#define	RDERR_CRC	0x1		/* CRC Error */#define	RDERR_SE	0x2		/* Symbol Error */#define	RDERR_SEQ	0x4		/* Sequence Error *//* * Transmit Descriptor * The base address of a transmit descriptor ring must be on a 4KB boundary, * and they must be allocated in multiples of 8. */typedef struct {	wxpa_t		address;	u_int16_t	length;	u_int8_t	cso;		/* checksum offset */	u_int8_t	cmd;		/* cmd */	u_int8_t	status;		/* status */	u_int8_t	css;		/* checksum start */	u_int16_t	special;} wxtd_t;#define	TXCMD_EOP	0x1		/* last packet */#define	TXCMD_IFCS	0x2		/* insert FCS */#define	TXCMD_IC	0x4		/* insert checksum */#define	TXCMD_RS	0x8		/* report status */#define	TXCMD_RPS	0x10		/* report packet sent */#define	TXCMD_SM	0x20		/* symbol mode */#define	TXCMD_IDE	0x80		/* interrupt delay enable */#define	TXSTS_DD	0x1		/* descriptor done */#define	TXSTS_EC	0x2		/* excess collisions */#define	TXSTS_LC	0x4		/* late collision *//* * This device can only be accessed via memory space. *//* * Register access via offsets. * * Our brilliant friends at Intel decided to move registers offsets * around from chip version to chip version. It's amazing that some * deity doesn't zap these suckers. Really. */#define	WXREG_DCR		0x00000000#define	WXREG_DSR		0x00000008#define	WXREG_EECDR		0x00000010#define	WXREG_EXCT		0x00000018#define	WXREG_MDIC		0x00000020#define	WXREG_FCAL		0x00000028#define	WXREG_FCAH		0x0000002C#define	WXREG_FCT		0x00000030#define	WXREG_VET		0x00000038#define	WXREG_RAL_BASE		0x00000040#define	WXREG_RAL_LO(x)		(WXREG_RAL_BASE + ((x) << 3))#define	WXREG_RAL_HI(x)		(WXREG_RAL_LO(x) + 4)#define	WXREG_ICR		0x000000c0#define	WXREG_ICS		0x000000c8#define	WXREG_IMASK		0x000000d0#define	WXREG_IMCLR		0x000000d8#define	WXREG_RCTL		0x00000100#define	WXREG_RDTR0		0x00000108#define		WXREG_RDTR0_LIVENGOOD		0x00002820#define	WXREG_RDBA0_LO		0x00000110#define		WXREG_RDBA0_LO_LIVENGOOD	0x00002800#define	WXREG_RDBA0_HI		0x00000114#define		WXREG_RDBA0_HI_LIVENGOOD	0x00002804#define	WXREG_RDLEN0		0x00000118#define		WXREG_RDLEN0_LIVENGOOD		0x00002808#define	WXREG_RDH0		0x00000120#define		WXREG_RDH0_LIVENGOOD		0x00002810#define	WXREG_RDT0		0x00000128#define		WXREG_RDT0_LIVENGOOD		0x00002818#define	WXREG_RDTR1		0x00000130#define	WXREG_RDBA1_LO		0x00000138#define	WXREG_RDBA1_HI		0x0000013C#define	WXREG_RDLEN1		0x00000140#define	WXREG_RDH1		0x00000148#define	WXREG_RDT1		0x00000150#define	WXREG_FLOW_RCV_HI	0x00000160#define		WXREG_FLOW_RCV_HI_LIVENGOOD	0x00002168#define	WXREG_FLOW_RCV_LO	0x00000168#define		WXREG_FLOW_RCV_LO_LIVENGOOD	0x00002160#define	WXREG_FLOW_XTIMER	0x00000170#define	WXREG_XMIT_CFGW		0x00000178#define	WXREG_RECV_CFGW		0x00000180#define	WXREG_MTA		0x00000200#define	WXREG_TCTL		0x00000400#define	WXREG_TQSA_LO		0x00000408#define	WXREG_TQSA_HI		0x0000040C#define	WXREG_TIPG		0x00000410#define	WXREG_TQC		0x00000418#define	WXREG_TDBA_LO		0x00000420#define		WXREG_TDBA_LO_LIVENGOOD		0x00003800#define	WXREG_TDBA_HI		0x00000424#define		WXREG_TDBA_HI_LIVENGOOD		0x00003804#define	WXREG_TDLEN		0x00000428#define		WXREG_TDLEN_LIVENGOOD		0x00003808#define	WXREG_TDH		0x00000430#define		WXREG_TDH_LIVENGOOD		0x00003810#define	WXREG_TDT		0x00000438#define		WXREG_TDT_LIVENGOOD		0x00003818#define	WXREG_TIDV		0x00000440#define		WXREG_TIDV_LIVENGOOD		0x00003820#define	WXREG_VFTA		0x00000600#define	WX_RAL_TAB_SIZE		16#define	WX_RAL_AV		0x80000000#define	WX_MC_TAB_SIZE		128#define	WX_VLAN_TAB_SIZE	128/* * Device Control Register Defines */#define	WXDCR_FD	0x1		/* full duplex */#define	WXDCR_BEM	0x2		/* big endian mode */#define	WXDCR_FAIR	0x4		/* 1->Fairness, 0->Receive Priority */#define	WXDCR_LRST	0x8		/* Link Reset */#define	WXDCR_ASDE	0x20		/* ??? */#define	WXDCR_SLE	0x20		/* ??? */#define	WXDCR_SLU	0x40		/* Set Link Up */#define	WXDCR_ILOS	0x80		/* Invert Loss-of-Signal */#define	WXDCR_10BT	0x000		/* set 10BaseT */#define	WXDCR_100BT	0x100		/* LIVENGOOD: Set 100BaseT */#define	WXDCR_1000BT	0x200		/* LIVENGOOD: Set 1000BaseT */#define	WXDCR_SPEED_MASK	0x300#define	WXDCR_BEM32	0x400		/* LIVENGOOD: Set Big Endian 32 (?) */#define	WXDCR_FRCSPD	0x800		/* LIVENGOOD: Force Speed (?) */#define	WXDCR_FRCDPX	0x1000		/* LIVENGOOD: Force Full Duplex *//* * General purpose I/O pins * * Pin 0 is for the LED. * * Pin 1 is to detect loss of signal (LOS)- if it is set, we've lost signal. */#define	WXDCR_SWDPINS_SHIFT	18#define	WXDCR_SWDPINS_MASK	0xf#define		WXDCR_SWDPIN0	(1 << 18)	/* 0x00040000 - PHY reset */#define		WXDCR_SWDPIN1	(1 << 19)	/* 0x00080000 */#define		WXDCR_SWDPIN2	(1 << 20)	/* 0x00100000 - PHY data */#define		WXDCR_SWDPIN3	(1 << 21)	/* 0x00200000 - PHY clk */#define	WXDCR_SWDPIO_SHIFT	22#define	WXDCR_SWDPIO_MASK	0xf#define		WXDCR_SWDPIO0	(1 << 22)	/* 0x00400000 - PHY rst dir */#define		WXDCR_SWDPIO1	(1 << 23)	/* 0x00800000 */#define		WXDCR_SWDPIO2	(1 << 24)	/* 0x01000000 - PHY data dir */#define		WXDCR_SWDPIO3	(1 << 25)	/* 0x02000000 - PHY clk dir */#define	WXDCR_RST	0x04000000	/* Device Reset (self clearing) */#define	WXDCR_RFCE	0x08000000	/* Receive Flow Control Enable */#define	WXDCR_TFCE	0x10000000	/* Transmit Flow Control Enable */#define	WXDCR_RTE	0x20000000	/* Routing Tag Enable */#define	WXDCR_VME	0x40000000	/* VLAN Mode Enable *//* * Device Status Register Defines */#define	WXDSR_FD	0x1		/* full duplex */#define	WXDSR_LU	0x2		/* link up */#define	WXDSR_TXCLK	0x4		/* transmit clock running */#define	WXDSR_RBCLK	0x8		/* receive clock running */#define	WXDSR_TXOFF	0x10		/* transmit paused */#define	WXDSR_TBIMODE	0x20		/* LIVENGOOD: Fibre Mode */#define	WXDSR_100BT	0x40		/* LIVENGOOD: 100BaseT */#define	WXDSR_1000BT	0x80		/* LIVENGOOD: 1000BaseT */#define	WXDSR_ASDV	0x300		/* LIVENGOOD: ?? */#define	WXDSR_MTXCKOK	0x400		/* LIVENGOOD: ?? */#define	WXDSR_PCI66	0x800		/* LIVENGOOD: 66 MHz bus */#define	WXDSR_BUS64	0x1000		/* LIVENGOOD: In 64 bit slot *//* * EEPROM Register Defines */#define	WXEECD_SK	0x1		/* enable clock */#define	WXEECD_CS	0x2		/* chip select */#define	WXEECD_DI	0x4		/* data input */#define	WXEECD_DO	0x8		/* data output */#define	EEPROM_READ_OPCODE	0x6/* * Constant Flow Control Frame MAC Address and Type values. */#define	FC_FRM_CONST_LO	0x00C28001#define	FC_FRM_CONST_HI	0x0100#define	FC_TYP_CONST	0x8808/* * Bits pertinent for the Receive Address register pairs. The low address * is the low 32 bits of a 48 bit MAC address. The high address contains * bits 32-47 of the 48 bit MAC address. The top bit in the high address * is a 'valid' bit. */#define	WXRAH_RDR1	0x40000000	/* second receive descriptor ring */#define	WXRAH_VALID	0x80000000/* * Interrupt Cause Bits */#define	WXISR_TXDW	0x1		/* transmit descriptor written back */#define	WXISR_TXQE	0x2		/* transmit queue empty */#define	WXISR_LSC	0x4		/* link status change */#define	WXISR_RXSEQ	0x8		/* receive sequence error */#define	WXISR_RXDMT0	0x10		/* receiver ring 0 getting empty */#define	WXISR_RXDMT1	0x20		/* receiver ring 1 getting empty */#define	WXISR_RXO	0x40		/* receiver overrun */#define	WXISR_RXT0	0x80		/* ring 0 receiver timer interrupt */#define	WXISR_RXT1	0x100		/* ring 1 receiver timer interrupt */#define	WXISR_PCIE	0x200		/* ?? Probably PCI interface error... */#define WXISR_MDIAC	0x200#define WXISR_RXCFG	0x400#define WXISR_GPI_EN0	0x800#define WXISR_GPI_EN1	0x1000		/* appears to be PHY intr line */#define WXISR_GPI_EN2	0x2000#define WXISR_GPI_EN3	0x4000#define	WXIENABLE_DEFAULT	\	 (WXISR_RXO | WXISR_RXT0 | WXISR_RXDMT0 | WXISR_RXSEQ |	WXISR_TXDW |\		    WXISR_LSC | WXISR_PCIE | WXISR_GPI_EN1)#define	WXDISABLE	0xffffffff/* * Receive Control Register bits. */#define	WXRCTL_RST	0x1		/* receiver reset */#define	WXRCTL_EN	0x2		/* receiver enable */#define	WXRCTL_SBP	0x4		/* store bad packets */#define	WXRCTL_UPE	0x8		/* unicast promiscuos mode */#define	WXRCTL_MPE	0x10		/* multicast promiscuous mode */#define	WXRCTL_LPE	0x20		/* large packet enable */#define	WXRCTL_BAM	0x8000		/* broadcast accept mode */#define	WXRCTL_BSEX	0x2000000	/* LIVENGOOD: Buffer Size Extension */#define	WXRCTL_2KRBUF	(0 << 16)	/* 2KB Receive Buffers */#define	WXRCTL_1KRBUF	(1 << 16)	/* 1KB Receive Buffers */#define	WXRCTL_512BRBUF	(2 << 16)	/* 512 Byte Receive Buffers */#define	WXRCTL_256BRBUF	(3 << 16)	/* 256 Byte Receive Buffers */#define	WXRCTL_4KRBUF	(3 << 16)	/* LIVENGOOD: 4KB Receive Buffers */#define	WXRCTL_8KRBUF	(2 << 16)	/* LIVENGOOD: 8KB Receive Buffers */#define	WXRCTL_16KRBUF	(1 << 16)	/* LIVENGOOD: 16KB Receive Buffers *//* * Receive Delay Timer Register bits. */#define	WXRDTR_FPD	0x80000000	/* flush partial descriptor *//* * Transmit Configuration Word defines */#define	WXTXCW_FD	0x00000020	/* Full Duplex */#define	WXTXCW_PMASK	0x00000180	/* pause mask */#define	WXTXCW_ANE	0x80000000	/* AutoNegotiate */#define	WXTXCW_DEFAULT	0x800001A0/* * Transmit Control Register defines. */#define	WXTCTL_RST	0x1		/* transmitter reset */#define	WXTCTL_EN	0x2		/* transmitter enable */#define	WXTCTL_PSP	0x8		/* pad short packets */#define	WXTCTL_CT(x)	(((x) & 0xff) << 4)	/* 4:11 - Collision Threshold */#define	WXTCTL_COLD(x)	(((x) & 0x3ff) << 12)	/* 12:21 - Collision Distance */#define	WXTCTL_SWXOFF	(1 << 22)	/* Software XOFF */#define	WX_COLLISION_THRESHOLD	15#define	WX_FDX_COLLISION_DX	64#define	WX_HDX_COLLISION_DX	512/* * MDI control register bits - (best-guess) */#define WXMDIC_WRITE		0x04000000#define WXMDIC_READ		0x08000000#define WXMDIC_READY		0x10000000#define WXMDIC_INTR		0x20000000#define WXMDIC_ERR		0x40000000#define WXMDIC_REGADDR_MASK	0x001F0000#define WXMDIC_REGADDR_SHIFT	16#define WXMDIC_PHYADDR_MASK	0x03E00000#define WXMDIC_PHYADDR_SHIFT	21#define WXMDIC_DATA_MASK	0x0000FFFF/* * EXCT control register bits */#define WXEXCT_GPI_EN0		0x00000001#define WXEXCT_GPI_EN1		0x00000002#define WXEXCT_GPI_EN2		0x00000004#define WXEXCT_GPI_EN3		0x00000008#define WXEXCT_SWDPIN4		0x00000010#define WXEXCT_SWDPIN5		0x00000020#define WXEXCT_SWDPIN6		0x00000040#define WXEXCT_SWDPIN7		0x00000080#define WXEXCT_SWDPIO4		0x00000100#define WXEXCT_SWDPIO5		0x00000200#define WXEXCT_SWDPIO6		0x00000400#define WXEXCT_SWDPIO7		0x00000800#define WXEXCT_ASDCHK		0x00001000#define WXEXCT_EE_RST		0x00002000#define WXEXCT_IPS		0x00004000#define WXEXCT_SPD_BYPS		0x00008000/* * PHY access using GPIO pins */#define WXPHY_RESET_DIR		WXDCR_SWDPIO0#define WXPHY_RESET		WXDCR_SWDPIN0#define WXPHY_MDIO_DIR		WXDCR_SWDPIO2#define WXPHY_MDIO		WXDCR_SWDPIN2#define WXPHY_MDC_DIR		WXDCR_SWDPIO3#define WXPHY_MDC		WXDCR_SWDPIN3#define WXPHY_RESET_DIR4	WXEXCT_SWDPIO4#define WXPHY_RESET4		WXEXCT_SWDPIN4/* * PHY commands */#define WXPHYC_PREAMBLE		0xFFFFFFFF#define WXPHYC_PREAMBLE_LEN	32#define WXPHYC_SOF		0x01#define WXPHYC_READ		0x02#define WXPHYC_WRITE		0x01#define WXPHYC_TURNAROUND	0x02/* * Receive Configuration Word defines */#define	WXRXCW_CWMASK	0x0000ffff#define	WXRXCW_NC	0x04000000#define	WXRXCW_IV	0x08000000#define	WXRXCW_CC	0x10000000#define	WXRXCW_C	0x20000000#define	WXRXCW_SYNCH	0x40000000#define	WXRXCW_ANC	0x80000000/* * Miscellaneous */#define	WX_EEPROM_MAC_OFF	0/* * Offset for Initialization Control Word #1 */#define	WX_EEPROM_CTLR1_OFF	0xA#define	WX_EEPROM_CTLR1_FD	(1 << 10)#define	WX_EEPROM_CTLR1_SWDPIO_SHIFT	5#define	WX_EEPROM_CTLR1_ILOS	(1 << 4)#define	WX_EEPROM_CTLR2_OFF	0xF#define	WX_EEPROM_CTLR2_SWDPIO	0xF0#define	WX_EEPROM_EXT_SHIFT	4#define	WX_XTIMER_DFLT		0x100#define	WX_RCV_FLOW_HI_DFLT	0x8000#define	WX_RCV_FLOW_LO_DFLT	0x4000#define	WX_WISEMAN_TIPG_DFLT		(10 | (2 << 10) | (10 << 20))#define	WX_LIVENGOOD_TIPG_DFLT		(6 | (8 << 10) | (6 << 20))#define	WX_LIVENGOOD_CU_TIPG_DFLT	(8 | (8 << 10) | (6 << 20))#define	WX_CRC_LENGTH		4/* * Hardware cannot transmit less than 16 bytes. It also cannot * successfully receive less than 60 bytes. */#define	WX_MIN_XPKT_SIZE	16#define	WX_MIN_RPKT_SIZE	60#define	WX_MAX_PKT_SIZE		1514#define	WX_MAX_PKT_SIZE_JUMBO	9014

⌨️ 快捷键说明

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