15b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 25b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Copyright (c) 1993 Herb Peyerl (hpeyerl@novatel.ca) All rights reserved. 35b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 45b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Redistribution and use in source and binary forms, with or without 55b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * modification, are permitted provided that the following conditions are 65b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * met: 1. Redistributions of source code must retain the above copyright 75b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * notice, this list of conditions and the following disclaimer. 2. The name 85b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * of the author may not be used to endorse or promote products derived from 95b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * this software without specific prior written permission 105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project October 2, 1994 235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project Modified by: Andres Vega Garcia 255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project INRIA - Sophia Antipolis, France 275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project e-mail: avega@sophia.inria.fr 285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project finger: avega@pax.inria.fr 295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Created from if_epreg.h by Fred Gray (fgray@rice.edu) to support the 345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3c590 family. 355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Modified by Shusuke Nisiyama <shu@athena.qe.eng.hokudai.ac.jp> 395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * for etherboot 405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Mar. 14, 2000 415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project*/ 425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Ethernet software status per interface. 455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Some global constants 495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_INIT_RATE 16 525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_INIT_MAX_RATE 64 535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_INIT_LATENCY 64 545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_INIT_EARLY_THRESH 64 555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MIN_RX_EARLY_THRESHF 16 /* not less than ether_header */ 565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MIN_RX_EARLY_THRESHL 4 575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROMSIZE 0x40 595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MAX_EEPROMBUSY 1000 605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_LAST_TAG 0xd7 615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_MAX_BOARDS 16 625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_ID_PORT 0x100 635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * some macros to acces long named fields 665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BASE (eth_nic_base) 685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Commands to read/write EEPROM trough EEPROM command register (Window 0, 715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Offset 0xa) 725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_CMD_RD 0x0080 /* Read: Address required (5 bits) */ 745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_CMD_WR 0x0040 /* Write: Address required (5 bits) */ 755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_CMD_ERASE 0x00c0 /* Erase: Address required (5 bits) */ 765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_CMD_EWEN 0x0030 /* Erase/Write Enable: No data required */ 775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_BUSY (1<<15) 795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Some short functions, worth to let them be a macro 825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/************************************************************************** 855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * * 865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * These define the EEPROM data structure. They are used in the probe 875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * function to verify the existence of the adapter after having sent 885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * the ID_Sequence. 895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * There are others but only the ones we use are defined here. 915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project **************************************************************************/ 935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_NODE_ADDR_0 0x0 /* Word */ 955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_NODE_ADDR_1 0x1 /* Word */ 965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_NODE_ADDR_2 0x2 /* Word */ 975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_PROD_ID 0x3 /* 0x9[0-f]50 */ 985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_MFG_ID 0x7 /* 0x6d50 */ 995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_ADDR_CFG 0x8 /* Base addr */ 1005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_RESOURCE_CFG 0x9 /* IRQ. Bits 12-15 */ 1015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_OEM_ADDR_0 0xa /* Word */ 1025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_OEM_ADDR_1 0xb /* Word */ 1035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_OEM_ADDR_2 0xc /* Word */ 1045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define EEPROM_SOFT_INFO_2 0xf /* Software information 2 */ 1055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define NO_RX_OVN_ANOMALY (1<<5) 1075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/************************************************************************** 1095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * * 1105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * These are the registers for the 3Com 3c509 and their bit patterns when * 1115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * applicable. They have been taken out the the "EtherLink III Parallel * 1125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Tasking EISA and ISA Technical Reference" "Beta Draft 10/30/92" manual * 1135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * from 3com. * 1145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * * 1155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project **************************************************************************/ 1165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_COMMAND 0x0e /* Write. BASE+0x0e is always a 1185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * command reg. */ 1195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_STATUS 0x0e /* Read. BASE+0x0e is always status 1205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * reg. */ 1215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_WINDOW 0x0f /* Read. BASE+0x0f is always window 1225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * reg. */ 1235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 0 registers. Setup. 1255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Write */ 1275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W0_EEPROM_DATA 0x0c 1285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W0_EEPROM_COMMAND 0x0a 1295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W0_RESOURCE_CFG 0x08 1305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W0_ADDRESS_CFG 0x06 1315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W0_CONFIG_CTRL 0x04 1325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* Read */ 1335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W0_PRODUCT_ID 0x02 1345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W0_MFG_ID 0x00 1355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 1 registers. Operating Set. 1395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Write */ 1415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W1_TX_PIO_WR_2 0x02 1425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W1_TX_PIO_WR_1 0x00 1435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Read */ 1445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W1_FREE_TX 0x0c 1455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W1_TX_STATUS 0x0b /* byte */ 1465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W1_TIMER 0x0a /* byte */ 1475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W1_RX_STATUS 0x08 1485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W1_RX_PIO_RD_2 0x02 1495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W1_RX_PIO_RD_1 0x00 1505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 2 registers. Station Address Setup/Read 1535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Read/Write */ 1555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W2_ADDR_5 0x05 1565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W2_ADDR_4 0x04 1575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W2_ADDR_3 0x03 1585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W2_ADDR_2 0x02 1595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W2_ADDR_1 0x01 1605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W2_ADDR_0 0x00 1615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 3 registers. FIFO Management. 1645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Read */ 1665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W3_INTERNAL_CFG 0x00 1675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W3_RESET_OPT 0x08 1685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W3_FREE_TX 0x0c 1695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W3_FREE_RX 0x0a 1705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 4 registers. Diagnostics. 1735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Read/Write */ 1755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W4_MEDIA_TYPE 0x0a 1765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W4_CTRLR_STATUS 0x08 1775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W4_NET_DIAG 0x06 1785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W4_FIFO_DIAG 0x04 1795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W4_HOST_DIAG 0x02 1805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W4_TX_DIAG 0x00 1815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 5 Registers. Results and Internal status. 1845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Read */ 1865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W5_READ_0_MASK 0x0c 1875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W5_INTR_MASK 0x0a 1885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W5_RX_FILTER 0x08 1895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W5_RX_EARLY_THRESH 0x06 1905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W5_TX_AVAIL_THRESH 0x02 1915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_W5_TX_START_THRESH 0x00 1925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 6 registers. Statistics. 1955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Read/Write */ 1975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_TOTAL_OK 0x0c 1985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_TOTAL_OK 0x0a 1995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_DEFERRALS 0x08 2005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_FRAMES_OK 0x07 2015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_FRAMES_OK 0x06 2025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_OVERRUNS 0x05 2035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_COLLISIONS 0x04 2045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_AFTER_1_COLLISION 0x03 2055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_AFTER_X_COLLISIONS 0x02 2065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_NO_SQE 0x01 2075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_CD_LOST 0x00 2085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/**************************************** 2105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 2115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Register definitions. 2125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 2135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ****************************************/ 2145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 2165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Command register. All windows. 2175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 2185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 16 bit register. 2195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 15-11: 5-bit code for command to be executed. 2205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 10-0: 11-bit arg if any. For commands with no args; 2215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * this can be set to anything. 2225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 2235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define GLOBAL_RESET (unsigned short) 0x0000 /* Wait at least 1ms 2245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * after issuing */ 2255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define WINDOW_SELECT (unsigned short) (0x1<<11) 2265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define START_TRANSCEIVER (unsigned short) (0x2<<11) /* Read ADDR_CFG reg to 2275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * determine whether 2285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * this is needed. If 2295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * so; wait 800 uSec 2305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * before using trans- 2315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * ceiver. */ 2325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_DISABLE (unsigned short) (0x3<<11) /* state disabled on 2335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * power-up */ 2345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_ENABLE (unsigned short) (0x4<<11) 2355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_RESET (unsigned short) (0x5<<11) 2365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_DISCARD_TOP_PACK (unsigned short) (0x8<<11) 2375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_ENABLE (unsigned short) (0x9<<11) 2385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_DISABLE (unsigned short) (0xa<<11) 2395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_RESET (unsigned short) (0xb<<11) 2405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define REQ_INTR (unsigned short) (0xc<<11) 2415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 2425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * The following C_* acknowledge the various interrupts. Some of them don't 2435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * do anything. See the manual. 2445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 2455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACK_INTR (unsigned short) (0x6800) 2465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define C_INTR_LATCH (unsigned short) (ACK_INTR|0x1) 2475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define C_CARD_FAILURE (unsigned short) (ACK_INTR|0x2) 2485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define C_TX_COMPLETE (unsigned short) (ACK_INTR|0x4) 2495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define C_TX_AVAIL (unsigned short) (ACK_INTR|0x8) 2505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define C_RX_COMPLETE (unsigned short) (ACK_INTR|0x10) 2515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define C_RX_EARLY (unsigned short) (ACK_INTR|0x20) 2525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define C_INT_RQD (unsigned short) (ACK_INTR|0x40) 2535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define C_UPD_STATS (unsigned short) (ACK_INTR|0x80) 2545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SET_INTR_MASK (unsigned short) (0xe<<11) 2555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SET_RD_0_MASK (unsigned short) (0xf<<11) 2565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SET_RX_FILTER (unsigned short) (0x10<<11) 2575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define FIL_INDIVIDUAL (unsigned short) (0x1) 2585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define FIL_MULTICAST (unsigned short) (0x02) 2595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define FIL_BRDCST (unsigned short) (0x04) 2605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define FIL_PROMISC (unsigned short) (0x08) 2615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SET_RX_EARLY_THRESH (unsigned short) (0x11<<11) 2625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SET_TX_AVAIL_THRESH (unsigned short) (0x12<<11) 2635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SET_TX_START_THRESH (unsigned short) (0x13<<11) 2645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STATS_ENABLE (unsigned short) (0x15<<11) 2655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STATS_DISABLE (unsigned short) (0x16<<11) 2665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STOP_TRANSCEIVER (unsigned short) (0x17<<11) 2675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 2695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Status register. All windows. 2705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 2715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 15-13: Window number(0-7). 2725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 12: Command_in_progress. 2735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 11: reserved. 2745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 10: reserved. 2755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 9: reserved. 2765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 8: reserved. 2775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 7: Update Statistics. 2785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 6: Interrupt Requested. 2795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 5: RX Early. 2805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 4: RX Complete. 2815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3: TX Available. 2825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 2: TX Complete. 2835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1: Adapter Failure. 2845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 0: Interrupt Latch. 2855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 2865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define S_INTR_LATCH (unsigned short) (0x1) 2875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define S_CARD_FAILURE (unsigned short) (0x2) 2885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define S_TX_COMPLETE (unsigned short) (0x4) 2895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define S_TX_AVAIL (unsigned short) (0x8) 2905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define S_RX_COMPLETE (unsigned short) (0x10) 2915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define S_RX_EARLY (unsigned short) (0x20) 2925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define S_INT_RQD (unsigned short) (0x40) 2935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define S_UPD_STATS (unsigned short) (0x80) 2945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define S_COMMAND_IN_PROGRESS (unsigned short) (0x1000) 2955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_BUSY_WAIT while (inw(BASE + VX_STATUS) & S_COMMAND_IN_PROGRESS) 2975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Address Config. Register. 2995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 0/Port 06 3005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 3015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACF_CONNECTOR_BITS 14 3035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACF_CONNECTOR_UTP 0 3045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACF_CONNECTOR_AUI 1 3055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACF_CONNECTOR_BNC 3 3065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define INTERNAL_CONNECTOR_BITS 20 3085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define INTERNAL_CONNECTOR_MASK 0x01700000 3095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 3115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * FIFO Registers. RX Status. 3125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 15: Incomplete or FIFO empty. 3145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 14: 1: Error in RX Packet 0: Incomplete or no error. 3155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 13-11: Type of error. 3165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1000 = Overrun. 3175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1011 = Run Packet Error. 3185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1100 = Alignment Error. 3195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1101 = CRC Error. 3205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1001 = Oversize Packet Error (>1514 bytes) 3215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 0010 = Dribble Bits. 3225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * (all other error codes, no errors.) 3235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 10-0: RX Bytes (0-1514) 3255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 3265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ERR_INCOMPLETE (unsigned short) (0x8000) 3275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ERR_RX (unsigned short) (0x4000) 3285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ERR_MASK (unsigned short) (0x7800) 3295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ERR_OVERRUN (unsigned short) (0x4000) 3305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ERR_RUNT (unsigned short) (0x5800) 3315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ERR_ALIGNMENT (unsigned short) (0x6000) 3325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ERR_CRC (unsigned short) (0x6800) 3335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ERR_OVERSIZE (unsigned short) (0x4800) 3345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ERR_DRIBBLE (unsigned short) (0x1000) 3355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 3375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * TX Status. 3385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Reports the transmit status of a completed transmission. Writing this 3405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * register pops the transmit completion stack. 3415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 1/Port 0x0b. 3435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 7: Complete 3455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 6: Interrupt on successful transmission requested. 3465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 5: Jabber Error (TP Only, TX Reset required. ) 3475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 4: Underrun (TX Reset required. ) 3485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3: Maximum Collisions. 3495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 2: TX Status Overflow. 3505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 1-0: Undefined. 3515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 3535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TXS_COMPLETE 0x80 3545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TXS_INTR_REQ 0x40 3555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TXS_JABBER 0x20 3565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TXS_UNDERRUN 0x10 3575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TXS_MAX_COLLISION 0x8 3585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TXS_STATUS_OVERFLOW 0x4 3595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RS_AUI (1<<5) 3615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RS_BNC (1<<4) 3625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RS_UTP (1<<3) 3635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RS_T4 (1<<0) 3645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RS_TX (1<<1) 3655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RS_FX (1<<2) 3665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RS_MII (1<<6) 3675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 3705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * FIFO Status (Window 4) 3715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Supports FIFO diagnostics 3735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Window 4/Port 0x04.1 3755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 3765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 15: 1=RX receiving (RO). Set when a packet is being received 3775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * into the RX FIFO. 3785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 14: Reserved 3795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 13: 1=RX underrun (RO). Generates Adapter Failure interrupt. 3805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Requires RX Reset or Global Reset command to recover. 3815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * It is generated when you read past the end of a packet - 3825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * reading past what has been received so far will give bad 3835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * data. 3845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 12: 1=RX status overrun (RO). Set when there are already 8 3855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * packets in the RX FIFO. While this bit is set, no additional 3865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * packets are received. Requires no action on the part of 3875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * the host. The condition is cleared once a packet has been 3885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * read out of the RX FIFO. 3895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 11: 1=RX overrun (RO). Set when the RX FIFO is full (there 3905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * may not be an overrun packet yet). While this bit is set, 3915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * no additional packets will be received (some additional 3925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * bytes can still be pending between the wire and the RX 3935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * FIFO). Requires no action on the part of the host. The 3945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * condition is cleared once a few bytes have been read out 3955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * from the RX FIFO. 3965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 10: 1=TX overrun (RO). Generates adapter failure interrupt. 3975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Requires TX Reset or Global Reset command to recover. 3985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Disables Transmitter. 3995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 9-8: Unassigned. 4005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 7-0: Built in self test bits for the RX and TX FIFO's. 4015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 4025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FIFOS_RX_RECEIVING (unsigned short) 0x8000 4035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FIFOS_RX_UNDERRUN (unsigned short) 0x2000 4045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FIFOS_RX_STATUS_OVERRUN (unsigned short) 0x1000 4055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FIFOS_RX_OVERRUN (unsigned short) 0x0800 4065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FIFOS_TX_OVERRUN (unsigned short) 0x0400 4075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 4095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Misc defines for various things. 4105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 4115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TAG_ADAPTER 0xd0 4125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACTIVATE_ADAPTER_TO_CONFIG 0xff 4135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ENABLE_DRQ_IRQ 0x0001 4145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MFG_ID 0x506d /* `TCM' */ 4155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PROD_ID 0x5090 4165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define GO_WINDOW(x) outw(WINDOW_SELECT|(x),BASE+VX_COMMAND) 4175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define JABBER_GUARD_ENABLE 0x40 4185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINKBEAT_ENABLE 0x80 4195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ENABLE_UTP (JABBER_GUARD_ENABLE | LINKBEAT_ENABLE) 4205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISABLE_UTP 0x0 4215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_BYTES_MASK (unsigned short) (0x07ff) 4225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_ERROR 0x4000 4235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_INCOMPLETE 0x8000 4245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_INDICATE 1<<15 4255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define is_eeprom_busy(b) (inw((b)+VX_W0_EEPROM_COMMAND)&EEPROM_BUSY) 4265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_IOSIZE 0x20 4285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VX_CONNECTORS 8 4305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 4325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Local variables: 4335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * c-basic-offset: 8 4345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * End: 4355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 436