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