summaryrefslogtreecommitdiffstats
path: root/private/ntos/ndis/ieepro/eprohw.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/ntos/ndis/ieepro/eprohw.h202
1 files changed, 202 insertions, 0 deletions
diff --git a/private/ntos/ndis/ieepro/eprohw.h b/private/ntos/ndis/ieepro/eprohw.h
new file mode 100644
index 000000000..fb1678e66
--- /dev/null
+++ b/private/ntos/ndis/ieepro/eprohw.h
@@ -0,0 +1,202 @@
+#ifndef _IEPROHW_
+#define _IEPROHW_
+
+#define EPRO_LENGTH_OF_ADDRESS 6
+
+////////////////////////////////////////////////////////////
+// Bank Switches
+////////////////////////////////////////////////////////////
+#define EPRO_GOTO_B0 EPRO_WRITE_UCHAR(epro_cmd_reg, EPRO_CMD_BANK0)
+#define EPRO_GOTO_B1 EPRO_WRITE_UCHAR(epro_cmd_reg, EPRO_CMD_BANK1)
+#define EPRO_GOTO_B2 EPRO_WRITE_UCHAR(epro_cmd_reg, EPRO_CMD_BANK2)
+
+////////////////////////////////////////////////////////////
+// Port I/O
+////////////////////////////////////////////////////////////
+#define EPRO_READ_UCHAR(_Port, _pValue) \
+ NdisRawReadPortUchar( \
+ (ULONG)(_Port), \
+ (PUCHAR)(_pValue) \
+ )
+
+#define EPRO_READ_USHORT(_Port, _pValue) \
+ NdisRawReadPortUshort( \
+ (ULONG)(_Port), \
+ (PUSHORT)(_pValue) \
+ )
+
+#define EPRO_WRITE_UCHAR(_Port, _Value) \
+ NdisRawWritePortUchar( \
+ (ULONG)(_Port), \
+ (UCHAR) (_Value) \
+ )
+
+////////////////////////////////////////////////////////////
+// Command Macros
+// Care must be taken to ensure you are in the right bank
+////////////////////////////////////////////////////////////
+
+// Memory I/O
+#define EPRO_MEM_READADDR(_pValue) \
+ EPRO_READ_USHORT(EPro_IOBaseAddress + EPRO_HOST_ADDR_REG, _pValue)
+
+#define EPRO_MEM_WRITEADDR(_Value) \
+ EPRO_WRITE_USHORT(EPro_IOBaseAddress + EPRO_HOST_ADDR_REG, Value)
+
+#define EPRO_MEM_READSHORT(_pValue) \
+ EPRO_READ_USHORT(EPro_IOBaseAddress + EPRO_MEM_IO_REG)
+
+#define EPRO_MEM_WRITESHORT(_Value) \
+ EPRO_WRITE_USHORT(EPro_IOBaseAddress + EPRO_MEM_IO_REG)
+
+//BOOLEAN EProMemcpyW(void *pMainMemSrc_, void *OnBoardDest_, UINT count);
+//BOOLEAN EProMemcpyR(void *OnBoardSrc_, void *pMainMemDest_, UINT count);
+
+////////////////////////////////////////////////////////////
+// TX Defines
+////////////////////////////////////////////////////////////
+#define EPRO_NUM_TX_BUFFERS 30
+#define EPRO_TX_FIRST_BUF_START 0
+
+// 1514 bytes ethernet frame
+// 16 bytes epro header
+// 2 bytes pad for word alignment
+//#define EPRO_BUFFER_LEN 1532
+
+#define EPRO_TRANSMIT_HEADER_SHORT1 (USHORT)I82595_XMT
+#define EPRO_TRANSMIT_HEADER_SHORT2 (USHORT)0x0
+
+////////////////////////////////////////////////////////////
+//
+////////////////////////////////////////////////////////////
+
+#define EPRO_REGISTRY_INTERRUPT_STRING NDIS_STRING_CONST("INTERRUPT")
+#define EPRO_REGISTRY_IOADDRESS_STRING NDIS_STRING_CONST("IOADDRESS")
+#define EPRO_REGISTRY_OLDIOADDRESS_STRING NDIS_STRING_CONST("OLDIOADDRESS")
+#define EPRO_REGISTRY_BUSTYPE_STRING NDIS_STRING_CONST("BusType")
+#define EPRO_REGISTRY_TRANSCEIVER_STRING NDIS_STRING_CONST("Transceiver")
+#define EPRO_REGISTRY_IOCHRDY_STRING NDIS_STRING_CONST("IoChannelReady")
+
+#define EPRO_IOCHRDY_EARLY 0x01
+#define EPRO_IOCHRDY_LATE 0x02
+#define EPRO_IOCHRDY_NEVER 0x03
+#define EPRO_IOCHRDY_AUTO 0x04
+
+////////////////////////////////////////////////////////////
+// Capabilities/Statistics about the EPRO card
+////////////////////////////////////////////////////////////
+
+#define EPRO_VENDOR_ID_L 0x00
+#define EPRO_VENDOR_ID_M 0xaa
+#define EPRO_VENDOR_ID_H 0x00
+
+#define EPRO_GEN_MEDIA_SUPPORTED NdisMedium802_3
+#define EPRO_GEN_MEDIA_IN_USE NdisMedium802_3
+#define EPRO_GEN_MAXIMUM_LOKAHEAD 256
+#define EPRO_GEN_MAXIMUM_FRAME_SIZE 1500
+#define EPRO_GEN_MAXIMUM_TOTAL_SIZE 1514
+#define EPRO_MAX_MULTICAST 64
+#define EPRO_GEN_MAC_OPTIONS (NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA | \
+ NDIS_MAC_OPTION_RECEIVE_SERIALIZED | \
+ NDIS_MAC_OPTION_NO_LOOPBACK)
+#define EPRO_GEN_LINK_SPEED 100000
+#define EPRO_GEN_RECEIVE_BUFFER_SPACE (0x8000 - 0x3000)
+#define EPRO_TX_BUF_SIZE 1514
+#define EPRO_RX_BUF_SIZE 0
+#define EPRO_GEN_TRANSMIT_BUFFER_SPACE EPRO_TX_BUF_SIZE * EPRO_NUM_TX_BUFFERS
+#define EPRO_VENDOR_DESC "Intel EtherExpress PRO"
+
+
+////////////////////////////////////////////////////////////
+// EPro EEPROM defines
+////////////////////////////////////////////////////////////
+#define EPRO_SK_STALL_TIME 1000 // use 1000 microsecs
+
+#define EPRO_ETHERNET_ADDR_H 0x2
+#define EPRO_ETHERNET_ADDR_M 0x3
+#define EPRO_ETHERNET_ADDR_L 0x4
+
+#define EPRO_EEPROM_CONFIG_OFFSET 0
+#define EPRO_EEPROM_CONFIG1_OFFSET 1
+
+// word 0 on the eeprom
+#define EPRO_EEPROM_IOADDR_BITPOS 0x0a // bits 10-15
+#define EPRO_EEPROM_IOADDR_MASK 0xfc00
+#define EPRO_EEPROM_AUTO_IO_ENABLE_MASK 0x0040
+#define EPRO_EEPROM_HOST_BUS_WD_MASK 0x0004
+#define EPRO_EEPROM_PNP_ENABLE_MASK 0x0001
+
+// word 1 on the eeprom. RM: Due to chenges for eeprom stepping 4, we
+// have additional masks. For simplicity's sake, stepping 4 masks
+// are prefixed with the '4' (even if there is no other stepping
+// equivalent INT for that IRQ).
+#define EPRO_EEPROM_IRQ_MASK 0x000f
+#define EPRO_EEPROM_IRQ_2_MASK 0x0
+#define EPRO_EEPROM_IRQ_3_MASK 0x1
+#define EPRO_EEPROM4_IRQ_3_MASK 0x0
+#define EPRO_EEPROM4_IRQ_4_MASK 0x1
+#define EPRO_EEPROM_IRQ_5_MASK 0x2
+#define EPRO_EEPROM4_IRQ_7_MASK 0x3
+#define EPRO_EEPROM4_IRQ_9_MASK 0x4
+#define EPRO_EEPROM_IRQ_10_MASK 0x3
+#define EPRO_EEPROM4_IRQ_10_MASK 0x5
+#define EPRO_EEPROM_IRQ_11_MASK 0x4
+#define EPRO_EEPROM4_IRQ_11_MASK 0x6
+#define EPRO_EEPROM4_IRQ_12_MASK 0x7
+
+
+////////////////////////////////////////////////////////////
+// TX/RX buffers
+////////////////////////////////////////////////////////////
+#define EPRO_TX_LOWER_LIMIT 0x00
+#define EPRO_TX_UPPER_LIMIT 0x27
+
+#define EPRO_TX_LOWER_LIMIT_SHORT 0x0000
+#define EPRO_TX_UPPER_LIMIT_SHORT 0x2800
+
+#define EPRO_RX_LOWER_LIMIT 0x28
+#define EPRO_RX_UPPER_LIMIT 0x7f
+
+#define EPRO_RX_LOWER_LIMIT_SHORT 0x2800
+#define EPRO_RX_UPPER_LIMIT_SHORT 0x8000
+
+////////////////////////////////////////////////////////////
+// Configuration Defaults
+////////////////////////////////////////////////////////////
+//#define EPRO_CONFIG_1 0xa0 // a0
+#define EPRO_CONFIG_1 0xe0 // a0
+#define EPRO_CONFIG_2 0x16 // no broadcast
+
+// 4 different ones depending on the transceiver setting...
+#define EPRO_CONFIG_3_AUI 0x10
+#define EPRO_CONFIG_3_BNC 0x34
+#define EPRO_CONFIG_3_TPE 0x14
+#define EPRO_CONFIG_3_AUTO 0x00
+
+#define EPRO_NO_RX_STP_INTERRUPTS 0x01
+#define EPRO_NO_RX_INTERRUPTS 0x02
+#define EPRO_NO_TX_INTERRUPTS 0x04
+#define EPRO_NO_EXEC_INTERRUPTS 0x08
+
+#define EPRO_DEFAULT_INTERRUPTS 0x09 // RX and TX
+#define EPRO_ALL_INTERRUPTS 0x0f
+#define EPRO_RX_TX_EXE_INTERRUPTS 0x01
+
+////////////////////////////////////////////////////////////
+// Various states for our ISR
+////////////////////////////////////////////////////////////
+#define EPRO_INT_NONE_PENDING 0
+//#define EPRO_INT_IN_SETUP 1
+//#define EPRO_INT_RESET_PENDING 2
+//#define EPRO_INT_SET_PENDING 3
+#define EPRO_INT_MC_SET_PENDING 4
+
+////////////////////////////////////////////////////////////
+//
+////////////////////////////////////////////////////////////
+// How long do we wait for a TX to free up before we
+// consider ourselves hung?
+#define EPRO_TX_TIMEOUT 10000 // 10000 usec right now
+
+#endif // _IEPROHW_
+