summaryrefslogblamecommitdiffstats
path: root/private/ntos/ndis/madge/driver/head_def/ftk_init.h
blob: 491df1e0a847c0f2da79159902c9d69081bf674e (plain) (tree)









































































































































































































































































































































                                                                              
/****************************************************************************/
/****************************************************************************/
/*                                                                          */
/*      THE INITIALIZATION BLOCK DEFINITIONS                                */
/*      ====================================                                */
/*                                                                          */
/*      FTK_INIT.H : Part of the FASTMAC TOOL-KIT (FTK)                     */
/*                                                                          */
/*      Copyright (c) Madge Networks Ltd. 1991-1994                         */
/*      CONFIDENTIAL                                                        */
/*                                                                          */
/*                                                                          */
/****************************************************************************/
/*                                                                          */
/* This header file contains the definitions for the structures that go  to */
/* make  the  initialization block that is needed in order to initialize an */
/* adapter card that is in use by the FTK.                                  */
/*                                                                          */
/* IMPORTANT : All structures used within the FTK  need  to  be  packed  in */
/* order to work correctly. This means sizeof(STRUCTURE) will give the real */
/* size  in bytes, and if a structure contains sub-structures there will be */
/* no spaces between the sub-structures.                                    */
/*                                                                          */
/****************************************************************************/

#pragma pack(1)

/****************************************************************************/
/*                                                                          */
/* VERSION_NUMBER of FTK to which this FTK_INIT.H belongs :                 */
/*                                                                          */

#define FTK_VERSION_NUMBER_FTK_INIT_H 221


/****************************************************************************/
/*                                                                          */
/* TYPEDEFs for all structures defined within this header file :            */
/*                                                                          */

typedef struct STRUCT_INITIALIZATION_BLOCK        INITIALIZATION_BLOCK;
typedef struct STRUCT_TI_INIT_PARMS               TI_INIT_PARMS;
typedef struct STRUCT_MADGE_INIT_PARMS_HEADER     MADGE_INIT_PARMS_HEADER;
typedef struct STRUCT_SMART_INIT_PARMS            SMART_INIT_PARMS;
typedef struct STRUCT_FASTMAC_INIT_PARMS          FASTMAC_INIT_PARMS;

/****************************************************************************/
/*                                                                          */
/* Structure type : TI_INIT_PARMS                                           */
/*                                                                          */
/* The TI initialization parameters are exactly those  defined  by  TI  for */
/* initializing an adapter based on the EAGLE chipset except for a  special */
/* byte  of  16/4 MC 32 configuration information. This byte overrides a TI */
/* initialization block field not used by Madge adapter cards.              */
/*                                                                          */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide        */
/*             by Texas Instruments                                         */
/*             4-42 4.6 Adapter Initialization                              */
/*                                                                          */

struct STRUCT_TI_INIT_PARMS
    {
    WORD        init_options;
    WORD        madge_mc32_config;              /* special MC 32 data       */
    BYTE        reserved[4];                    /* ignored by Madge cards   */
    WORD        rx_burst;
    WORD        tx_burst;
    BYTE        parity_retry;
    BYTE        dma_retry;
    DWORD       scb_addr;                       /* 32 bit phys host addr    */
    DWORD       ssb_addr;                       /* 32 bit phys host addr    */
    };


/****************************************************************************/
/*                                                                          */
/* Values : TI_INIT_PARMS - WORD init_options                               */
/*                                                                          */
/* The init_options are set up for burst mode DMA.                          */
/*                                                                          */

#define TI_INIT_OPTIONS_BURST_DMA               0x9F00


/****************************************************************************/
/*                                                                          */
/* Values : TI_INIT_PARMS - WORD madge_mc32_config                          */
/*                                                                          */
/* This value is used to configure MC and ISA CLIENT cards.                 */
/*                                                                          */

#define MC_AND_ISACP_USE_PIO                    0x0040


/****************************************************************************/
/*                                                                          */
/* Values : TI_INIT_PARMS - BYTE parity_retry, BYTE dma_retry               */
/*                                                                          */
/* A default value is used by the FTK for the parity and dma retry counts.  */
/*                                                                          */

#define TI_INIT_RETRY_DEFAULT           5


/****************************************************************************/
/*                                                                          */
/* Structure type : MADGE_INIT_PARMS_HEADER                                 */
/*                                                                          */
/* This is the common header to all  Madge  smart  software  initialization */
/* parameter  blocks  -  that  is, in this case, the header for the general */
/* smart software MAC level parameters and the Fastmac specific parameters. */
/*                                                                          */
/* REFERENCE : The Madge Smart SRB Interface                                */
/*             - Bring-Up and Initialization                                */
/*                                                                          */


struct STRUCT_MADGE_INIT_PARMS_HEADER
    {
    WORD                length;                 /* byte length of parms     */
    WORD                signature;              /* parms specific           */
    WORD                reserved;               /* must be 0                */
    WORD                version;                /* parms specific           */
    };


/****************************************************************************/
/*                                                                          */
/* Structure type : SMART_INIT_PARMS                                        */
/*                                                                          */
/* This   structure   contains   general  MAC  level  parameters  for  when */
/* downloading any Madge smart software.                                    */
/*                                                                          */
/* REFERENCE : The Madge Smart SRB Interface                                */
/*             - Bring-Up and Initialization                                */
/*                                                                          */

struct STRUCT_SMART_INIT_PARMS
    {

    MADGE_INIT_PARMS_HEADER     header;

    WORD                reserved_1;             /* must be 0                */
    NODE_ADDRESS        permanent_address;      /* BIA PROM node address    */
    WORD                rx_tx_buffer_size;      /* 0 => default 1K-8 bytes  */
    DWORD               reserved_2;             /* must be 0                */
    WORD                dma_buffer_size;        /* 0 => no limit            */
    WORD                max_buffer_ram;         /* 0 => default 2MB         */
    WORD                min_buffer_ram;         /* 0 => default 10K         */
    WORD                sif_burst_size;         /* 0 => no limit            */
    };


/****************************************************************************/
/*                                                                          */
/* Values : SMART_INIT_PARMS    - header. WORD signature, WORD version      */
/*                                                                          */
/* The  values  for  the  header  of  the  general smart software MAC level */
/* paramters strcture.                                                      */
/*                                                                          */

#define SMART_INIT_HEADER_SIGNATURE     0x0007
#define SMART_INIT_HEADER_VERSION       0x0101
#ifdef FMPLUS
#define SMART_INIT_MIN_RAM_DEFAULT      0x0002
#endif

/****************************************************************************/
/*                                                                          */
/* Structure type : SMART_FASTMAC_INIT_PARMS                                */
/*                                                                          */
/* The  Fastmac  initialization  parameters  as  specified  in  the Fastmac */
/* documentation.                                                           */
/*                                                                          */
/* REFERENCE : The Madge Fastmac Interface Specification                    */
/*             - Initialization                                             */
/*                                                                          */


struct STRUCT_FASTMAC_INIT_PARMS
    {

    MADGE_INIT_PARMS_HEADER     header;

    WORD		        feature_flags;
    WORD		        int_flags;
			
    WORD                open_options;           /* only for auto_open       */
    NODE_ADDRESS        open_address;           /* only for auto_open       */
    DWORD               group_address;          /* only for auto_open       */
    DWORD               functional_address;     /* only for auto_open       */

    DWORD               rx_buf_physaddr;        /* set to zero for FMPlus   */
    WORD                rx_buf_size;            /* (see rx_bufs/rx_slots)   */
    WORD                rx_buf_space;

    DWORD               tx_buf_physaddr;        /* set to zero for FMPlus   */
    WORD                tx_buf_size;            /* (see tx_bufs/tx_slots)   */
    WORD                tx_buf_space;

    WORD                max_frame_size;         /* for both rx and tx       */
    WORD                size_rxdesc_queue;      /* set to zero for FMPlus   */
    WORD                max_rx_dma;             /* set to zero for FMPlus   */

    WORD                group_root_address;     /* only for auto_open       */
#ifdef FMPLUS
    WORD                rx_bufs;                /* # of internel rx buffers */
    WORD                tx_bufs;                /* # of internal tx buffers */
    WORD                rx_slots;               /* # of host rx buffers     */
    WORD                tx_slots;               /* # of host tx buffers     */
    WORD                tx_ahead;               /* Leave as zero            */
#endif
    };


/****************************************************************************/
/*                                                                          */
/* Values : FASTMAC_INIT_PARMS - header. WORD signature, WORD version       */
/*                                                                          */
/* The values  for  the  header  of  the  Fastmac  specific  initialization */
/* parameter block.                                                         */
/*                                                                          */

#ifdef FMPLUS
#define FMPLUS_INIT_HEADER_SIGNATURE   0x000E
#define FMPLUS_INIT_HEADER_VERSION     0x0200   /* NOT Fastmac version!     */
#else
#define FASTMAC_INIT_HEADER_SIGNATURE  0x0005
#define FASTMAC_INIT_HEADER_VERSION    0x0405   /* NOT Fastmac version!     */
#endif

/****************************************************************************/
/*                                                                          */
/* Values : FASTMAC_INIT_PARMS  - WORD feature_flags                        */
/*                                                                          */
/* The feature flag bit signifcant  values  as  described  in  the  Fastmac */
/* specification document.                                                  */
/*                                                                          */
/* REFERENCE : The Madge Fastmac Interface Specification                    */
/*             - Initialization                                             */
/*                                                                          */

#define FEATURE_FLAG_AUTO_OPEN                  0x0001
#define FEATURE_FLAG_NOVELL                     0x0002
#define FEATURE_FLAG_SELL_BY_DATE               0x0004
#define FEATURE_FLAG_PASS_RX_CRC                0x0008
#define FEATURE_FLAG_WATCHDOG_TIMER             0x0020
#define FEATURE_FLAG_DISCARD_BEACON_TX          0x0040
#define FEATURE_FLAG_TRUNCATE_DMA               0x0080
#define FEATURE_FLAG_DELAY_RX                   0x0100
#define FEATURE_FLAG_ONE_INT_PER_RX             0x0200
#define FEATURE_FLAG_NEW_INIT_BLOCK             0x0400
#define FEATURE_FLAG_AUTO_OPEN_ON_OPEN          0x0800
#define FEATURE_FLAG_DISABLE_TX_FAIRNES         0x1000
#ifdef FMPLUS
#define FEATURE_FLAG_FMPLUS_ALWAYS_SET          0x0000
#endif

/* Yes, the FMPLUS_ALWAYS_SET bit is ZERO, because in fact it must NOT      */
/* always be set! This is an unfortunate historical legacy...               */


/****************************************************************************/
/*                                                                          */
/* Values : FASTMAC_INIT_PARMS  - WORD int_flags                            */
/*                                                                          */
/* The interrupt flag bit significant values as  described  in the  Fastmac */
/* Plus specification document.                                             */
/*                                                                          */
/* REFERENCE : The Madge Fastmac Plus Programming Specification             */
/*             - Initialization : TMS Load Parms                            */
/*                                                                          */

#define INT_FLAG_TX_BUF_EMPTY           0x0001
#define INT_FLAG_TIMER_TICK_ARB         0x0002
#define INT_FLAG_RING_STATUS_ARB        0x0004
#ifdef FMPLUS
#define INT_FLAG_LARGE_DMA              0x0008
#define INT_FLAG_RX                     0x0010
#endif

#ifdef FMPLUS
/****************************************************************************/
/*                                                                          */
/* Values : Magic Fastmac Plus numbers to do with buffers on the adapter    */
/*                                                                          */
/* The size  of  buffers  on  the adapter card can be set with in the init. */
/* block with  the  rx_tx_buffer_size field.  The minimum value and default */
/* values are specified here. Also, there are  numbers giving the amount of */
/* memory (in bytes) available for buffers on  adapter cards of various RAM */
/* sizes.                                                                   */
/*                                                                          */
/* REFERENCE : The Madge Fastmac Plus Programming Specification             */
/*             - Initialization : SMTMAC Load Parms                         */
/*                                                                          */

#define FMPLUS_MIN_TXRX_BUFF_SIZE       97

#define FMPLUS_DEFAULT_BUFF_SIZE_SMALL  504     /* For EISA/MC32 cards      */
#define FMPLUS_DEFAULT_BUFF_SIZE_LARGE  1016    /* For all other cards      */

#define FMPLUS_MAX_BUFFMEM_IN_128K       63056  /* Bytes available for buffs*/
#define FMPLUS_MAX_BUFFMEM_IN_256K      193104  /* on cards of 128K,256K, & */
#define FMPLUS_MAX_BUFFMEM_IN_512K      453200  /* 512K RAM.                */
#endif

/****************************************************************************/
/*                                                                          */
/* Structure type : INITIALIZATION_BLOCK                                    */
/*                                                                          */
/* The  initialization  block  consists  of  3  parts  -  22  bytes  of  TI */
/* intialization parameters, general smart  software  MAC level parameters, */
/* and the Fastmac specific parameters.                                     */
/*                                                                          */

struct STRUCT_INITIALIZATION_BLOCK
    {
    TI_INIT_PARMS               ti_parms;
    SMART_INIT_PARMS            smart_parms;
    FASTMAC_INIT_PARMS          fastmac_parms;
    };


#pragma pack()

/*                                                                          */
/*                                                                          */
/************** End of FTK_INIT.H file **************************************/
/*                                                                          */
/*                                                                          */