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 + -
显示快捷键?