/** @file
  Definitions for network adapter card.

Copyright (c) 2006 - 2007, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution.  The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#ifndef _E100B_H_
#define _E100B_H_

// pci config offsets:

#define RX_BUFFER_COUNT 32
#define TX_BUFFER_COUNT 32

#define PCI_VENDOR_ID_INTEL 0x8086
#define PCI_DEVICE_ID_INTEL_82557 0x1229
#define D100_VENDOR_ID   0x8086
#define D100_DEVICE_ID   0x1229
#define D102_DEVICE_ID   0x2449

#define ICH3_DEVICE_ID_1   0x1031
#define ICH3_DEVICE_ID_2   0x1032
#define ICH3_DEVICE_ID_3   0x1033
#define ICH3_DEVICE_ID_4   0x1034
#define ICH3_DEVICE_ID_5   0x1035
#define ICH3_DEVICE_ID_6   0x1036
#define ICH3_DEVICE_ID_7   0x1037
#define ICH3_DEVICE_ID_8   0x1038

#define SPEEDO_DEVICE_ID   0x1227
#define SPLASH1_DEVICE_ID   0x1226


// bit fields for the command
#define PCI_COMMAND_MASTER  0x04  // bit 2
#define PCI_COMMAND_IO    0x01  // bit 0
#define PCI_COMMAND  0x04
#define PCI_LATENCY_TIMER  0x0D

#define ETHER_MAC_ADDR_LEN 6
#ifdef AVL_XXX
#define ETHER_HEADER_LEN 14
// media interface type
// #define INTERFACE_TYPE "

// Hardware type values
#define HW_ETHER_TYPE    1
#define HW_EXPERIMENTAL_ETHER_TYPE 2
#define HW_IEEE_TYPE    6
#define HW_ARCNET_TYPE     7

#endif  // AVL_XXX

#define MAX_ETHERNET_PKT_SIZE 1514  // including eth header
#define RX_BUFFER_SIZE 1536  // including crc and padding
#define TX_BUFFER_SIZE 64
#define ETH_MTU 1500  // does not include ethernet header length

#define SPEEDO3_TOTAL_SIZE 0x20

#pragma pack(1)

typedef struct eth {
  UINT8 dest_addr[PXE_HWADDR_LEN_ETHER];
  UINT8 src_addr[PXE_HWADDR_LEN_ETHER];
  UINT16 type;
} EtherHeader;

#pragma pack(1)
typedef struct CONFIG_HEADER {
  UINT16 VendorID;
  UINT16 DeviceID;
  UINT16 Command;
  UINT16 Status;
  UINT16 RevID;
  UINT16 ClassID;
  UINT8  CacheLineSize;
  UINT8  LatencyTimer;
  UINT8  HeaderType;    // must be zero to impose this structure...
  UINT8  BIST;  // built-in self test
  UINT32 BaseAddressReg_0;  // memory mapped address
  UINT32 BaseAddressReg_1;  //io mapped address, Base IO address
  UINT32 BaseAddressReg_2;  // option rom address
  UINT32 BaseAddressReg_3;
  UINT32 BaseAddressReg_4;
  UINT32 BaseAddressReg_5;
  UINT32 CardBusCISPtr;
  UINT16 SubVendorID;
  UINT16 SubSystemID;
  UINT32 ExpansionROMBaseAddr;
  UINT8 CapabilitiesPtr;
  UINT8 reserved1;
  UINT16 Reserved2;
  UINT32 Reserved3;
  UINT8 int_line;
  UINT8 int_pin;
  UINT8 Min_gnt;
  UINT8 Max_lat;
} PCI_CONFIG_HEADER;
#pragma pack()

//-------------------------------------------------------------------------
// Offsets to the various registers.
//   All accesses need not be longword aligned.
//-------------------------------------------------------------------------
enum speedo_offsets {
  SCBStatus = 0, SCBCmd = 2,     // Rx/Command Unit command and status.
  SCBPointer = 4,                // General purpose pointer.
  SCBPort = 8,                   // Misc. commands and operands.
  SCBflash = 12, SCBeeprom = 14, // EEPROM and flash memory control.
  SCBCtrlMDI = 16,               // MDI interface control.
  SCBEarlyRx = 20,               // Early receive byte count.
  SCBEarlyRxInt = 24, SCBFlowCtrlReg = 25, SCBPmdr = 27,
  // offsets for general control registers (GCRs)
  SCBGenCtrl = 28, SCBGenStatus = 29, SCBGenCtrl2 = 30, SCBRsvd = 31
};

#define GCR2_EEPROM_ACCESS_SEMAPHORE 0x80 // bit offset into the gcr2

//-------------------------------------------------------------------------
// Action commands - Commands that can be put in a command list entry.
//-------------------------------------------------------------------------
enum commands {
  CmdNOp = 0, CmdIASetup = 1, CmdConfigure = 2, CmdMulticastList = 3,
  CmdTx = 4, CmdTDR = 5, CmdDump = 6, CmdDiagnose = 7,
  CmdSuspend = 0x4000,    /* Suspend after completion. */
  CmdIntr = 0x2000,      /* Interrupt after completion. */
  CmdTxFlex = 0x0008      /* Use "Flexible mode" for CmdTx command. */
};

//-------------------------------------------------------------------------
// port commands
//-------------------------------------------------------------------------
#define PORT_RESET 0
#define PORT_SELF_TEST 1
#define POR_SELECTIVE_RESET 2
#define PORT_DUMP_POINTER 2

//-------------------------------------------------------------------------
// SCB Command Word bit definitions
//-------------------------------------------------------------------------
//- CUC fields
#define   CU_START    0x0010
#define   CU_RESUME    0x0020
#define   CU_STATSADDR  0x0040
#define   CU_SHOWSTATS  0x0050  /* Dump statistics counters. */
#define   CU_CMD_BASE  0x0060  /* Base address to add to add CU commands. */
#define   CU_DUMPSTATS  0x0070  /* Dump then reset stats counters. */

//- RUC fields
#define   RX_START  0x0001
#define   RX_RESUME  0x0002
#define   RX_ABORT  0x0004
#define   RX_ADDR_LOAD  0x0006  /* load ru_base_reg */
#define   RX_RESUMENR  0x0007

// Interrupt fields (assuming byte addressing)
#define INT_MASK  0x0100
#define DRVR_INT  0x0200    /* Driver generated interrupt. */

//- CB Status Word
#define CMD_STATUS_COMPLETE 0x8000
#define RX_STATUS_COMPLETE 0x8000
#define CMD_STATUS_MASK 0xF000

//-------------------------------------------------------------------------
//- SCB Status bits:
// Interrupts are ACKed by writing to the upper 6 interrupt bits
//-------------------------------------------------------------------------
#define SCB_STATUS_MASK        0xFC00 // bits 2-7 - STATUS/ACK Mask
#define SCB_STATUS_CX_TNO      0x8000 // BIT_15  - CX or TNO Interrupt
#define SCB_STATUS_FR          0x4000 // BIT_14 - FR Interrupt
#define SCB_STATUS_CNA         0x2000 // BIT_13 - CNA Interrupt
#define SCB_STATUS_RNR         0x1000 // BIT_12  - RNR Interrupt
#define SCB_STATUS_MDI         0x0800 // BIT_11  - MDI R/W Done Interrupt
#define SCB_STATUS_SWI         0x0400 // BIT_10  - SWI Interrupt

// CU STATUS: bits 6 & 7
#define SCB_STATUS_CU_MASK     0x00C0 // bits 6 & 7
#define SCB_STATUS_CU_IDLE     0x0000 // 00
#define SCB_STATUS_CU_SUSPEND  0x0040 // 01
#define SCB_STATUS_CU_ACTIVE   0x0080 // 10

// RU STATUS: bits 2-5
#define SCB_RUS_IDLE         0x0000
#define SCB_RUS_SUSPENDED    0x0004  // bit 2
#define SCB_RUS_NO_RESOURCES   0x0008 // bit 3
#define SCB_RUS_READY       0x0010 // bit 4

//-------------------------------------------------------------------------
// Bit Mask definitions
//-------------------------------------------------------------------------
#define BIT_0       0x0001
#define BIT_1       0x0002
#define BIT_2       0x0004
#define BIT_3       0x0008
#define BIT_4       0x0010
#define BIT_5       0x0020
#define BIT_6       0x0040
#define BIT_7       0x0080
#define BIT_8       0x0100
#define BIT_9       0x0200
#define BIT_10      0x0400
#define BIT_11      0x0800
#define BIT_12      0x1000
#define BIT_13      0x2000
#define BIT_14      0x4000
#define BIT_15      0x8000
#define BIT_24      0x01000000
#define BIT_28      0x10000000


//-------------------------------------------------------------------------
// MDI Control register bit definitions
//-------------------------------------------------------------------------
#define MDI_DATA_MASK           BIT_0_15        // MDI Data port
#define MDI_REG_ADDR            BIT_16_20       // which MDI register to read/write
#define MDI_PHY_ADDR            BIT_21_25       // which PHY to read/write
#define MDI_PHY_OPCODE          BIT_26_27       // which PHY to read/write
#define MDI_PHY_READY           BIT_28          // PHY is ready for another MDI cycle
#define MDI_PHY_INT_ENABLE      BIT_29          // Assert INT at MDI cycle completion

#define BIT_0_2     0x0007
#define BIT_0_3     0x000F
#define BIT_0_4     0x001F
#define BIT_0_5     0x003F
#define BIT_0_6     0x007F
#define BIT_0_7     0x00FF
#define BIT_0_8     0x01FF
#define BIT_0_13    0x3FFF
#define BIT_0_15    0xFFFF
#define BIT_1_2     0x0006
#define BIT_1_3     0x000E
#define BIT_2_5     0x003C
#define BIT_3_4     0x0018
#define BIT_4_5     0x0030
#define BIT_4_6     0x0070
#define BIT_4_7     0x00F0
#define BIT_5_7     0x00E0
#define BIT_5_9     0x03E0
#define BIT_5_12    0x1FE0
#define BIT_5_15    0xFFE0
#define BIT_6_7     0x00c0
#define BIT_7_11    0x0F80
#define BIT_8_10    0x0700
#define BIT_9_13    0x3E00
#define BIT_12_15   0xF000

#define BIT_16_20   0x001F0000
#define BIT_21_25   0x03E00000
#define BIT_26_27   0x0C000000

//-------------------------------------------------------------------------
// MDI Control register opcode definitions
//-------------------------------------------------------------------------
#define MDI_WRITE               1               // Phy Write
#define MDI_READ                2               // Phy read

//-------------------------------------------------------------------------
// PHY 100 MDI Register/Bit Definitions
//-------------------------------------------------------------------------
// MDI register set
#define MDI_CONTROL_REG             0x00        // MDI control register
#define MDI_STATUS_REG              0x01        // MDI Status regiser
#define PHY_ID_REG_1                0x02        // Phy indentification reg (word 1)
#define PHY_ID_REG_2                0x03        // Phy indentification reg (word 2)
#define AUTO_NEG_ADVERTISE_REG      0x04        // Auto-negotiation advertisement
#define AUTO_NEG_LINK_PARTNER_REG   0x05        // Auto-negotiation link partner ability
#define AUTO_NEG_EXPANSION_REG      0x06        // Auto-negotiation expansion
#define AUTO_NEG_NEXT_PAGE_REG      0x07        // Auto-negotiation next page transmit
#define EXTENDED_REG_0              0x10        // Extended reg 0 (Phy 100 modes)
#define EXTENDED_REG_1              0x14        // Extended reg 1 (Phy 100 error indications)
#define NSC_CONG_CONTROL_REG        0x17        // National (TX) congestion control
#define NSC_SPEED_IND_REG           0x19        // National (TX) speed indication

// MDI Control register bit definitions
#define MDI_CR_COLL_TEST_ENABLE     BIT_7       // Collision test enable
#define MDI_CR_FULL_HALF            BIT_8       // FDX =1, half duplex =0
#define MDI_CR_RESTART_AUTO_NEG     BIT_9       // Restart auto negotiation
#define MDI_CR_ISOLATE              BIT_10      // Isolate PHY from MII
#define MDI_CR_POWER_DOWN           BIT_11      // Power down
#define MDI_CR_AUTO_SELECT          BIT_12      // Auto speed select enable
#define MDI_CR_10_100               BIT_13      // 0 = 10Mbs, 1 = 100Mbs
#define MDI_CR_LOOPBACK             BIT_14      // 0 = normal, 1 = loopback
#define MDI_CR_RESET                BIT_15      // 0 = normal, 1 = PHY reset

// MDI Status register bit definitions
#define MDI_SR_EXT_REG_CAPABLE      BIT_0       // Extended register capabilities
#define MDI_SR_JABBER_DETECT        BIT_1       // Jabber detected
#define MDI_SR_LINK_STATUS          BIT_2       // Link Status -- 1 = link
#define MDI_SR_AUTO_SELECT_CAPABLE  BIT_3       // Auto speed select capable
#define MDI_SR_REMOTE_FAULT_DETECT  BIT_4       // Remote fault detect
#define MDI_SR_AUTO_NEG_COMPLETE    BIT_5       // Auto negotiation complete
#define MDI_SR_10T_HALF_DPX         BIT_11      // 10BaseT Half Duplex capable
#define MDI_SR_10T_FULL_DPX         BIT_12      // 10BaseT full duplex capable
#define MDI_SR_TX_HALF_DPX          BIT_13      // TX Half Duplex capable
#define MDI_SR_TX_FULL_DPX          BIT_14      // TX full duplex capable
#define MDI_SR_T4_CAPABLE           BIT_15      // T4 capable

// Auto-Negotiation advertisement register bit definitions
#define NWAY_AD_SELCTOR_FIELD       BIT_0_4     // identifies supported protocol
#define NWAY_AD_ABILITY             BIT_5_12    // technologies that are supported
#define NWAY_AD_10T_HALF_DPX        BIT_5       // 10BaseT Half Duplex capable
#define NWAY_AD_10T_FULL_DPX        BIT_6       // 10BaseT full duplex capable
#define NWAY_AD_TX_HALF_DPX         BIT_7       // TX Half Duplex capable
#define NWAY_AD_TX_FULL_DPX         BIT_8       // TX full duplex capable
#define NWAY_AD_T4_CAPABLE          BIT_9       // T4 capable
#define NWAY_AD_REMOTE_FAULT        BIT_13      // indicates local remote fault
#define NWAY_AD_RESERVED            BIT_14      // reserved
#define NWAY_AD_NEXT_PAGE           BIT_15      // Next page (not supported)

// Auto-Negotiation link partner ability register bit definitions
#define NWAY_LP_SELCTOR_FIELD       BIT_0_4     // identifies supported protocol
#define NWAY_LP_ABILITY             BIT_5_9     // technologies that are supported
#define NWAY_LP_REMOTE_FAULT        BIT_13      // indicates partner remote fault
#define NWAY_LP_ACKNOWLEDGE         BIT_14      // acknowledge
#define NWAY_LP_NEXT_PAGE           BIT_15      // Next page (not supported)

// Auto-Negotiation expansion register bit definitions
#define NWAY_EX_LP_NWAY             BIT_0       // link partner is NWAY
#define NWAY_EX_PAGE_RECEIVED       BIT_1       // link code word received
#define NWAY_EX_NEXT_PAGE_ABLE      BIT_2       // local is next page able
#define NWAY_EX_LP_NEXT_PAGE_ABLE   BIT_3       // partner is next page able
#define NWAY_EX_PARALLEL_DET_FLT    BIT_4       // parallel detection fault
#define NWAY_EX_RESERVED            BIT_5_15    // reserved


// PHY 100 Extended Register 0 bit definitions
#define PHY_100_ER0_FDX_INDIC       BIT_0       // 1 = FDX, 0 = half duplex
#define PHY_100_ER0_SPEED_INDIC     BIT_1       // 1 = 100mbs, 0= 10mbs
#define PHY_100_ER0_WAKE_UP         BIT_2       // Wake up DAC
#define PHY_100_ER0_RESERVED        BIT_3_4     // Reserved
#define PHY_100_ER0_REV_CNTRL       BIT_5_7     // Revsion control (A step = 000)
#define PHY_100_ER0_FORCE_FAIL      BIT_8       // Force Fail is enabled
#define PHY_100_ER0_TEST            BIT_9_13    // Revsion control (A step = 000)
#define PHY_100_ER0_LINKDIS         BIT_14      // Link integrity test is disabled
#define PHY_100_ER0_JABDIS          BIT_15      // Jabber function is disabled


// PHY 100 Extended Register 1 bit definitions
#define PHY_100_ER1_RESERVED        BIT_0_8     // Reserved
#define PHY_100_ER1_CH2_DET_ERR     BIT_9       // Channel 2 EOF detection error
#define PHY_100_ER1_MANCH_CODE_ERR  BIT_10      // Manchester code error
#define PHY_100_ER1_EOP_ERR         BIT_11      // EOP error
#define PHY_100_ER1_BAD_CODE_ERR    BIT_12      // bad code error
#define PHY_100_ER1_INV_CODE_ERR    BIT_13      // invalid code error
#define PHY_100_ER1_DC_BAL_ERR      BIT_14      // DC balance error
#define PHY_100_ER1_PAIR_SKEW_ERR   BIT_15      // Pair skew error

// National Semiconductor TX phy congestion control register bit definitions
#define NSC_TX_CONG_TXREADY         BIT_10      // Makes TxReady an input
#define NSC_TX_CONG_ENABLE          BIT_8       // Enables congestion control
#define NSC_TX_CONG_F_CONNECT       BIT_5       // Enables congestion control

// National Semiconductor TX phy speed indication register bit definitions
#define NSC_TX_SPD_INDC_SPEED       BIT_6       // 0 = 100mb, 1=10mb

//-------------------------------------------------------------------------
// Phy related constants
//-------------------------------------------------------------------------
#define PHY_503                 0
#define PHY_100_A               0x000003E0
#define PHY_100_C               0x035002A8
#define PHY_TX_ID               0x015002A8
#define PHY_NSC_TX              0x5c002000
#define PHY_OTHER               0xFFFF

#define PHY_MODEL_REV_ID_MASK   0xFFF0FFFF
#define PARALLEL_DETECT         0
#define N_WAY                   1

#define RENEGOTIATE_TIME        35 // (3.5 Seconds)

#define CONNECTOR_AUTO          0
#define CONNECTOR_TPE           1
#define CONNECTOR_MII           2

//-------------------------------------------------------------------------

/* The Speedo3 Rx and Tx frame/buffer descriptors. */
#pragma pack(1)
struct CB_Header {      /* A generic descriptor. */
  UINT16 status;    /* Offset 0. */
  UINT16 command;    /* Offset 2. */
  UINT32 link;          /* struct descriptor *  */
};

/* transmit command block structure */
#pragma pack(1)
typedef struct s_TxCB {
  struct CB_Header cb_header;
  UINT32 PhysTBDArrayAddres;  /* address of an array that contains
                physical TBD pointers */
  UINT16 ByteCount;  /* immediate data count = 0 always */
  UINT8 Threshold;
  UINT8 TBDCount;
  UINT8 ImmediateData[TX_BUFFER_SIZE];
  /* following fields are not seen by the 82557 */
  struct TBD {
    UINT32 phys_buf_addr;
    UINT32 buf_len;
    } TBDArray[MAX_XMIT_FRAGMENTS];
  UINT32 PhysArrayAddr;  /* in case the one in the header is lost */
  UINT32 PhysTCBAddress;    /* for this TCB */
  struct s_TxCB *NextTCBVirtualLinkPtr;
  struct s_TxCB *PrevTCBVirtualLinkPtr;
  UINT64 free_data_ptr;  // to be given to the upper layer when this xmit completes1
}TxCB;

/* The Speedo3 Rx and Tx buffer descriptors. */
#pragma pack(1)
typedef struct s_RxFD {          /* Receive frame descriptor. */
  struct CB_Header cb_header;
  UINT32 rx_buf_addr;      /* VOID * */
  UINT16 ActualCount;
  UINT16 RFDSize;
  UINT8 RFDBuffer[RX_BUFFER_SIZE];
  UINT8 forwarded;
  UINT8 junk[3];
}RxFD;

/* Elements of the RxFD.status word. */
#define RX_COMPLETE 0x8000
#define RX_FRAME_OK 0x2000

/* Elements of the dump_statistics block. This block must be lword aligned. */
#pragma pack(1)
struct speedo_stats {
  UINT32 tx_good_frames;
  UINT32 tx_coll16_errs;
  UINT32 tx_late_colls;
  UINT32 tx_underruns;
  UINT32 tx_lost_carrier;
  UINT32 tx_deferred;
  UINT32 tx_one_colls;
  UINT32 tx_multi_colls;
  UINT32 tx_total_colls;
  UINT32 rx_good_frames;
  UINT32 rx_crc_errs;
  UINT32 rx_align_errs;
  UINT32 rx_resource_errs;
  UINT32 rx_overrun_errs;
  UINT32 rx_colls_errs;
  UINT32 rx_runt_errs;
  UINT32 done_marker;
};
#pragma pack()


struct Krn_Mem{
  RxFD rx_ring[RX_BUFFER_COUNT];
  TxCB tx_ring[TX_BUFFER_COUNT];
  struct speedo_stats statistics;
};
#define MEMORY_NEEDED  sizeof(struct Krn_Mem)

/* The parameters for a CmdConfigure operation.
   There are so many options that it would be difficult to document each bit.
   We mostly use the default or recommended settings.
*/

/*
 *--------------------------------------------------------------------------
 * Configuration CB Parameter Bit Definitions
 *--------------------------------------------------------------------------
 */
// - Byte 0  (Default Value = 16h)
#define CFIG_BYTE_COUNT    0x16       // 22 Configuration Bytes

//- Byte 1  (Default Value = 88h)
#define CFIG_TXRX_FIFO_LIMIT  0x88

//- Byte 2  (Default Value = 0)
#define CFIG_ADAPTIVE_IFS    0

//- Byte 3  (Default Value = 0, ALWAYS. This byte is RESERVED)
#define CFIG_RESERVED        0

//- Byte 4  (Default Value = 0. Default implies that Rx DMA cannot be
//-          preempted).
#define CFIG_RXDMA_BYTE_COUNT      0

//- Byte 5  (Default Value = 80h. Default implies that Tx DMA cannot be
//-          preempted. However, setting these counters is enabled.)
#define CFIG_DMBC_ENABLE            0x80

//- Byte 6  (Default Value = 33h. Late SCB enabled, No TNO interrupts,
//-          CNA interrupts and do not save bad frames.)
#define CFIG_LATE_SCB               1  // BIT 0
#define CFIG_TNO_INTERRUPT          0x4  // BIT 2
#define CFIG_CI_INTERRUPT           0x8  // BIT 3
#define CFIG_SAVE_BAD_FRAMES        0x80  // BIT_7

//- Byte 7  (Default Value = 7h. Discard short frames automatically and
//-          attempt upto 3 retries on transmit.)
#define CFIG_DISCARD_SHORTRX         0x00001
#define CFIG_URUN_RETRY              BIT_1 OR BIT_2

//- Byte 8  (Default Value = 1. Enable MII mode.)
#define CFIG_503_MII              BIT_0

//- Byte 9  (Default Value = 0, ALWAYS)

//- Byte 10 (Default Value = 2Eh)
#define CFIG_NSAI                   BIT_3
#define CFIG_PREAMBLE_LENGTH         BIT_5      ;- Bit 5-4  = 1-0
#define CFIG_NO_LOOPBACK             0
#define CFIG_INTERNAL_LOOPBACK       BIT_6
#define CFIG_EXT_LOOPBACK            BIT_7
#define CFIG_EXT_PIN_LOOPBACK        BIT_6 OR BIT_7

//- Byte 11 (Default Value = 0)
#define CFIG_LINEAR_PRIORITY         0

//- Byte 12 (Default Value = 60h)
#define CFIG_LPRIORITY_MODE          0
#define CFIG_IFS                     6          ;- 6 * 16 = 96

//- Byte 13 (Default Value = 0, ALWAYS)

//- Byte 14 (Default Value = 0F2h, ALWAYS)

//- Byte 15 (Default Value = E8h)
#define CFIG_PROMISCUOUS_MODE        BIT_0
#define CFIG_BROADCAST_DISABLE       BIT_1
#define CFIG_CRS_CDT                 BIT_7

//- Byte 16 (Default Value = 0, ALWAYS)

//- Byte 17 (Default Value = 40h, ALWAYS)

//- Byte 18 (Default Value = F2h)
#define CFIG_STRIPPING               BIT_0
#define CFIG_PADDING                 BIT_1
#define CFIG_RX_CRC_TRANSFER         BIT_2

//- Byte 19 (Default Value = 80h)
#define CFIG_FORCE_FDX               BIT_6
#define CFIG_FDX_PIN_ENABLE          BIT_7

//- Byte 20 (Default Value = 3Fh)
#define CFIG_MULTI_IA                BIT_6

//- Byte 21 (Default Value = 05)
#define CFIG_MC_ALL                  BIT_3

/*-----------------------------------------------------------------------*/
#define D102_REVID 0x0b

#define HALF_DUPLEX 1
#define FULL_DUPLEX 2

typedef struct s_data_instance {

  UINT16 State;  // stopped, started or initialized
  UINT16 Bus;
  UINT8 Device;
  UINT8 Function;
  UINT16 VendorID;
  UINT16 DeviceID;
  UINT16 RevID;
  UINT16 SubVendorID;
  UINT16 SubSystemID;

  UINT8 PermNodeAddress[PXE_MAC_LENGTH];
  UINT8 CurrentNodeAddress[PXE_MAC_LENGTH];
  UINT8 BroadcastNodeAddress[PXE_MAC_LENGTH];
  UINT32 Config[MAX_PCI_CONFIG_LEN];
  UINT32 NVData[MAX_EEPROM_LEN];

  UINT32 ioaddr;
  UINT32 flash_addr;

  UINT16 LinkSpeed;     // actual link speed setting
  UINT16 LinkSpeedReq;  // requested (forced) link speed
  UINT8  DuplexReq;     // requested duplex
  UINT8  Duplex;        // Duplex set
  UINT8  CableDetect;   // 1 to detect and 0 not to detect the cable
  UINT8  LoopBack;

  UINT16 TxBufCnt;
  UINT16 TxBufSize;
  UINT16 RxBufCnt;
  UINT16 RxBufSize;
  UINT32 RxTotals;
  UINT32 TxTotals;

  UINT16 int_mask;
  UINT16 Int_Status;
  UINT16 PhyRecord[2];  // primary and secondary PHY record registers from eeprom
  UINT8  PhyAddress;
  UINT8  int_num;
  UINT16 NVData_Len;
  UINT32 MemoryLength;

  RxFD *rx_ring;  // array of rx buffers
  TxCB *tx_ring;  // array of tx buffers
  struct speedo_stats *statistics;
  TxCB *FreeTxHeadPtr;
  TxCB *FreeTxTailPtr;
  RxFD *RFDTailPtr;

  UINT64 rx_phy_addr;  // physical addresses
  UINT64 tx_phy_addr;
  UINT64 stat_phy_addr;
  UINT64 MemoryPtr;
  UINT64 Mapped_MemoryPtr;

  UINT64 xmit_done[TX_BUFFER_COUNT << 1]; // circular buffer
  UINT16 xmit_done_head;  // index into the xmit_done array
  UINT16 xmit_done_tail;  // where are we filling now (index into xmit_done)
  UINT16 cur_rx_ind;  // current RX Q head index
  UINT16 FreeCBCount;

  BOOLEAN in_interrupt;
  BOOLEAN in_transmit;
  BOOLEAN Receive_Started;
  UINT8 Rx_Filter;
  UINT8 VersionFlag;  // UNDI30 or UNDI31??
  UINT8 rsvd[3];

  struct mc{
    UINT16 reserved [3]; // padding for this structure to make it 8 byte aligned
    UINT16 list_len;
    UINT8 mc_list[MAX_MCAST_ADDRESS_CNT][PXE_MAC_LENGTH]; // 8*32 is the size
  } mcast_list;

  UINT64 Unique_ID;

  EFI_PCI_IO_PROTOCOL   *Io_Function;
  //
  // Original PCI attributes
  //
  UINT64                OriginalPciAttributes;

  VOID (*Delay_30)(UINTN);  // call back routine
  VOID (*Virt2Phys_30)(UINT64 virtual_addr, UINT64 physical_ptr);  // call back routine
  VOID (*Block_30)(UINT32 enable);  // call back routine
  VOID (*Mem_Io_30)(UINT8 read_write, UINT8 len, UINT64 port, UINT64 buf_addr);
  VOID (*Delay)(UINT64, UINTN);  // call back routine
  VOID (*Virt2Phys)(UINT64 unq_id, UINT64 virtual_addr, UINT64 physical_ptr);  // call back routine
  VOID (*Block)(UINT64 unq_id, UINT32 enable);  // call back routine
  VOID (*Mem_Io)(UINT64 unq_id, UINT8 read_write, UINT8 len, UINT64 port,
          UINT64 buf_addr);
  VOID (*Map_Mem)(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,
                   UINT32 Direction, UINT64 mapped_addr);
  VOID (*UnMap_Mem)(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,
            UINT32 Direction, UINT64 mapped_addr);
  VOID (*Sync_Mem)(UINT64 unq_id, UINT64 virtual_addr,
            UINT32 size, UINT32 Direction, UINT64 mapped_addr);
} NIC_DATA_INSTANCE;

#pragma pack(1)
struct MC_CB_STRUCT{
  UINT16 count;
  UINT8 m_list[MAX_MCAST_ADDRESS_CNT][ETHER_MAC_ADDR_LEN];
};
#pragma pack()

#define FOUR_GIGABYTE (UINT64)0x100000000ULL

#endif

