mirror of https://github.com/lianthony/NT4.0
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.
280 lines
14 KiB
280 lines
14 KiB
/****************************************************************************/
|
|
/****************************************************************************/
|
|
/* */
|
|
/* THE ADAPTER DEFINITIONS */
|
|
/* ======================= */
|
|
/* */
|
|
/* FTK_ADAP.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 for the structure which is */
|
|
/* used to maintain information on an adapter that is being used by the */
|
|
/* FTK. */
|
|
/* */
|
|
/****************************************************************************/
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* VERSION_NUMBER of FTK to which this FTK_ADAP.H belongs : */
|
|
/* */
|
|
|
|
#define FTK_VERSION_NUMBER_FTK_ADAP_H 221
|
|
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* TYPEDEFs for all structures defined within this header file : */
|
|
/* */
|
|
|
|
typedef struct STRUCT_ADAPTER ADAPTER;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* Structure type : ADAPTER */
|
|
/* */
|
|
/* The adapter structure is used to maintain all the information for a */
|
|
/* single adapter. This includes information on the Fastmac for the */
|
|
/* adapter. Most of the fields are filled in from the user supplied adapter */
|
|
/* information to driver_prepare_adapter and driver_start_adapter. */
|
|
/* */
|
|
|
|
struct STRUCT_ADAPTER
|
|
{
|
|
void (*set_dio_address) (struct STRUCT_ADAPTER*, DWORD);
|
|
void (*interrupt_handler) (struct STRUCT_ADAPTER*);
|
|
void (*remove_card) (struct STRUCT_ADAPTER*);
|
|
UINT adapter_card_bus_type;
|
|
UINT adapter_card_type;
|
|
UINT adapter_card_revision;
|
|
UINT adapter_ram_size; /* Depends on card type. */
|
|
#ifdef PCMCIA_POINT_ENABLE
|
|
UINT socket; /* Socket passed to point
|
|
enabler. */
|
|
BOOLEAN drop_int; /* Flag used to stop a
|
|
spurious interrupt being
|
|
claimed. */
|
|
#endif
|
|
WORD io_location;
|
|
WORD io_range;
|
|
WORD interrupt_number; /* 0 == Polling mode */
|
|
WBOOLEAN edge_triggered_ints;
|
|
WORD nselout_bits; /* IRQ select on Smart16 */
|
|
WORD dma_channel;
|
|
UINT transfer_mode; /* DMA/MMIO/PIO */
|
|
WBOOLEAN EaglePsDMA;
|
|
WORD mc32_config; /* special config info */
|
|
NODE_ADDRESS permanent_address; /* BIA PROM node address */
|
|
UINT ring_speed;
|
|
WBOOLEAN speed_detect; /* Card is capable of detecting ring speed */
|
|
WORD max_frame_size; /* determined by ring speed */
|
|
UINT set_ring_speed; /* Force ring speed to this */
|
|
DWORD mmio_base_address; /* MMIO base address */
|
|
DWORD pci_handle; /* PCI slot handle. */
|
|
WBOOLEAN use_32bit_pio;
|
|
WORD sif_dat; /* SIF register IO locations*/
|
|
WORD sif_datinc;
|
|
WORD sif_adr;
|
|
WORD sif_int;
|
|
WORD sif_acl;
|
|
WORD sif_adr2;
|
|
WORD sif_adx;
|
|
WORD sif_dmalen;
|
|
WORD sif_sdmadat;
|
|
WORD sif_sdmaadr;
|
|
WORD sif_sdmaadx;
|
|
WORD c46_bits; /* Bits we must remember in */
|
|
/* the AT93C46 control reg. */
|
|
|
|
|
|
WBOOLEAN set_irq; /* set IRQ if possible */
|
|
WBOOLEAN set_dma; /* set DMA if possible */
|
|
|
|
SRB_GENERAL srb_general; /* SRB for this adapter */
|
|
WORD size_of_srb; /* size of current SRB */
|
|
|
|
DOWNLOAD_IMAGE * download_image; /* ptr Fastmac binary image */
|
|
INITIALIZATION_BLOCK * init_block; /* ptr Fastmac init block */
|
|
SRB_HEADER * srb_dio_addr; /* addr of SRB in DIO space */
|
|
FASTMAC_STATUS_BLOCK * stb_dio_addr; /* addr of STB in DIO space */
|
|
|
|
WBOOLEAN interrupts_on; /* for this adapter */
|
|
WBOOLEAN dma_on; /* for this adapter */
|
|
|
|
UINT adapter_status; /* prepared or running */
|
|
UINT srb_status; /* free or in use */
|
|
ERROR_RECORD error_record; /* error type and value */
|
|
ERROR_MESSAGE error_message; /* error message string */
|
|
|
|
STATUS_INFORMATION * status_info; /* ptr adapter status info */
|
|
|
|
void * user_information; /* User's private data. */
|
|
|
|
ADAPTER_HANDLE adapter_handle;
|
|
|
|
#ifdef FMPLUS
|
|
|
|
DWORD dma_test_buf_phys;
|
|
DWORD dma_test_buf_virt;
|
|
|
|
|
|
RX_SLOT * rx_slot_array[FMPLUS_MAX_RX_SLOTS];
|
|
/* Rx slot DIO addresses */
|
|
TX_SLOT * tx_slot_array[FMPLUS_MAX_TX_SLOTS];
|
|
/* Tx slot DIO addresses */
|
|
|
|
void * rx_slot_mgmnt; /* pointer to user slot */
|
|
void * tx_slot_mgmnt; /* management structures. */
|
|
|
|
#else
|
|
|
|
DWORD rx_buffer_phys; /* RX buffer physical address*/
|
|
DWORD rx_buffer_virt; /* RX buffer virtual address */
|
|
DWORD tx_buffer_phys; /* TX buffer physical address*/
|
|
DWORD tx_buffer_virt; /* TX buffer virtual address */
|
|
|
|
#endif
|
|
};
|
|
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* Values : ADAPTER - WORD adapter_card_type */
|
|
/* */
|
|
/* The following are the different types of adapter cards supported by the */
|
|
/* FTK (and their subtypes). */
|
|
/* */
|
|
|
|
#define ADAPTER_CARD_TYPE_16_4_AT 2
|
|
|
|
#define ADAPTER_CARD_16_4_PC 0
|
|
#define ADAPTER_CARD_16_4_MAXY 1
|
|
#define ADAPTER_CARD_16_4_AT 2
|
|
#define ADAPTER_CARD_16_4_FIBRE 3
|
|
#define ADAPTER_CARD_16_4_BRIDGE 4
|
|
#define ADAPTER_CARD_16_4_ISA_C 5
|
|
#define ADAPTER_CARD_16_4_AT_P_REV 6
|
|
#define ADAPTER_CARD_16_4_FIBRE_P 7
|
|
#define ADAPTER_CARD_16_4_ISA_C_P 8
|
|
#define ADAPTER_CARD_16_4_AT_P 9
|
|
|
|
#define ADAPTER_CARD_TYPE_16_4_MC 3
|
|
|
|
#define ADAPTER_CARD_TYPE_16_4_MC_32 4
|
|
|
|
#define ADAPTER_CARD_TYPE_16_4_EISA 5
|
|
|
|
#define ADAPTER_CARD_16_4_EISA_MK1 1
|
|
#define ADAPTER_CARD_16_4_EISA_MK2 2
|
|
#define ADAPTER_CARD_16_4_EISA_BRIDGE 3
|
|
#define ADAPTER_CARD_16_4_EISA_MK3 4
|
|
|
|
#define ADAPTER_CARD_TYPE_SMART_16 6
|
|
#define ADAPTER_CARD_SMART_16 1
|
|
|
|
#define ADAPTER_CARD_TYPE_16_4_PCI 7
|
|
#define ADAPTER_CARD_16_4_PCI 0
|
|
|
|
#define ADAPTER_CARD_TYPE_16_4_PCMCIA 8
|
|
#define ADAPTER_CARD_16_4_PCMCIA 1
|
|
|
|
#define ADAPTER_CARD_TYPE_16_4_PNP 9
|
|
#define ADAPTER_CARD_PNP 0
|
|
|
|
#define ADAPTER_CARD_TYPE_16_4_PCIT 10
|
|
#define ADAPTER_CARD_16_4_PCIT 0
|
|
|
|
#define ADAPTER_CARD_TYPE_16_4_PCI2 11
|
|
#define ADAPTER_CARD_16_4_PCI2 0
|
|
|
|
#define ADAPTER_CARD_UNKNOWN 255
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* Values : ADAPTER - WORD adapter_status */
|
|
/* */
|
|
/* These values are for the different required states of the adapter when */
|
|
/* using the FTK. */
|
|
/* */
|
|
|
|
#define ADAPTER_PREPARED_FOR_START 0
|
|
#define ADAPTER_RUNNING 1
|
|
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* Values : ADAPTER - WORD srb_status */
|
|
/* */
|
|
/* These values are for the different required states of the SRB, */
|
|
/* associated with an adapter, when using the FTK. */
|
|
/* */
|
|
|
|
#define SRB_ANY_STATE 0
|
|
#define SRB_FREE 1
|
|
#define SRB_NOT_FREE 2
|
|
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* Value : Number of Adapters supported */
|
|
/* */
|
|
/* The FTK supports a specified maximum number of adapters. The smaller */
|
|
/* this value is, the less memory that is used. This is especially true */
|
|
/* when considering system specific parts such as the DOS example code */
|
|
/* within this FTK. It uses the maximum number of adapters value for */
|
|
/* determining the size of static arrays of adapter structures and */
|
|
/* initialization blocks. It also uses it for determining the number of */
|
|
/* interrupt stubs required given that : */
|
|
/* */
|
|
/* NOTE : If using the DOS example system specific code, then it must be */
|
|
/* the case that MAX_NUMBER_OF_ADAPTERS defined here equals */
|
|
/* MAX_NUMBER_OF_ADAPTERS as defined in SYS_IRQ.ASM. */
|
|
/* */
|
|
|
|
#define MAX_NUMBER_OF_ADAPTERS 8
|
|
|
|
|
|
#define ISA_IO_LOCATIONS 4
|
|
#define MAX_ISA_ADAPATERS ISA_IO_LOCATIONS
|
|
|
|
#define MC_IO_LOCATIONS 8
|
|
#define MAX_MC_ADAPATERS MC_IO_LOCATIONS
|
|
|
|
#define MC32_IO_LOCATIONS 8
|
|
#define MAX_MC32_ADAPATERS MC32_IO_LOCATIONS
|
|
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* Varaibles : adapter_record array */
|
|
/* */
|
|
/* The FTK maintains an array of pointers to the adapter structures used to */
|
|
/* maintain information on the different adapters being used. This array is */
|
|
/* exported by DRV_INIT.C. */
|
|
/* */
|
|
|
|
extern ADAPTER * adapter_record[MAX_NUMBER_OF_ADAPTERS];
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* Macro: FTK_ADAPTER_USER_INFORMATION */
|
|
/* */
|
|
/* A macro to let FTK users get at their private adapter information from */
|
|
/* an adapter handle. */
|
|
/* */
|
|
|
|
#define FTK_ADAPTER_USER_INFORMATION(adapter_handle) \
|
|
(adapter_record[(adapter_handle)]->user_information)
|
|
|
|
|
|
/* */
|
|
/* */
|
|
/************** End of FTK_ADAP.H file **************************************/
|
|
/* */
|
|
/* */
|