Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

341 lines
20 KiB

/****************************************************************************/
/****************************************************************************/
/* */
/* THE ADAPTER CARD DEFINITIONS : EAGLE (TMS 380 2nd GEN) */
/* ====================================================== */
/* */
/* FTK_CARD.H : Part of the FASTMAC TOOL-KIT (FTK) */
/* */
/* Copyright (c) Madge Networks Ltd. 1991-1994 */
/* Developed by MF */
/* CONFIDENTIAL */
/* */
/* */
/****************************************************************************/
/* */
/* This header file contains the definitions specific to the TI EAGLE (TMS */
/* 380 2nd generation) chipset and the bring-up, initialization and opening */
/* of the adapter. It also contains the details of the BIA PROM on ATULA */
/* and MC cards. */
/* */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide */
/* by Texas Instruments */
/* */
/****************************************************************************/
/****************************************************************************/
/* */
/* VERSION_NUMBER of FTK to which this FTK_CARD.H belongs : */
/* */
#define FTK_VERSION_NUMBER_FTK_CARD_H 221
/****************************************************************************/
/* */
/* Values : EAGLE SIF REGISTERS */
/* */
/* The EAGLE SIF registers are in two groups - the normal SIF registers */
/* (those from the old TI chipset) and the extended SIF registers (those */
/* particular to the EAGLE). */
/* */
/* The definitions for the normal SIF registers are here because they */
/* appear in the same relative IO locations for all adapter cards. The */
/* definitions for the extended SIF registers are in the FTK_<card_type>.H */
/* files. */
/* */
#define EAGLE_SIFDAT 0 /* DIO data */
#define EAGLE_SIFDAT_INC 2 /* DIO data auto-increment */
#define EAGLE_SIFADR 4 /* DIO address (low) */
#define EAGLE_SIFINT 6 /* interrupt SIFCMD-SIFSTS */
/* These definitions are for the case when the SIF registers are mapped */
/* linearly. Otherwise, they will be at some extended location. */
#define EAGLE_SIFACL 8
#define EAGLE_SIFADX 12
/* These definitions are for Eagle Pseudo DMA. Notice that they replace the */
/* registers above - this is controlled by SIFACL. */
#define EAGLE_SDMADAT 0
#define EAGLE_DMALEN 2
#define EAGLE_SDMAADR 4
#define EAGLE_SDMAADX 6
/****************************************************************************/
/* */
/* Value : Number of IO locations for SIF registers */
/* */
/* The number of SIF registers is only needed for enabling and disabling */
/* ranges of IO ports. For the ATULA and MC cards the SIF registers are in */
/* 2 pages only using 8 IO ports. However, for EISA cards, the SIF */
/* registers are in a single page of 16 IO ports. Hence, 16 IO ports need */
/* to be enabled whenever accessing SIF registers. */
/* */
#define SIF_IO_RANGE 16
/****************************************************************************/
/* */
/* Value : Number of IO locations for adapter cards */
/* */
/* The maximum IO range required for the register map of any type of */
/* adapter card is that used by the EISA card. The ATULA based cards have */
/* the largest contiguous IO range, however. The EISA range is split into */
/* two, the upper range only being used during installation. */
/* */
#define MAX_CARD_IO_RANGE ATULA_IO_RANGE
/****************************************************************************/
/* */
/* Values : MAX FRAME SIZES SUPPORTED */
/* */
/* Depending on the ring speed (4 Mbit/s or 16 Mbit/s) different maximum */
/* frame sizes are supported as defined in the ISO standards. The ISO */
/* standards give the maximum size of the information field to which has to */
/* added the MAC header, SR info fields etc. to give real maximum token */
/* ring frame size. */
/* */
#define MAC_FRAME_SIZE 39
#define MIN_FRAME_SIZE (256 + MAC_FRAME_SIZE)
#define MAX_FRAME_SIZE_4_MBITS (4472 + MAC_FRAME_SIZE)
#define MAX_FRAME_SIZE_16_MBITS (17800 + MAC_FRAME_SIZE)
/****************************************************************************/
/* */
/* Values : EAGLE ADAPTER CONTROL (SIFACL) REGISTER BITS */
/* */
/* The bits in the EAGLE extended SIF register EAGLE_SIFACL can be used for */
/* general controlling of the adapter card. */
/* */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide */
/* by Texas Instruments */
/* 4-18 4.3.1 SIFACL - SIF Adapter Control Register */
/* */
#define EAGLE_SIFACL_SWHLDA 0x0800 /* for EAGLE pseudo-DMA */
#define EAGLE_SIFACL_SWDDIR 0x0400 /* data transfer direction */
#define EAGLE_SIFACL_SWHRQ 0x0200 /* DMA pending */
#define EAGLE_SIFACL_PSDMAEN 0x0100 /* for EAGLE pseudo-DMA */
#define EAGLE_SIFACL_ARESET 0x0080 /* adapter reset */
#define EAGLE_SIFACL_CPHALT 0x0040 /* halt EAGLE */
#define EAGLE_SIFACL_BOOT 0x0020 /* bootstrap */
#define EAGLE_SIFACL_RESERVED1 0x0010 /* reserved */
#define EAGLE_SIFACL_SINTEN 0x0008 /* system interrupt enable */
#define EAGLE_SIFACL_PARITY 0x0004 /* adapter parity enable */
#define EAGLE_SIFACL_INPUT0 0x0002 /* reserved */
#define EAGLE_SIFACL_RESERVED2 0x0001 /* reserved */
/****************************************************************************/
/* */
/* Values : DIO LOCATIONS */
/* */
/* When initializing an adapter the initialization block must be downloaded */
/* to location 0x00010A00L in DIO space. */
/* */
/* The ring speed, from which the maximum frame size is deduced, can be */
/* determined by the value in the ring speed register at DIO address 0x0142 */
/* in the EAGLE DATA page 0x00010000. */
/* */
#define DIO_LOCATION_INIT_BLOCK 0x00010A00L
#define DIO_LOCATION_EAGLE_DATA_PAGE 0x00010000L
#define DIO_LOCATION_RING_SPEED_REG 0x0142
#define RING_SPEED_REG_4_MBITS_MASK 0x0400
#define DIO_LOCATION_EXT_DMA_ADDR 0x010E
#define DIO_LOCATION_DMA_ADDR 0x0110
#define DIO_LOCATION_DMA_CONTROL 0x100A
/****************************************************************************/
/* */
/* Values : EAGLE BRING UP INTERRUPT REGISTER VALUES */
/* */
/* The code produced at the SIFSTS part of the SIF interrupt register at */
/* bring up time indicates the success or failure of the bring up. The */
/* success or failure is determined by looking at the top nibble. On */
/* success, the INITIALIZE bit is set. On failure, the TEST and ERROR bits */
/* are set and the error code is in the bottom nibble. */
/* */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide */
/* by Texas Instruments */
/* 4-40 4.5 Bring-Up Diagnostics - BUD */
/* */
#define EAGLE_SIFINT_SYSTEM (UINT) 0x0080
#define EAGLE_BRING_UP_TOP_NIBBLE (BYTE) 0xF0
#define EAGLE_BRING_UP_BOTTOM_NIBBLE (BYTE) 0x0F
#define EAGLE_BRING_UP_SUCCESS (BYTE) 0x40
#define EAGLE_BRING_UP_FAILURE (BYTE) 0x30
/****************************************************************************/
/* */
/* Values : EAGLE INITIALIZATION INTERRUPT REGISTER VALUES */
/* */
/* The code 0x9080 is output to the SIF interrupt register in order to */
/* start the initialization process. The code produced at the SIFSTS part */
/* of the SIF interrupt register at initialization time indicates the */
/* success or failure of the initialization. On success, the INITIALIZE, */
/* TEST and ERROR bits are all zero. On failure, the ERROR bit is set and */
/* the error code is in the bottom nibble. */
/* */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide */
/* by Texas Instruments */
/* 4-46 4.6.2 Writing The Initialization Block */
/* */
#define EAGLE_INIT_START_CODE 0x9080
#define EAGLE_INIT_TOP_NIBBLE (BYTE) 0xF0
#define EAGLE_INIT_BOTTOM_NIBBLE (BYTE) 0x0F
#define EAGLE_INIT_SUCCESS_MASK (BYTE) 0x70
#define EAGLE_INIT_FAILURE_MASK (BYTE) 0x10
/****************************************************************************/
/* */
/* Values : SCB and SSB test patterns */
/* */
/* As a result of initialization, certain test patterns should be left in */
/* the SSB and SCB as pointed to by the TI initialization parameters. */
/* */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide */
/* by Texas Instruments */
/* 4-46 4.6.2 Writing The Initialization Block */
/* */
#define SSB_TEST_PATTERN_LENGTH 8
#define SSB_TEST_PATTERN_DATA {0xFF,0xFF,0xD1,0xD7,0xC5,0xD9,0xC3,0xD4}
#define SCB_TEST_PATTERN_LENGTH 6
#define SCB_TEST_PATTERN_DATA {0x00,0x00,0xC1,0xE2,0xD4,0x8B}
/****************************************************************************/
/* */
/* Value : EAGLE ARB FREE CODE - written to the EAGLE interrupt register to */
/* indicate that the ARB is now free for use by the adapter. This */
/* is of most use at start time when combined with the DELAY_RX */
/* FEATURE FLAG. This code can be used to enable receives. */
#define EAGLE_ARB_FREE_CODE 0x90FF
/****************************************************************************/
/* */
/* Values : EAGLE OPENING ERRORS */
/* */
/* On opening the adapter, the success or failure is recorded in the */
/* open_error field of the Fastmac status parameter block. The bottom byte */
/* has the error value on failure. On success, the word is clear. The open */
/* error is that which would be given by a MAC 0003 OPEN command. */
/* */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide */
/* by Texas Instruments */
/* 4-80 MAC 0003 OPEN command */
/* */
#define EAGLE_OPEN_ERROR_BOTTOM_BYTE 0x00FF
#define EAGLE_OPEN_ERROR_SUCCESS 0x0000
/****************************************************************************/
/* */
/* Values : BIA PROM FORMAT */
/* */
/* The BIA PROM is accessed in 2 pages. With CTRLn_SIFSEL = 0 (n=7 for */
/* ATULA cards, n=0 for MC cards) or CTRL1_NRESET = 0, the bit CTRLn_PAGE */
/* selects the different pages. With CTRLn_PAGE = 0, the id and board type */
/* are available; with CTRLn_PAGE = 1, the node address is available. */
/* */
#define BIA_PROM_ID_BYTE 0
#define BIA_PROM_ADAPTER_BYTE 1
#define BIA_PROM_REVISION_BYTE 2
#define BIA_PROM_FEATURES_BYTE 3
#define BIA_PROM_HWF2 4
#define BIA_PROM_HWF3 5
#define BIA_PROM_NODE_ADDRESS 1
/****************************************************************************/
/* */
/* Values : Bits defined in the HW flags */
/* */
/* HWF2 */
#define C30 0x1
/* HWF3 */
#define RSPEED_DETECT 0x80
/****************************************************************************/
/* */
/* Values : BIA PROM ADAPTER CARD TYPES */
/* */
/* The second byte in the first page of the BIA PROM contains an adapter */
/* card type. */
/* */
#define BIA_PROM_TYPE_16_4_AT ((BYTE) 0x04)
#define BIA_PROM_TYPE_16_4_MC ((BYTE) 0x08)
#define BIA_PROM_TYPE_16_4_PC ((BYTE) 0x0B)
#define BIA_PROM_TYPE_16_4_MAXY ((BYTE) 0x0C)
#define BIA_PROM_TYPE_16_4_MC_32 ((BYTE) 0x0D)
#define BIA_PROM_TYPE_16_4_AT_P ((BYTE) 0x0E)
#define MAX_ADAPTER_CARD_AT_REV 6
/****************************************************************************/
/* */
/* Values : BIA PROM FEATURES BYTE MASKS (and related values) */
/* */
/* The features byte in the BIA indicates certain hardware characteristics */
/* of AT/P cards (and later cards). */
/* Note that you can multiply the masked DRAM field by the DRAM_MULT value */
/* to get the amount of RAM on the card (don't shift the field). */
/* */
#define BIA_PROM_FEATURE_SRA_MASK ((BYTE) 0x01)
#define BIA_PROM_FEATURE_DRAM_MASK ((BYTE) 0x3E)
#define BIA_PROM_FEATURE_CLKDIV_MASK ((BYTE) 0x40)
#define DRAM_MULT 64
/****************************************************************************/
/* */
/* Values : MADGE ADAPTER CARD NODE ADDRESSES */
/* */
/* The first 3 bytes of the permanent node address for Madge adapter cards */
/* must have certain values. All Madge node addresses are of the form */
/* 0000F6xxxxxx. */
/* */
#define MADGE_NODE_BYTE_0 ((BYTE) 0x00)
#define MADGE_NODE_BYTE_1 ((BYTE) 0x00)
#define MADGE_NODE_BYTE_2 ((BYTE) 0xF6)
/* */
/* */
/************** End of FTK_CARD.H file **************************************/
/* */
/* */