/* -*- Mode:C; c-basic-offset:4; -*- */

/* Definitions for SiS ethernet controllers including 7014/7016 and 900 
 * References:
 *   SiS 7016 Fast Ethernet PCI Bus 10/100 Mbps LAN Controller with OnNow Support,
 *      preliminary Rev. 1.0 Jan. 14, 1998
 *   SiS 900 Fast Ethernet PCI Bus 10/100 Mbps LAN Single Chip with OnNow Support,
 *      preliminary Rev. 1.0 Nov. 10, 1998
 *   SiS 7014 Single Chip 100BASE-TX/10BASE-T Physical Layer Solution,
 *      preliminary Rev. 1.0 Jan. 18, 1998
 *   http://www.sis.com.tw/support/databook.htm
 */

/* MAC operationl registers of SiS 7016 and SiS 900 ethernet controller */
/* The I/O extent, SiS 900 needs 256 bytes of io address */
#define SIS900_TOTAL_SIZE 0x100

/* Symbolic offsets to registers. */
enum sis900_registers {
    cr=0x0,                 /* Command Register */
    cfg=0x4,                /* Configuration Register */
    mear=0x8,               /* EEPROM Access Register */
    ptscr=0xc,              /* PCI Test Control Register */
    isr=0x10,               /* Interrupt Status Register */
    imr=0x14,               /* Interrupt Mask Register */
    ier=0x18,               /* Interrupt Enable Register */
    epar=0x18,              /* Enhanced PHY Access Register */
    txdp=0x20,              /* Transmit Descriptor Pointer Register */
    txcfg=0x24,             /* Transmit Configuration Register */
    rxdp=0x30,              /* Receive Descriptor Pointer Register */
    rxcfg=0x34,             /* Receive Configuration Register */
    flctrl=0x38,            /* Flow Control Register */
    rxlen=0x3c,             /* Receive Packet Length Register */
    rfcr=0x48,              /* Receive Filter Control Register */
    rfdr=0x4C,              /* Receive Filter Data Register */
    pmctrl=0xB0,            /* Power Management Control Register */
    pmer=0xB4               /* Power Management Wake-up Event Register */
};

/* Symbolic names for bits in various registers */
enum sis900_command_register_bits {
    RESET   = 0x00000100, 
    SWI     = 0x00000080, 
    RxRESET = 0x00000020,
    TxRESET = 0x00000010, 
    RxDIS   = 0x00000008, 
    RxENA   = 0x00000004,
    TxDIS   = 0x00000002, 
    TxENA   = 0x00000001
};

enum sis900_configuration_register_bits {
    DESCRFMT = 0x00000100, /* 7016 specific */
    REQALG   = 0x00000080, 
    SB       = 0x00000040, 
    POW      = 0x00000020, 
    EXD      = 0x00000010, 
    PESEL    = 0x00000008, 
    LPM      = 0x00000004, 
    BEM      = 0x00000001
};

enum sis900_eeprom_access_reigster_bits {
    MDC   = 0x00000040, 
    MDDIR = 0x00000020, 
    MDIO  = 0x00000010, /* 7016 specific */ 
    EECS  = 0x00000008, 
    EECLK = 0x00000004, 
    EEDO  = 0x00000002,
    EEDI  = 0x00000001
};

enum sis900_interrupt_register_bits {
    WKEVT      = 0x10000000, 
    TxPAUSEEND = 0x08000000,
    TxPAUSE    = 0x04000000,
    TxRCMP     = 0x02000000,
    RxRCMP     = 0x01000000,
    DPERR      = 0x00800000,
    SSERR      = 0x00400000,
    RMABT      = 0x00200000,
    RTABT      = 0x00100000,
    RxSOVR     = 0x00010000, 
    HIBERR     = 0x00008000, 
    SWINT      = 0x00001000,
    MIBINT     = 0x00000800, 
    TxURN      = 0x00000400,
    TxIDLE     = 0x00000200,
    TxERR      = 0x00000100,
    TxDESC     = 0x00000080,
    TxOK       = 0x00000040,
    RxORN      = 0x00000020, 
    RxIDLE     = 0x00000010,
    RxEARLY    = 0x00000008,
    RxERR      = 0x00000004,
    RxDESC     = 0x00000002,
    RxOK       = 0x00000001
};

enum sis900_interrupt_enable_reigster_bits {
    IE = 0x00000001
};

/* maximum dma burst fro transmission and receive*/
#define MAX_DMA_RANGE   7       /* actually 0 means MAXIMUM !! */
#define TxMXDMA_shift   20
#define RxMXDMA_shift   20
#define TX_DMA_BURST    0
#define RX_DMA_BURST    0

/* transmit FIFO threshholds */
#define TX_FILL_THRESH  16      /* 1/4 FIFO size */
#define TxFILLT_shift   8
#define TxDRNT_shift    0
#define TxDRNT_100      48      /* 3/4 FIFO size */
#define TxDRNT_10       16      /* 1/2 FIFO size */

enum sis900_transmit_config_register_bits {
    TxCSI   = 0x80000000,
    TxHBI   = 0x40000000,
    TxMLB   = 0x20000000,
    TxATP   = 0x10000000,
    TxIFG   = 0x0C000000,
    TxFILLT = 0x00003F00,
    TxDRNT  = 0x0000003F
};

/* recevie FIFO thresholds */
#define RxDRNT_shift     1
#define RxDRNT_100      16      /* 1/2 FIFO size */
#define RxDRNT_10       24      /* 3/4 FIFO size */

enum sis900_reveive_config_register_bits {
    RxAEP  = 0x80000000, 
    RxARP  = 0x40000000, 
    RxATX  = 0x10000000,
    RxAJAB = 0x08000000, 
    RxDRNT = 0x0000007F
};

#define RFAA_shift      28
#define RFADDR_shift    16

enum sis900_receive_filter_control_register_bits {
    RFEN  = 0x80000000, 
    RFAAB = 0x40000000, 
    RFAAM = 0x20000000,
    RFAAP = 0x10000000, 
    RFPromiscuous = (RFAAB|RFAAM|RFAAP)
};

enum sis900_reveive_filter_data_mask {
    RFDAT =  0x0000FFFF
};

/* EEPROM Addresses */
enum sis900_eeprom_address {
    EEPROMSignature = 0x00, 
    EEPROMVendorID  = 0x02, 
    EEPROMDeviceID  = 0x03,
    EEPROMMACAddr   = 0x08, 
    EEPROMChecksum  = 0x0b
};

/* The EEPROM commands include the alway-set leading bit. Refer to NM93Cxx datasheet */
enum sis900_eeprom_command {
    EEread          = 0x0180, 
    EEwrite         = 0x0140, 
    EEerase         = 0x01C0, 
    EEwriteEnable   = 0x0130,
    EEwriteDisable  = 0x0100,
    EEeraseAll      = 0x0120,
    EEwriteAll      = 0x0110, 
    EEaddrMask      = 0x013F, 
};

/* Manamgement Data I/O (mdio) frame */
#define MIIread         0x6000
#define MIIwrite        0x5002
#define MIIpmdShift     7
#define MIIregShift     2
#define MIIcmdLen       16
#define MIIcmdShift     16

/* Buffer Descriptor Status*/
enum sis900_buffer_status {
    OWN    = 0x80000000, 
    MORE   = 0x40000000, 
    INTR   = 0x20000000,
    SUPCRC = 0x10000000, 
    INCCRC = 0x10000000,
    OK     = 0x08000000, 
    DSIZE  = 0x00000FFF
};

/* Status for TX Buffers */
enum sis900_tx_buffer_status {
    ABORT      = 0x04000000,
    UNDERRUN   = 0x02000000, 
    NOCARRIER  = 0x01000000,
    DEFERD     = 0x00800000, 
    EXCDEFER   = 0x00400000, 
    OWCOLL     = 0x00200000,
    EXCCOLL    = 0x00100000, 
    COLCNT     = 0x000F0000
};

enum sis900_rx_bufer_status {
    OVERRUN    = 0x02000000,
    DEST       = 0x00800000,
    BCAST      = 0x01800000,
    MCAST      = 0x01000000,
    UNIMATCH   = 0x00800000,
    TOOLONG    = 0x00400000,
    RUNT       = 0x00200000,
    RXISERR    = 0x00100000,
    CRCERR     = 0x00080000,
    FAERR      = 0x00040000,
    LOOPBK     = 0x00020000,
    RXCOL      = 0x00010000
};

/* MII register offsets */
enum mii_registers {
    MII_CONTROL = 0x0000, 
    MII_STATUS  = 0x0001,
    MII_PHY_ID0 = 0x0002,
    MII_PHY_ID1 = 0x0003,
    MII_ANADV   = 0x0004,
    MII_ANLPAR  = 0x0005,
    MII_ANEXT   = 0x0006
};

/* mii registers specific to SiS 900 */
enum sis_mii_registers {
    MII_CONFIG1 = 0x0010,
    MII_CONFIG2 = 0x0011,
    MII_STSOUT  = 0x0012,
    MII_MASK    = 0x0013
};

/* mii registers specific to AMD 79C901 */
enum amd_mii_registers {
    MII_STATUS_SUMMARY = 0x0018
};

/* mii registers specific to ICS 1893 */
enum ics_mii_registers {
	MII_EXTCTRL  = 0x0010, MII_QPDSTS = 0x0011, MII_10BTOP = 0x0012,
	MII_EXTCTRL2 = 0x0013
};



/* MII Control register bit definitions. */
enum mii_control_register_bits {
    MII_CNTL_FDX      = 0x0100,
    MII_CNTL_RST_AUTO = 0x0200, 
    MII_CNTL_ISOLATE  = 0x0400,
    MII_CNTL_PWRDWN   = 0x0800,
    MII_CNTL_AUTO     = 0x1000,
    MII_CNTL_SPEED    = 0x2000,
    MII_CNTL_LPBK     = 0x4000,
    MII_CNTL_RESET    = 0x8000
};

/* MII Status register bit  */
enum mii_status_register_bits {
    MII_STAT_EXT        = 0x0001,
    MII_STAT_JAB        = 0x0002, 
    MII_STAT_LINK       = 0x0004,
    MII_STAT_CAN_AUTO   = 0x0008, 
    MII_STAT_FAULT      = 0x0010,
    MII_STAT_AUTO_DONE  = 0x0020,
    MII_STAT_CAN_T      = 0x0800, 
    MII_STAT_CAN_T_FDX  = 0x1000,
    MII_STAT_CAN_TX     = 0x2000, 
    MII_STAT_CAN_TX_FDX = 0x4000,
    MII_STAT_CAN_T4     = 0x8000
};

#define         MII_ID1_OUI_LO          0xFC00  /* low bits of OUI mask */
#define         MII_ID1_MODEL           0x03F0  /* model number */
#define         MII_ID1_REV             0x000F  /* model number */

/* MII NWAY Register Bits ...
   valid for the ANAR (Auto-Negotiation Advertisement) and
   ANLPAR (Auto-Negotiation Link Partner) registers */
enum mii_nway_register_bits {
    MII_NWAY_NODE_SEL = 0x001f,
    MII_NWAY_CSMA_CD  = 0x0001,
    MII_NWAY_T        = 0x0020,
    MII_NWAY_T_FDX    = 0x0040,
    MII_NWAY_TX       = 0x0080,
    MII_NWAY_TX_FDX   = 0x0100,
    MII_NWAY_T4       = 0x0200,
    MII_NWAY_PAUSE    = 0x0400,
    MII_NWAY_RF       = 0x2000,
    MII_NWAY_ACK      = 0x4000,
    MII_NWAY_NP       = 0x8000
};

enum mii_stsout_register_bits {
    MII_STSOUT_LINK_FAIL = 0x4000,
    MII_STSOUT_SPD       = 0x0080,
    MII_STSOUT_DPLX      = 0x0040
};

enum mii_stsics_register_bits {
	MII_STSICS_SPD  = 0x8000, MII_STSICS_DPLX = 0x4000,
	MII_STSICS_LINKSTS = 0x0001
};

enum mii_stssum_register_bits {
    MII_STSSUM_LINK = 0x0008,
    MII_STSSUM_DPLX = 0x0004,
    MII_STSSUM_AUTO = 0x0002,
    MII_STSSUM_SPD  = 0x0001
};

enum sis900_revision_id {
	SIS630A_900_REV = 0x80,		SIS630E_900_REV = 0x81,
	SIS630S_900_REV = 0x82,		SIS630EA1_900_REV = 0x83
};

enum sis630_revision_id {
	SIS630A0    = 0x00, SIS630A1      = 0x01,
	SIS630B0    = 0x10, SIS630B1      = 0x11
};

#define FDX_CAPABLE_DUPLEX_UNKNOWN      0
#define FDX_CAPABLE_HALF_SELECTED       1
#define FDX_CAPABLE_FULL_SELECTED       2

#define HW_SPEED_UNCONFIG               0
#define HW_SPEED_HOME                   1
#define HW_SPEED_10_MBPS                10
#define HW_SPEED_100_MBPS               100
#define HW_SPEED_DEFAULT                (HW_SPEED_100_MBPS)

#define CRC_SIZE        4
#define MAC_HEADER_SIZE 14

#define TX_BUF_SIZE     1536
#define RX_BUF_SIZE     1536

#define NUM_RX_DESC     4              /* Number of Rx descriptor registers. */

typedef unsigned char  u8;
typedef   signed char  s8;
typedef unsigned short u16;
typedef   signed short s16;
typedef unsigned int   u32;
typedef   signed int   s32;

/* Time in ticks before concluding the transmitter is hung. */
#define TX_TIMEOUT       (4*TICKS_PER_SEC)

typedef struct _BufferDesc {
    u32              link;
    volatile u32     cmdsts;
    u32              bufptr;
} BufferDesc;
