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