if_tireg.h

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

H
1,191
字号
/* * Copyright (c) 1997, 1998, 1999 *	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_tireg.h,v 1.1.2.1 1999/04/30 19:32:24 wpaul Exp $ *//* * Tigon register offsets. These are memory mapped registers * which can be accessed with the CSR_READ_4()/CSR_WRITE_4() macros. * Each register must be accessed using 32 bit operations. * * All reegisters are accessed through a 16K shared memory block. * The first group of registers are actually copies of the PCI * configuration space registers. */#define TI_PCI_ID			0x000 /* PCI device/vendor ID */#define TI_PCI_CMDSTAT			0x004#define TI_PCI_CLASSCODE		0x008#define TI_PCI_BIST			0x00C#define TI_PCI_LOMEM			0x010 /* Shared memory base address */#define TI_PCI_SUBSYS			0x02C#define TI_PCI_ROMBASE			0x030#define TI_PCI_INT			0x03C#ifndef PCIM_CMD_MWIEN#define PCIM_CMD_MWIEN			0x0010#endif/* * Alteon AceNIC PCI vendor/device ID. */#define ALT_VENDORID			0x12AE#define ALT_DEVICEID_ACENIC		0x0001/* * 3Com 3c985 PCI vendor/device ID. */#define TC_VENDORID			0x10B7#define TC_DEVICEID_3C985		0x0001/* * Netgear GA620 PCI vendor/device ID. */#define NG_VENDORID			0x1385#define NG_DEVICEID_GA620		0x620A/* * SGI device/vendor ID. */#define SGI_VENDORID			0x10A9#define SGI_DEVICEID_TIGON		0x0009/* * Tigon configuration and control registers. */#define TI_MISC_HOST_CTL		0x040#define TI_MISC_LOCAL_CTL		0x044#define TI_SEM_AB			0x048 /* Tigon 2 only */#define TI_MISC_CONF			0x050 /* Tigon 2 only */#define TI_TIMER_BITS			0x054#define TI_TIMERREF			0x058#define TI_PCI_STATE			0x05C#define TI_MAIN_EVENT_A			0x060#define TI_MAILBOX_EVENT_A		0x064#define TI_WINBASE			0x068#define TI_WINDATA			0x06C#define TI_MAIN_EVENT_B			0x070 /* Tigon 2 only */#define TI_MAILBOX_EVENT_B		0x074 /* Tigon 2 only */#define TI_TIMERREF_B			0x078 /* Tigon 2 only */#define TI_SERIAL			0x07C/* * Misc host control bits. */#define TI_MHC_INTSTATE			0x00000001#define TI_MHC_CLEARINT			0x00000002#define TI_MHC_RESET			0x00000008#define TI_MHC_BYTE_SWAP_ENB		0x00000010#define TI_MHC_WORD_SWAP_ENB		0x00000020#define TI_MHC_MASK_INTS		0x00000040#define TI_MHC_CHIP_REV_MASK		0xF0000000#define TI_MHC_BIGENDIAN_INIT	\	(TI_MHC_BYTE_SWAP_ENB|TI_MHC_WORD_SWAP_ENB|TI_MHC_CLEARINT)#define TI_MHC_LITTLEENDIAN_INIT	\	(TI_MHC_WORD_SWAP_ENB|TI_MHC_CLEARINT)/* * Tigon chip rev values. Rev 4 is the Tigon 1. Rev 6 is the Tigon 2. * Rev 5 is also the Tigon 2, but is a broken version which was never * used in any actual hardware, so we ignore it. */#define TI_REV_TIGON_I			0x40000000#define TI_REV_TIGON_II			0x60000000/* * Firmware revision that we want. */#define TI_FIRMWARE_MAJOR		0xc#define TI_FIRMWARE_MINOR		0x3#define TI_FIRMWARE_FIX			0x9/* * Miscelaneous Local Control register. */#define TI_MLC_EE_WRITE_ENB		0x00000010#define TI_MLC_SRAM_BANK_256K		0x00000200#define TI_MLC_SRAM_BANK_SIZE		0x00000300 /* Tigon 2 only */#define TI_MLC_LOCALADDR_21		0x00004000#define TI_MLC_LOCALADDR_22		0x00008000#define TI_MLC_SBUS_WRITEERR		0x00080000#define TI_MLC_EE_CLK			0x00100000#define TI_MLC_EE_TXEN			0x00200000#define TI_MLC_EE_DOUT			0x00400000#define TI_MLC_EE_DIN			0x00800000/* * Offset of MAC address inside EEPROM. */#define TI_EE_MAC_OFFSET		0x8c#define TI_DMA_ASSIST			0x11C#define TI_CPU_STATE			0x140#define TI_CPU_PROGRAM_COUNTER		0x144#define TI_SRAM_ADDR			0x154#define TI_SRAM_DATA			0x158#define TI_GEN_0			0x180#define TI_GEN_X			0x1FC#define TI_MAC_TX_STATE			0x200#define TI_MAC_RX_STATE			0x220#define TI_CPU_CTL_B			0x240 /* Tigon 2 only */#define TI_CPU_PROGRAM_COUNTER_B	0x244 /* Tigon 2 only */#define TI_SRAM_ADDR_B			0x254 /* Tigon 2 only */#define TI_SRAM_DATA_B			0x258 /* Tigon 2 only */#define TI_GEN_B_0			0x280 /* Tigon 2 only */#define TI_GEN_B_X			0x2FC /* Tigon 2 only *//* * Misc config register. */#define TI_MCR_SRAM_SYNCHRONOUS		0x00100000 /* Tigon 2 only *//* * PCI state register. */#define TI_PCISTATE_FORCE_RESET		0x00000001#define TI_PCISTATE_PROVIDE_LEN		0x00000002#define TI_PCISTATE_READ_MAXDMA		0x0000001C#define TI_PCISTATE_WRITE_MAXDMA	0x000000E0#define TI_PCISTATE_MINDMA		0x0000FF00#define TI_PCISTATE_FIFO_RETRY_ENB	0x00010000#define TI_PCISTATE_USE_MEM_RD_MULT	0x00020000#define TI_PCISTATE_NO_SWAP_READ_DMA	0x00040000#define TI_PCISTATE_NO_SWAP_WRITE_DMA	0x00080000#define TI_PCISTATE_66MHZ_BUS		0x00080000 /* Tigon 2 only */#define TI_PCISTATE_32BIT_BUS		0x00100000 /* Tigon 2 only */#define TI_PCISTATE_ENB_BYTE_ENABLES	0x00800000 /* Tigon 2 only */#define TI_PCISTATE_READ_CMD		0x0F000000#define TI_PCISTATE_WRITE_CMD		0xF0000000#define TI_PCI_READMAX_4		0x04#define TI_PCI_READMAX_16		0x08#define TI_PCI_READMAX_32		0x0C#define TI_PCI_READMAX_64		0x10#define TI_PCI_READMAX_128		0x14#define TI_PCI_READMAX_256		0x18#define TI_PCI_READMAX_1024		0x1C#define TI_PCI_WRITEMAX_4		0x20#define TI_PCI_WRITEMAX_16		0x40#define TI_PCI_WRITEMAX_32		0x60#define TI_PCI_WRITEMAX_64		0x80#define TI_PCI_WRITEMAX_128		0xA0#define TI_PCI_WRITEMAX_256		0xC0#define TI_PCI_WRITEMAX_1024		0xE0#define TI_PCI_READ_CMD			0x06000000#define TI_PCI_WRITE_CMD		0x70000000/* * DMA state register. */#define TI_DMASTATE_ENABLE		0x00000001#define TI_DMASTATE_PAUSE		0x00000002/* * CPU state register. */#define TI_CPUSTATE_RESET		0x00000001#define TI_CPUSTATE_STEP		0x00000002#define TI_CPUSTATE_ROMFAIL		0x00000010#define TI_CPUSTATE_HALT		0x00010000/* * MAC TX state register */#define TI_TXSTATE_RESET		0x00000001#define TI_TXSTATE_ENB			0x00000002#define TI_TXSTATE_STOP			0x00000004/* * MAC RX state register */#define TI_RXSTATE_RESET		0x00000001#define TI_RXSTATE_ENB			0x00000002#define TI_RXSTATE_STOP			0x00000004/* * Tigon 2 mailbox registers. The mailbox area consists of 256 bytes * split into 64 bit registers. Only the lower 32 bits of each mailbox * are used. */#define TI_MB_HOSTINTR_HI		0x500#define TI_MB_HOSTINTR_LO		0x504#define TI_MB_HOSTINTR			TI_MB_HOSTINTR_LO#define TI_MB_CMDPROD_IDX_HI		0x508#define TI_MB_CMDPROD_IDX_LO		0x50C#define TI_MB_CMDPROD_IDX		TI_MB_CMDPROD_IDX_LO#define TI_MB_SENDPROD_IDX_HI		0x510#define TI_MB_SENDPROD_IDX_LO		0x514#define TI_MB_SENDPROD_IDX		TI_MB_SENDPROD_IDX_LO#define TI_MB_STDRXPROD_IDX_HI		0x518 /* Tigon 2 only */#define TI_MB_STDRXPROD_IDX_LO		0x51C /* Tigon 2 only */#define TI_MB_STDRXPROD_IDX		TI_MB_STDRXPROD_IDX_LO#define TI_MB_JUMBORXPROD_IDX_HI	0x520 /* Tigon 2 only */#define TI_MB_JUMBORXPROD_IDX_LO	0x524 /* Tigon 2 only */#define TI_MB_JUMBORXPROD_IDX		TI_MB_JUMBORXPROD_IDX_LO#define TI_MB_MINIRXPROD_IDX_HI		0x528 /* Tigon 2 only */#define TI_MB_MINIRXPROD_IDX_LO		0x52C /* Tigon 2 only */#define TI_MB_MINIRXPROD_IDX		TI_MB_MINIRXPROD_IDX_LO#define TI_MB_RSVD			0x530/* * Tigon 2 general communication registers. These are 64 and 32 bit * registers which are only valid after the firmware has been * loaded and started. They actually exist in NIC memory but are * mapped into the host memory via the shared memory region. * * The NIC internally maps these registers starting at address 0, * so to determine the NIC address of any of these registers, we * subtract 0x600 (the address of the first register). */#define TI_GCR_BASE			0x600#define TI_GCR_MACADDR			0x600#define TI_GCR_PAR0			0x600#define TI_GCR_PAR1			0x604#define TI_GCR_GENINFO_HI		0x608#define TI_GCR_GENINFO_LO		0x60C#define TI_GCR_MCASTADDR		0x610 /* obsolete */#define TI_GCR_MAR0			0x610 /* obsolete */#define TI_GCR_MAR1			0x614 /* obsolete */#define TI_GCR_OPMODE			0x618#define TI_GCR_DMA_READCFG		0x61C#define TI_GCR_DMA_WRITECFG		0x620#define TI_GCR_TX_BUFFER_RATIO		0x624#define TI_GCR_EVENTCONS_IDX		0x628#define TI_GCR_CMDCONS_IDX		0x62C#define TI_GCR_TUNEPARMS		0x630#define TI_GCR_RX_COAL_TICKS		0x630#define TI_GCR_TX_COAL_TICKS		0x634#define TI_GCR_STAT_TICKS		0x638#define TI_GCR_TX_MAX_COAL_BD		0x63C#define TI_GCR_RX_MAX_COAL_BD		0x640#define TI_GCR_NIC_TRACING		0x644#define TI_GCR_GLINK			0x648#define TI_GCR_LINK			0x64C#define TI_GCR_NICTRACE_PTR		0x650#define TI_GCR_NICTRACE_START		0x654#define TI_GCR_NICTRACE_LEN		0x658#define TI_GCR_IFINDEX			0x65C#define TI_GCR_IFMTU			0x660#define TI_GCR_MASK_INTRS		0x664#define TI_GCR_GLINK_STAT		0x668#define TI_GCR_LINK_STAT		0x66C#define TI_GCR_RXRETURNCONS_IDX		0x680#define TI_GCR_CMDRING			0x700#define TI_GCR_NIC_ADDR(x)		(x - TI_GCR_BASE);/* * Local memory window. The local memory window is a 2K shared * memory region which can be used to access the NIC's internal * SRAM. The window can be mapped to a given 2K region using * the TI_WINDOW_BASE register. */#define TI_WINDOW			0x800#define TI_WINLEN			0x800#define TI_TICKS_PER_SEC		1000000/* * Operation mode register. */#define TI_OPMODE_BYTESWAP_BD		0x00000002#define TI_OPMODE_WORDSWAP_BD		0x00000004#define TI_OPMODE_WARN_ENB		0x00000008 /* not yet implimented */#define TI_OPMODE_BYTESWAP_DATA		0x00000010#define TI_OPMODE_1_DMA_ACTIVE		0x00000040#define TI_OPMODE_SBUS			0x00000100#define TI_OPMODE_DONT_FRAG_JUMBO	0x00000200#define TI_OPMODE_INCLUDE_CRC		0x00000400#define TI_OPMODE_RX_BADFRAMES		0x00000800#define TI_OPMODE_NO_EVENT_INTRS	0x00001000#define TI_OPMODE_NO_TX_INTRS		0x00002000#define TI_OPMODE_NO_RX_INTRS		0x00004000#define TI_OPMODE_FATAL_ENB		0x40000000 /* not yet implimented *//* * DMA configuration thresholds. */#define TI_DMA_STATE_THRESH_16W		0x00000100#define TI_DMA_STATE_THRESH_8W		0x00000080#define TI_DMA_STATE_THRESH_4W		0x00000040#define TI_DMA_STATE_THRESH_2W		0x00000020#define TI_DMA_STATE_THRESH_1W		0x00000010#define TI_DMA_STATE_FORCE_32_BIT	0x00000008/* * Gigabit link status bits. */#define TI_GLNK_SENSE_NO_BEG		0x00002000#define TI_GLNK_LOOPBACK		0x00004000#define TI_GLNK_PREF			0x00008000#define TI_GLNK_1000MB			0x00040000#define TI_GLNK_FULL_DUPLEX		0x00080000#define TI_GLNK_TX_FLOWCTL_Y		0x00200000 /* Tigon 2 only */#define TI_GLNK_RX_FLOWCTL_Y		0x00800000#define TI_GLNK_AUTONEGENB		0x20000000#define TI_GLNK_ENB			0x40000000/* * Link status bits. */#define TI_LNK_LOOPBACK			0x00004000#define TI_LNK_PREF			0x00008000#define TI_LNK_10MB			0x00010000#define TI_LNK_100MB			0x00020000#define TI_LNK_1000MB			0x00040000#define TI_LNK_FULL_DUPLEX		0x00080000#define TI_LNK_HALF_DUPLEX		0x00100000#define TI_LNK_TX_FLOWCTL_Y		0x00200000 /* Tigon 2 only */#define TI_LNK_RX_FLOWCTL_Y		0x00800000#define TI_LNK_AUTONEGENB		0x20000000#define TI_LNK_ENB			0x40000000/* * Ring size constants. */#define TI_EVENT_RING_CNT	256#define TI_CMD_RING_CNT		64#define TI_STD_RX_RING_CNT	512#define TI_JUMBO_RX_RING_CNT	256#define TI_MINI_RX_RING_CNT	1024#define TI_RETURN_RING_CNT	2048/* * Possible TX ring sizes. */#define TI_TX_RING_CNT_128	128#define TI_TX_RING_BASE_128	0x3800#define TI_TX_RING_CNT_256	256#define TI_TX_RING_BASE_256	0x3000#define TI_TX_RING_CNT_512	512#define TI_TX_RING_BASE_512	0x2000

⌨️ 快捷键说明

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