Home | History | Annotate | Line # | Download | only in ic
      1  1.4  bjh21 /* $NetBSD: seeq8005reg.h,v 1.4 2001/04/01 21:15:15 bjh21 Exp $ */
      2  1.1  bjh21 
      3  1.1  bjh21 /*
      4  1.3  bjh21  * Copyright (c) 1995-1998 Mark Brinicombe
      5  1.1  bjh21  * All rights reserved.
      6  1.1  bjh21  *
      7  1.1  bjh21  * Redistribution and use in source and binary forms, with or without
      8  1.1  bjh21  * modification, are permitted provided that the following conditions
      9  1.1  bjh21  * are met:
     10  1.1  bjh21  * 1. Redistributions of source code must retain the above copyright
     11  1.1  bjh21  *    notice, this list of conditions and the following disclaimer.
     12  1.1  bjh21  * 2. Redistributions in binary form must reproduce the above copyright
     13  1.1  bjh21  *    notice, this list of conditions and the following disclaimer in the
     14  1.1  bjh21  *    documentation and/or other materials provided with the distribution.
     15  1.1  bjh21  * 3. All advertising materials mentioning features or use of this software
     16  1.1  bjh21  *    must display the following acknowledgement:
     17  1.1  bjh21  *	This product includes software developed by Mark Brinicombe.
     18  1.1  bjh21  * 4. The name of the company nor the name of the author may be used to
     19  1.1  bjh21  *    endorse or promote products derived from this software without specific
     20  1.1  bjh21  *    prior written permission.
     21  1.1  bjh21  *
     22  1.1  bjh21  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
     23  1.1  bjh21  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     24  1.1  bjh21  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     25  1.1  bjh21  * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
     26  1.1  bjh21  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     27  1.1  bjh21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     28  1.1  bjh21  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     29  1.1  bjh21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     30  1.1  bjh21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     31  1.1  bjh21  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     32  1.1  bjh21  * SUCH DAMAGE.
     33  1.1  bjh21  */
     34  1.1  bjh21 /*
     35  1.4  bjh21  * SEEQ 8005/80C04/80C04A registers
     36  1.1  bjh21  *
     37  1.1  bjh21  * Note that A0 is only used to distinguish halves of 16-bit registers in
     38  1.1  bjh21  * 8-bit mode.
     39  1.1  bjh21  */
     40  1.1  bjh21 
     41  1.3  bjh21 #define SEEQ_COMMAND		0x0
     42  1.3  bjh21 #define SEEQ_STATUS		0x0
     43  1.3  bjh21 #define SEEQ_CONFIG1		0x2
     44  1.3  bjh21 #define SEEQ_CONFIG2		0x4
     45  1.3  bjh21 #define SEEQ_RX_END		0x6
     46  1.3  bjh21 #define SEEQ_BUFWIN		0x8
     47  1.3  bjh21 #define SEEQ_RX_PTR		0xa
     48  1.3  bjh21 #define SEEQ_TX_PTR		0xc
     49  1.3  bjh21 #define SEEQ_DMA_ADDR		0xe
     50  1.3  bjh21 
     51  1.3  bjh21 #define	SEEQ_CMD_DMA_INTEN	(1 << 0)	/* 8005 */
     52  1.3  bjh21 #define	SEEQ_CMD_TEST_INTEN	(1 << 0)	/* 8004 */
     53  1.3  bjh21 #define	SEEQ_CMD_RX_INTEN	(1 << 1)
     54  1.3  bjh21 #define	SEEQ_CMD_TX_INTEN	(1 << 2)
     55  1.3  bjh21 #define	SEEQ_CMD_BW_INTEN	(1 << 3)
     56  1.3  bjh21 #define	SEEQ_CMD_DMA_INTACK	(1 << 4)	/* 8005 */
     57  1.3  bjh21 #define	SEEQ_CMD_TEST_INTACK	(1 << 4)	/* 8004 */
     58  1.3  bjh21 #define	SEEQ_CMD_RX_INTACK	(1 << 5)
     59  1.3  bjh21 #define	SEEQ_CMD_TX_INTACK	(1 << 6)
     60  1.3  bjh21 #define	SEEQ_CMD_BW_INTACK	(1 << 7)
     61  1.3  bjh21 #define	SEEQ_CMD_DMA_ON		(1 << 8)	/* 8005 */
     62  1.3  bjh21 #define	SEEQ_CMD_TEST_INT1	(1 << 8)	/* 8004 */
     63  1.3  bjh21 #define	SEEQ_CMD_RX_ON		(1 << 9)
     64  1.3  bjh21 #define	SEEQ_CMD_TX_ON		(1 << 10)
     65  1.3  bjh21 #define	SEEQ_CMD_DMA_OFF	(1 << 11)	/* 8005 */
     66  1.3  bjh21 #define	SEEQ_CMD_TEST_INT2	(1 << 11)	/* 8004 */
     67  1.3  bjh21 #define	SEEQ_CMD_RX_OFF		(1 << 12)
     68  1.3  bjh21 #define	SEEQ_CMD_TX_OFF		(1 << 13)
     69  1.3  bjh21 #define	SEEQ_CMD_FIFO_READ	(1 << 14)
     70  1.3  bjh21 #define	SEEQ_CMD_FIFO_WRITE	(1 << 15)
     71  1.3  bjh21 
     72  1.3  bjh21 #define	SEEQ_STATUS_DMA_INT	(1 << 4)	/* 8005 */
     73  1.3  bjh21 #define	SEEQ_STATUS_TEST_INT	(1 << 4)	/* 8004 */
     74  1.3  bjh21 #define	SEEQ_STATUS_RX_INT	(1 << 5)
     75  1.3  bjh21 #define	SEEQ_STATUS_TX_INT	(1 << 6)
     76  1.3  bjh21 #define	SEEQ_STATUS_BW_INT	(1 << 7)
     77  1.3  bjh21 #define	SEEQ_STATUS_DMA_ON	(1 << 8)	/* 8005 */
     78  1.3  bjh21 #define	SEEQ_STATUS_TEST_ON	(1 << 8)	/* 8004 */
     79  1.3  bjh21 #define	SEEQ_STATUS_RX_ON	(1 << 9)
     80  1.3  bjh21 #define	SEEQ_STATUS_TX_ON	(1 << 10)
     81  1.3  bjh21 #define	SEEQ_STATUS_TX_NOFAIL	(1 << 12)	/* 8004 */
     82  1.3  bjh21 #define	SEEQ_STATUS_FIFO_FULL	(1 << 13)
     83  1.3  bjh21 #define	SEEQ_STATUS_FIFO_EMPTY	(1 << 14)
     84  1.3  bjh21 #define	SEEQ_STATUS_FIFO_DIR	(1 << 15)
     85  1.3  bjh21 #define	SEEQ_STATUS_FIFO_READ	(1 << 15)
     86  1.3  bjh21 
     87  1.3  bjh21 #define	SEEQ_BUFCODE_STATION_ADDR0	0x00
     88  1.4  bjh21 #define	SEEQ_BUFCODE_STATION_ADDR1	0x01	/* 8005 and 80C04A */
     89  1.3  bjh21 #define	SEEQ_BUFCODE_STATION_ADDR2	0x02	/* 8005 */
     90  1.4  bjh21 #define SEEQ_BUFCODE_CRCERR_COUNT      	0x02	/* 80C04A */
     91  1.3  bjh21 #define	SEEQ_BUFCODE_STATION_ADDR3	0x03	/* 8005 */
     92  1.4  bjh21 #define SEEQ_BUFCODE_DRIBBLE_COUNT	0x03	/* 80C04A */
     93  1.3  bjh21 #define	SEEQ_BUFCODE_STATION_ADDR4	0x04	/* 8005 */
     94  1.4  bjh21 #define SEEQ_BUFCODE_OVERSIZE_COUNT	0x04	/* 80C04A */
     95  1.3  bjh21 #define	SEEQ_BUFCODE_STATION_ADDR5	0x05	/* 8005 */
     96  1.3  bjh21 #define	SEEQ_BUFCODE_ADDRESS_PROM	0x06
     97  1.3  bjh21 #define	SEEQ_BUFCODE_TX_EAP		0x07
     98  1.3  bjh21 #define	SEEQ_BUFCODE_LOCAL_MEM		0x08
     99  1.3  bjh21 #define	SEEQ_BUFCODE_INT_VECTOR		0x09	/* 8005 */
    100  1.4  bjh21 #define SEEQ_BUFCODE_LC_DFR_COUNT	0x09	/* 80C04A */
    101  1.3  bjh21 #define	SEEQ_BUFCODE_TX_COLLS		0x0b	/* 8004 */
    102  1.3  bjh21 #define	SEEQ_BUFCODE_CONFIG3		0x0c	/* 8004 */
    103  1.3  bjh21 #define	SEEQ_BUFCODE_PRODUCTID		0x0d	/* 8004 */
    104  1.3  bjh21 #define	SEEQ_BUFCODE_TESTENABLE		0x0e	/* 8004 */
    105  1.3  bjh21 #define	SEEQ_BUFCODE_MULTICAST		0x0f	/* 8004 */
    106  1.3  bjh21 
    107  1.3  bjh21 #define	SEEQ_CFG1_DMA_BURST_CONT	(0 << 4)	/* 8005 */
    108  1.3  bjh21 #define	SEEQ_CFG1_DMA_BURST_800		(1 << 4)	/* 8005 */
    109  1.3  bjh21 #define	SEEQ_CFG1_DMA_BURST_1600	(2 << 4)	/* 8005 */
    110  1.3  bjh21 #define	SEEQ_CFG1_DMA_BURST_3200	(3 << 4)	/* 8005 */
    111  1.3  bjh21 #define	SEEQ_CFG1_DMA_BSIZE_1		(0 << 6)	/* 8005 */
    112  1.3  bjh21 #define	SEEQ_CFG1_DMA_BSIZE_4		(1 << 6)	/* 8005 */
    113  1.3  bjh21 #define	SEEQ_CFG1_DMA_BSIZE_8		(2 << 6)	/* 8005 */
    114  1.3  bjh21 #define	SEEQ_CFG1_DMA_BSIZE_16		(3 << 6)	/* 8005 */
    115  1.3  bjh21 
    116  1.3  bjh21 #define	SEEQ_CFG1_STATION_ADDR0		(1 << 8)	/* 8005 */
    117  1.3  bjh21 #define	SEEQ_CFG1_STATION_ADDR1		(1 << 9)	/* 8005 */
    118  1.3  bjh21 #define	SEEQ_CFG1_STATION_ADDR2		(1 << 10)	/* 8005 */
    119  1.3  bjh21 #define	SEEQ_CFG1_STATION_ADDR3		(1 << 11)	/* 8005 */
    120  1.3  bjh21 #define	SEEQ_CFG1_STATION_ADDR4		(1 << 12)	/* 8005 */
    121  1.3  bjh21 #define	SEEQ_CFG1_STATION_ADDR5		(1 << 13)	/* 8005 */
    122  1.3  bjh21 #define	SEEQ_CFG1_SPECIFIC		((0 << 15) | (0 << 14))
    123  1.3  bjh21 #define	SEEQ_CFG1_BROADCAST		((0 << 15) | (1 << 14))
    124  1.3  bjh21 #define	SEEQ_CFG1_MULTICAST		((1 << 15) | (0 << 14))
    125  1.3  bjh21 #define	SEEQ_CFG1_PROMISCUOUS		((1 << 15) | (1 << 14))
    126  1.3  bjh21 
    127  1.3  bjh21 #define	SEEQ_CFG2_BYTESWAP		(1 << 0)
    128  1.3  bjh21 #define	SEEQ_CFG2_REA_AUTOUPDATE	(1 << 1)	/* 8004 only */
    129  1.3  bjh21 #define	SEEQ_CFG2_RX_TX_DISABLE		(1 << 2)	/* 8004 only */
    130  1.3  bjh21 #define	SEEQ_CFG2_CRC_ERR_ENABLE	(1 << 3)
    131  1.3  bjh21 #define	SEEQ_CFG2_DRIB_ERR_ENABLE	(1 << 4)
    132  1.3  bjh21 #define	SEEQ_CFG2_PASS_SHORT		(1 << 5)	/* 8005 */
    133  1.3  bjh21 #define	SEEQ_CFG2_PASS_LONGSHORT	(1 << 5)	/* 8004 */
    134  1.3  bjh21 #define	SEEQ_CFG2_SLOT_SELECT		(1 << 6)	/* 8005 only */
    135  1.3  bjh21 #define	SEEQ_CFG2_PREAM_SELECT		(1 << 7)
    136  1.3  bjh21 #define	SEEQ_CFG2_ADDR_LENGTH		(1 << 8)	/* 8005 only */
    137  1.3  bjh21 #define	SEEQ_CFG2_RX_CRC		(1 << 9)
    138  1.3  bjh21 #define	SEEQ_CFG2_NO_TX_CRC		(1 << 10)
    139  1.3  bjh21 #define	SEEQ_CFG2_LOOPBACK		(1 << 11)
    140  1.3  bjh21 #define	SEEQ_CFG2_OUTPUT		(1 << 12)
    141  1.3  bjh21 #define	SEEQ_CFG2_RESET			(1 << 15)
    142  1.3  bjh21 
    143  1.3  bjh21 #define	SEEQ_CFG3_AUTOPAD		(1 << 0)	/* 80C04 */
    144  1.4  bjh21 #define SEEQ_CFG3_SAHASHENABLE		(1 << 1)	/* 80C04A */
    145  1.3  bjh21 #define	SEEQ_CFG3_SQEENABLE		(1 << 2)	/* 80C04 */
    146  1.3  bjh21 #define	SEEQ_CFG3_SLEEP			(1 << 3)	/* 80C04 */
    147  1.4  bjh21 #define	SEEQ_CFG3_READYADVD		(1 << 4)	/* 80C04 only */
    148  1.4  bjh21 #define	SEEQ_CFG3_SECONDADDRENABLE	(1 << 5)	/* 80C04A */
    149  1.3  bjh21 #define	SEEQ_CFG3_GROUPADDR		(1 << 6)	/* 80C04 */
    150  1.3  bjh21 #define	SEEQ_CFG3_NPPBYTE		(1 << 7)	/* 80C04 */
    151  1.3  bjh21 
    152  1.3  bjh21 #define	SEEQ_PRODUCTID_MASK		0xf0
    153  1.3  bjh21 #define	SEEQ_PRODUCTID_8004		0xa0
    154  1.3  bjh21 #define	SEEQ_PRODUCTID_REV_MASK		0x0f
    155  1.4  bjh21 #define SEEQ_PRODUCTID_REV_80C04	0x0f
    156  1.4  bjh21 #define SEEQ_PRODUCTID_REV_80C04A	0x0e
    157  1.3  bjh21 
    158  1.3  bjh21 #define	SEEQ_PKTCMD_TX			(1 << 7)
    159  1.3  bjh21 #define	SEEQ_PKTCMD_RX			(0 << 7)
    160  1.3  bjh21 #define	SEEQ_PKTCMD_CHAIN_CONT		(1 << 6)
    161  1.3  bjh21 #define	SEEQ_PKTCMD_DATA_FOLLOWS	(1 << 5)
    162  1.3  bjh21 
    163  1.3  bjh21 #define	SEEQ_PKTSTAT_DONE		(1 << 7)
    164  1.3  bjh21 
    165  1.3  bjh21 #define	SEEQ_TXSTAT_BABBLE		(1 << 0)
    166  1.3  bjh21 #define	SEEQ_TXSTAT_COLLISION		(1 << 1)
    167  1.3  bjh21 #define	SEEQ_TXSTAT_COLLISION16		(1 << 2)
    168  1.3  bjh21 #define	SEEQ_TXSTAT_COLLISIONS_SHIFT	3		/* SEEQ 8004 */
    169  1.3  bjh21 #define	SEEQ_TXSTAT_COLLISION_MASK	0x0f		/* SEEQ 8004 */
    170  1.4  bjh21 #define SEEQ_TXSTAT_CARRIER_DROPOUT	(1 << 3)	/* SEEQ 80C04A */
    171  1.4  bjh21 #define SEEQ_TXSTAT_OK_BUT_DEFERRED	(1 << 4)	/* SEEQ 80C04A */
    172  1.4  bjh21 #define SEEQ_TXSTAT_OK_BUT_COLLISIONS	(1 << 5)	/* SEEQ 80C04A */
    173  1.4  bjh21 #define SEEQ_TXSTAT_OK_BUT_COLLISION	(1 << 6)	/* SEEQ 80C04A */
    174  1.3  bjh21 
    175  1.3  bjh21 #define	SEEQ_TXCMD_BABBLE_INT		(1 << 0)
    176  1.3  bjh21 #define	SEEQ_TXCMD_COLLISION_INT	(1 << 1)
    177  1.3  bjh21 #define	SEEQ_TXCMD_COLLISION16_INT	(1 << 2)
    178  1.3  bjh21 #define	SEEQ_TXCMD_XMIT_SUCCESS_INT	(1 << 3)
    179  1.3  bjh21 #define	SEEQ_TXCMD_SQE_TEST_INT		(1 << 4)	/* SEEQ 8004 */
    180  1.3  bjh21 
    181  1.3  bjh21 #define	SEEQ_RXSTAT_OVERSIZE		(1 << 0)
    182  1.3  bjh21 #define	SEEQ_RXSTAT_CRC_ERROR		(1 << 1)
    183  1.3  bjh21 #define	SEEQ_RXSTAT_DRIBBLE_ERROR	(1 << 2)
    184  1.3  bjh21 #define	SEEQ_RXSTAT_SHORT_FRAME		(1 << 3)
    185  1.3  bjh21 #define	SEEQ_RXSTAT_ERROR_MASK		0x0f
    186  1.1  bjh21 
    187  1.3  bjh21 #define	SEEQ_MAX_BUFFER_SIZE		0x10000
    188