15b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* -*- Mode:C; c-basic-offset:4; -*- */ 25b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 35b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Definitions for SiS ethernet controllers including 7014/7016 and 900 45b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * References: 55b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * SiS 7016 Fast Ethernet PCI Bus 10/100 Mbps LAN Controller with OnNow Support, 65b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * preliminary Rev. 1.0 Jan. 14, 1998 75b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * SiS 900 Fast Ethernet PCI Bus 10/100 Mbps LAN Single Chip with OnNow Support, 85b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * preliminary Rev. 1.0 Nov. 10, 1998 95b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * SiS 7014 Single Chip 100BASE-TX/10BASE-T Physical Layer Solution, 105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * preliminary Rev. 1.0 Jan. 18, 1998 115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * http://www.sis.com.tw/support/databook.htm 125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* MAC operationl registers of SiS 7016 and SiS 900 ethernet controller */ 155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The I/O extent, SiS 900 needs 256 bytes of io address */ 165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SIS900_TOTAL_SIZE 0x100 175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Symbolic offsets to registers. */ 195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_registers { 205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project cr=0x0, /* Command Register */ 215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project cfg=0x4, /* Configuration Register */ 225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project mear=0x8, /* EEPROM Access Register */ 235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ptscr=0xc, /* PCI Test Control Register */ 245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project isr=0x10, /* Interrupt Status Register */ 255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project imr=0x14, /* Interrupt Mask Register */ 265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ier=0x18, /* Interrupt Enable Register */ 275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project epar=0x18, /* Enhanced PHY Access Register */ 285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project txdp=0x20, /* Transmit Descriptor Pointer Register */ 295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project txcfg=0x24, /* Transmit Configuration Register */ 305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project rxdp=0x30, /* Receive Descriptor Pointer Register */ 315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project rxcfg=0x34, /* Receive Configuration Register */ 325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project flctrl=0x38, /* Flow Control Register */ 335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project rxlen=0x3c, /* Receive Packet Length Register */ 345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project rfcr=0x48, /* Receive Filter Control Register */ 355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project rfdr=0x4C, /* Receive Filter Data Register */ 365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project pmctrl=0xB0, /* Power Management Control Register */ 375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project pmer=0xB4 /* Power Management Wake-up Event Register */ 385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Symbolic names for bits in various registers */ 415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_command_register_bits { 425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RESET = 0x00000100, 435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project SWI = 0x00000080, 445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxRESET = 0x00000020, 455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxRESET = 0x00000010, 465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxDIS = 0x00000008, 475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxENA = 0x00000004, 485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxDIS = 0x00000002, 495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxENA = 0x00000001 505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_configuration_register_bits { 535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project DESCRFMT = 0x00000100, /* 7016 specific */ 545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project REQALG = 0x00000080, 555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project SB = 0x00000040, 565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project POW = 0x00000020, 575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EXD = 0x00000010, 585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project PESEL = 0x00000008, 595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project LPM = 0x00000004, 605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project BEM = 0x00000001 615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_eeprom_access_reigster_bits { 645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MDC = 0x00000040, 655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MDDIR = 0x00000020, 665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MDIO = 0x00000010, /* 7016 specific */ 675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EECS = 0x00000008, 685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EECLK = 0x00000004, 695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEDO = 0x00000002, 705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEDI = 0x00000001 715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_interrupt_register_bits { 745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project WKEVT = 0x10000000, 755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxPAUSEEND = 0x08000000, 765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxPAUSE = 0x04000000, 775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxRCMP = 0x02000000, 785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxRCMP = 0x01000000, 795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project DPERR = 0x00800000, 805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project SSERR = 0x00400000, 815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RMABT = 0x00200000, 825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RTABT = 0x00100000, 835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxSOVR = 0x00010000, 845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project HIBERR = 0x00008000, 855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project SWINT = 0x00001000, 865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MIBINT = 0x00000800, 875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxURN = 0x00000400, 885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxIDLE = 0x00000200, 895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxERR = 0x00000100, 905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxDESC = 0x00000080, 915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxOK = 0x00000040, 925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxORN = 0x00000020, 935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxIDLE = 0x00000010, 945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxEARLY = 0x00000008, 955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxERR = 0x00000004, 965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxDESC = 0x00000002, 975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxOK = 0x00000001 985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_interrupt_enable_reigster_bits { 1015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project IE = 0x00000001 1025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* maximum dma burst fro transmission and receive*/ 1055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MAX_DMA_RANGE 7 /* actually 0 means MAXIMUM !! */ 1065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TxMXDMA_shift 20 1075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RxMXDMA_shift 20 1085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_DMA_BURST 0 1095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_DMA_BURST 0 1105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* transmit FIFO threshholds */ 1125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_FILL_THRESH 16 /* 1/4 FIFO size */ 1135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TxFILLT_shift 8 1145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TxDRNT_shift 0 1155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TxDRNT_100 48 /* 3/4 FIFO size */ 1165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TxDRNT_10 16 /* 1/2 FIFO size */ 1175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_transmit_config_register_bits { 1195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxCSI = 0x80000000, 1205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxHBI = 0x40000000, 1215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxMLB = 0x20000000, 1225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxATP = 0x10000000, 1235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxIFG = 0x0C000000, 1245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxFILLT = 0x00003F00, 1255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TxDRNT = 0x0000003F 1265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* recevie FIFO thresholds */ 1295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RxDRNT_shift 1 1305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RxDRNT_100 16 /* 1/2 FIFO size */ 1315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RxDRNT_10 24 /* 3/4 FIFO size */ 1325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_reveive_config_register_bits { 1345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxAEP = 0x80000000, 1355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxARP = 0x40000000, 1365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxATX = 0x10000000, 1375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxAJAB = 0x08000000, 1385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RxDRNT = 0x0000007F 1395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RFAA_shift 28 1425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RFADDR_shift 16 1435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_receive_filter_control_register_bits { 1455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RFEN = 0x80000000, 1465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RFAAB = 0x40000000, 1475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RFAAM = 0x20000000, 1485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RFAAP = 0x10000000, 1495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RFPromiscuous = (RFAAB|RFAAM|RFAAP) 1505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_reveive_filter_data_mask { 1535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RFDAT = 0x0000FFFF 1545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* EEPROM Addresses */ 1575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_eeprom_address { 1585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEPROMSignature = 0x00, 1595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEPROMVendorID = 0x02, 1605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEPROMDeviceID = 0x03, 1615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEPROMMACAddr = 0x08, 1625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEPROMChecksum = 0x0b 1635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The EEPROM commands include the alway-set leading bit. Refer to NM93Cxx datasheet */ 1665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_eeprom_command { 1675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEread = 0x0180, 1685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEwrite = 0x0140, 1695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEerase = 0x01C0, 1705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEwriteEnable = 0x0130, 1715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEwriteDisable = 0x0100, 1725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEeraseAll = 0x0120, 1735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEwriteAll = 0x0110, 1745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EEaddrMask = 0x013F, 1755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Manamgement Data I/O (mdio) frame */ 1785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MIIread 0x6000 1795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MIIwrite 0x5002 1805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MIIpmdShift 7 1815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MIIregShift 2 1825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MIIcmdLen 16 1835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MIIcmdShift 16 1845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Buffer Descriptor Status*/ 1865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_buffer_status { 1875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project OWN = 0x80000000, 1885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MORE = 0x40000000, 1895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project INTR = 0x20000000, 1905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project SUPCRC = 0x10000000, 1915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project INCCRC = 0x10000000, 1925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project OK = 0x08000000, 1935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project DSIZE = 0x00000FFF 1945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Status for TX Buffers */ 1975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_tx_buffer_status { 1985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ABORT = 0x04000000, 1995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project UNDERRUN = 0x02000000, 2005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project NOCARRIER = 0x01000000, 2015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project DEFERD = 0x00800000, 2025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EXCDEFER = 0x00400000, 2035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project OWCOLL = 0x00200000, 2045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project EXCCOLL = 0x00100000, 2055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project COLCNT = 0x000F0000 2065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 2075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_rx_bufer_status { 2095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project OVERRUN = 0x02000000, 2105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project DEST = 0x00800000, 2115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project BCAST = 0x01800000, 2125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MCAST = 0x01000000, 2135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project UNIMATCH = 0x00800000, 2145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project TOOLONG = 0x00400000, 2155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RUNT = 0x00200000, 2165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RXISERR = 0x00100000, 2175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project CRCERR = 0x00080000, 2185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project FAERR = 0x00040000, 2195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project LOOPBK = 0x00020000, 2205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project RXCOL = 0x00010000 2215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 2225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* MII register offsets */ 2245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum mii_registers { 2255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CONTROL = 0x0000, 2265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STATUS = 0x0001, 2275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_PHY_ID0 = 0x0002, 2285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_PHY_ID1 = 0x0003, 2295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_ANADV = 0x0004, 2305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_ANLPAR = 0x0005, 2315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_ANEXT = 0x0006 2325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 2335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* mii registers specific to SiS 900 */ 2355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis_mii_registers { 2365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CONFIG1 = 0x0010, 2375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CONFIG2 = 0x0011, 2385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSOUT = 0x0012, 2395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_MASK = 0x0013 2405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 2415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* mii registers specific to AMD 79C901 */ 2435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum amd_mii_registers { 2445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STATUS_SUMMARY = 0x0018 2455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 2465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* mii registers specific to ICS 1893 */ 2485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum ics_mii_registers { 2495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_EXTCTRL = 0x0010, MII_QPDSTS = 0x0011, MII_10BTOP = 0x0012, 2505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_EXTCTRL2 = 0x0013 2515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 2525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* MII Control register bit definitions. */ 2565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum mii_control_register_bits { 2575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CNTL_FDX = 0x0100, 2585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CNTL_RST_AUTO = 0x0200, 2595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CNTL_ISOLATE = 0x0400, 2605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CNTL_PWRDWN = 0x0800, 2615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CNTL_AUTO = 0x1000, 2625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CNTL_SPEED = 0x2000, 2635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CNTL_LPBK = 0x4000, 2645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_CNTL_RESET = 0x8000 2655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 2665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* MII Status register bit */ 2685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum mii_status_register_bits { 2695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_EXT = 0x0001, 2705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_JAB = 0x0002, 2715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_LINK = 0x0004, 2725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_CAN_AUTO = 0x0008, 2735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_FAULT = 0x0010, 2745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_AUTO_DONE = 0x0020, 2755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_CAN_T = 0x0800, 2765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_CAN_T_FDX = 0x1000, 2775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_CAN_TX = 0x2000, 2785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_CAN_TX_FDX = 0x4000, 2795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STAT_CAN_T4 = 0x8000 2805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 2815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MII_ID1_OUI_LO 0xFC00 /* low bits of OUI mask */ 2835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MII_ID1_MODEL 0x03F0 /* model number */ 2845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MII_ID1_REV 0x000F /* model number */ 2855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* MII NWAY Register Bits ... 2875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project valid for the ANAR (Auto-Negotiation Advertisement) and 2885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ANLPAR (Auto-Negotiation Link Partner) registers */ 2895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum mii_nway_register_bits { 2905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_NODE_SEL = 0x001f, 2915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_CSMA_CD = 0x0001, 2925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_T = 0x0020, 2935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_T_FDX = 0x0040, 2945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_TX = 0x0080, 2955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_TX_FDX = 0x0100, 2965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_T4 = 0x0200, 2975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_PAUSE = 0x0400, 2985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_RF = 0x2000, 2995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_ACK = 0x4000, 3005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_NWAY_NP = 0x8000 3015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 3025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum mii_stsout_register_bits { 3045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSOUT_LINK_FAIL = 0x4000, 3055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSOUT_SPD = 0x0080, 3065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSOUT_DPLX = 0x0040 3075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 3085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum mii_stsics_register_bits { 3105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSICS_SPD = 0x8000, MII_STSICS_DPLX = 0x4000, 3115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSICS_LINKSTS = 0x0001 3125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 3135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum mii_stssum_register_bits { 3155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSSUM_LINK = 0x0008, 3165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSSUM_DPLX = 0x0004, 3175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSSUM_AUTO = 0x0002, 3185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MII_STSSUM_SPD = 0x0001 3195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 3205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis900_revision_id { 3225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project SIS630A_900_REV = 0x80, SIS630E_900_REV = 0x81, 3235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project SIS630S_900_REV = 0x82, SIS630EA1_900_REV = 0x83 3245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 3255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenum sis630_revision_id { 3275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project SIS630A0 = 0x00, SIS630A1 = 0x01, 3285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project SIS630B0 = 0x10, SIS630B1 = 0x11 3295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 3305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FDX_CAPABLE_DUPLEX_UNKNOWN 0 3325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FDX_CAPABLE_HALF_SELECTED 1 3335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FDX_CAPABLE_FULL_SELECTED 2 3345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define HW_SPEED_UNCONFIG 0 3365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define HW_SPEED_HOME 1 3375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define HW_SPEED_10_MBPS 10 3385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define HW_SPEED_100_MBPS 100 3395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define HW_SPEED_DEFAULT (HW_SPEED_100_MBPS) 3405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CRC_SIZE 4 3425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MAC_HEADER_SIZE 14 3435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_BUF_SIZE 1536 3455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_BUF_SIZE 1536 3465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define NUM_RX_DESC 4 /* Number of Rx descriptor registers. */ 3485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef unsigned char u8; 3505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef signed char s8; 3515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef unsigned short u16; 3525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef signed short s16; 3535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef unsigned int u32; 3545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef signed int s32; 3555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Time in ticks before concluding the transmitter is hung. */ 3575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_TIMEOUT (4*TICKS_PER_SEC) 3585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef struct _BufferDesc { 3605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project u32 link; 3615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project volatile u32 cmdsts; 3625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project u32 bufptr; 3635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project} BufferDesc; 364