if_sipreg.h revision 1.13 1 1.13 cube /* $NetBSD: if_sipreg.h,v 1.13 2003/12/03 21:58:49 cube Exp $ */
2 1.6 thorpej
3 1.6 thorpej /*-
4 1.6 thorpej * Copyright (c) 2001 The NetBSD Foundation, Inc.
5 1.6 thorpej * All rights reserved.
6 1.6 thorpej *
7 1.6 thorpej * This code is derived from software contributed to The NetBSD Foundation
8 1.6 thorpej * by Jason R. Thorpe.
9 1.6 thorpej *
10 1.6 thorpej * Redistribution and use in source and binary forms, with or without
11 1.6 thorpej * modification, are permitted provided that the following conditions
12 1.6 thorpej * are met:
13 1.6 thorpej * 1. Redistributions of source code must retain the above copyright
14 1.6 thorpej * notice, this list of conditions and the following disclaimer.
15 1.6 thorpej * 2. Redistributions in binary form must reproduce the above copyright
16 1.6 thorpej * notice, this list of conditions and the following disclaimer in the
17 1.6 thorpej * documentation and/or other materials provided with the distribution.
18 1.6 thorpej * 3. All advertising materials mentioning features or use of this software
19 1.6 thorpej * must display the following acknowledgement:
20 1.6 thorpej * This product includes software developed by the NetBSD
21 1.6 thorpej * Foundation, Inc. and its contributors.
22 1.6 thorpej * 4. Neither the name of The NetBSD Foundation nor the names of its
23 1.6 thorpej * contributors may be used to endorse or promote products derived
24 1.6 thorpej * from this software without specific prior written permission.
25 1.6 thorpej *
26 1.6 thorpej * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27 1.6 thorpej * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28 1.6 thorpej * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 1.6 thorpej * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30 1.6 thorpej * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 1.6 thorpej * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 1.6 thorpej * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 1.6 thorpej * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 1.6 thorpej * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 1.6 thorpej * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 1.6 thorpej * POSSIBILITY OF SUCH DAMAGE.
37 1.6 thorpej */
38 1.1 thorpej
39 1.1 thorpej /*-
40 1.1 thorpej * Copyright (c) 1999 Network Computer, Inc.
41 1.1 thorpej * All rights reserved.
42 1.1 thorpej *
43 1.1 thorpej * Redistribution and use in source and binary forms, with or without
44 1.1 thorpej * modification, are permitted provided that the following conditions
45 1.1 thorpej * are met:
46 1.1 thorpej * 1. Redistributions of source code must retain the above copyright
47 1.1 thorpej * notice, this list of conditions and the following disclaimer.
48 1.1 thorpej * 2. Redistributions in binary form must reproduce the above copyright
49 1.1 thorpej * notice, this list of conditions and the following disclaimer in the
50 1.1 thorpej * documentation and/or other materials provided with the distribution.
51 1.1 thorpej * 3. Neither the name of Network Computer, Inc. nor the names of its
52 1.1 thorpej * contributors may be used to endorse or promote products derived
53 1.1 thorpej * from this software without specific prior written permission.
54 1.1 thorpej *
55 1.1 thorpej * THIS SOFTWARE IS PROVIDED BY NETWORK COMPUTER, INC. AND CONTRIBUTORS
56 1.1 thorpej * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
57 1.1 thorpej * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
58 1.1 thorpej * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
59 1.1 thorpej * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
60 1.1 thorpej * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
61 1.1 thorpej * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
62 1.1 thorpej * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
63 1.1 thorpej * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
64 1.1 thorpej * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
65 1.1 thorpej * POSSIBILITY OF SUCH DAMAGE.
66 1.1 thorpej */
67 1.1 thorpej
68 1.1 thorpej #ifndef _DEV_PCI_IF_SIPREG_H_
69 1.1 thorpej #define _DEV_PCI_IF_SIPREG_H_
70 1.1 thorpej
71 1.1 thorpej /*
72 1.3 thorpej * Register description for the Silicon Integrated Systems SiS 900,
73 1.6 thorpej * SiS 7016, National Semiconductor DP83815 10/100, and National
74 1.6 thorpej * Semiconduction DP83820 10/100/1000 PCI Ethernet controller.
75 1.1 thorpej *
76 1.1 thorpej * Written by Jason R. Thorpe for Network Computer, Inc.
77 1.1 thorpej */
78 1.1 thorpej
79 1.1 thorpej /*
80 1.1 thorpej * Transmit FIFO size. Used to compute the transmit drain threshold.
81 1.1 thorpej *
82 1.1 thorpej * The transmit FIFO is arranged as a 512 32-bit memory array.
83 1.1 thorpej */
84 1.1 thorpej #define SIP_TXFIFO_SIZE (512 * 4)
85 1.1 thorpej
86 1.1 thorpej /*
87 1.1 thorpej * The SiS900 uses a single descriptor format for both transmit
88 1.1 thorpej * and receive descriptor chains.
89 1.6 thorpej *
90 1.6 thorpej * Note the DP83820 can use 64-bit DMA addresses for link and bufptr.
91 1.6 thorpej * However, we do not yet support that.
92 1.6 thorpej *
93 1.6 thorpej * For transmit, buffers need not be aligned. For receive, buffers
94 1.6 thorpej * must be aligned to 4-byte (8-byte on DP83820) boundaries.
95 1.1 thorpej */
96 1.1 thorpej struct sip_desc {
97 1.6 thorpej #ifdef DP83820
98 1.6 thorpej u_int32_t sipd_link; /* link to next descriptor */
99 1.6 thorpej u_int32_t sipd_bufptr; /* pointer to DMA segment */
100 1.6 thorpej u_int32_t sipd_cmdsts; /* command/status word */
101 1.6 thorpej u_int32_t sipd_extsts; /* extended status */
102 1.6 thorpej #else
103 1.1 thorpej u_int32_t sipd_link; /* link to next descriptor */
104 1.1 thorpej u_int32_t sipd_cmdsts; /* command/status word */
105 1.1 thorpej u_int32_t sipd_bufptr; /* pointer to DMA segment */
106 1.6 thorpej #endif /* DP83820 */
107 1.1 thorpej };
108 1.1 thorpej
109 1.1 thorpej /*
110 1.1 thorpej * CMDSTS bits common to transmit and receive.
111 1.1 thorpej */
112 1.1 thorpej #define CMDSTS_OWN 0x80000000 /* owned by consumer */
113 1.1 thorpej #define CMDSTS_MORE 0x40000000 /* more descriptors */
114 1.1 thorpej #define CMDSTS_INTR 0x20000000 /* interrupt when ownership changes */
115 1.1 thorpej #define CMDSTS_SUPCRC 0x10000000 /* suppress CRC */
116 1.1 thorpej #define CMDSTS_OK 0x08000000 /* packet ok */
117 1.6 thorpej #ifdef DP83820
118 1.6 thorpej #define CMDSTS_SIZE_MASK 0x0000ffff /* packet size */
119 1.6 thorpej #else
120 1.1 thorpej #define CMDSTS_SIZE_MASK 0x000007ff /* packet size */
121 1.6 thorpej #endif /* DP83820 */
122 1.1 thorpej
123 1.1 thorpej #define CMDSTS_SIZE(x) ((x) & CMDSTS_SIZE_MASK)
124 1.1 thorpej
125 1.1 thorpej /*
126 1.1 thorpej * CMDSTS bits for transmit.
127 1.1 thorpej */
128 1.1 thorpej #define CMDSTS_Tx_TXA 0x04000000 /* transmit abort */
129 1.1 thorpej #define CMDSTS_Tx_TFU 0x02000000 /* transmit FIFO underrun */
130 1.1 thorpej #define CMDSTS_Tx_CRS 0x01000000 /* carrier sense lost */
131 1.1 thorpej #define CMDSTS_Tx_TD 0x00800000 /* transmit deferred */
132 1.1 thorpej #define CMDSTS_Tx_ED 0x00400000 /* excessive deferral */
133 1.1 thorpej #define CMDSTS_Tx_OWC 0x00200000 /* out of window collision */
134 1.1 thorpej #define CMDSTS_Tx_EC 0x00100000 /* excessive collisions */
135 1.1 thorpej #define CMDSTS_Tx_CCNT 0x000f0000 /* collision count */
136 1.1 thorpej
137 1.1 thorpej #define CMDSTS_COLLISIONS(x) (((x) & CMDSTS_Tx_CCNT) >> 16)
138 1.1 thorpej
139 1.1 thorpej /*
140 1.1 thorpej * CMDSTS bits for receive.
141 1.1 thorpej */
142 1.1 thorpej #define CMDSTS_Rx_RXA 0x04000000 /* receive abort */
143 1.1 thorpej #define CMDSTS_Rx_RXO 0x02000000 /* receive overrun */
144 1.1 thorpej #define CMDSTS_Rx_DEST 0x01800000 /* destination class */
145 1.1 thorpej #define CMDSTS_Rx_LONG 0x00400000 /* packet too long */
146 1.1 thorpej #define CMDSTS_Rx_RUNT 0x00200000 /* runt packet */
147 1.1 thorpej #define CMDSTS_Rx_ISE 0x00100000 /* invalid symbol error */
148 1.1 thorpej #define CMDSTS_Rx_CRCE 0x00080000 /* CRC error */
149 1.1 thorpej #define CMDSTS_Rx_FAE 0x00040000 /* frame alignment error */
150 1.1 thorpej #define CMDSTS_Rx_LBP 0x00020000 /* loopback packet */
151 1.6 thorpej #ifdef DP83820
152 1.6 thorpej #define CMDSTS_Rx_IRL 0x00010000 /* in-range length error */
153 1.6 thorpej #else
154 1.1 thorpej #define CMDSTS_Rx_COL 0x00010000 /* collision activity */
155 1.6 thorpej #endif /* DP83820 */
156 1.1 thorpej
157 1.1 thorpej #define CMDSTS_Rx_DEST_REJ 0x00000000 /* packet rejected */
158 1.1 thorpej #define CMDSTS_Rx_DEST_STA 0x00800000 /* matched station address */
159 1.1 thorpej #define CMDSTS_Rx_DEST_MUL 0x01000000 /* multicast address */
160 1.1 thorpej #define CMDSTS_Rx_DEST_BRD 0x01800000 /* broadcast address */
161 1.1 thorpej
162 1.6 thorpej #ifdef DP83820
163 1.6 thorpej /*
164 1.6 thorpej * EXTSTS bits.
165 1.6 thorpej */
166 1.6 thorpej #define EXTSTS_Rx_UDPERR 0x00400000 /* UDP checksum error */
167 1.6 thorpej #define EXTSTS_UDPPKT 0x00200000 /* perform UDP checksum */
168 1.6 thorpej #define EXTSTS_Rx_TCPERR 0x00100000 /* TCP checksum error */
169 1.6 thorpej #define EXTSTS_TCPPKT 0x00080000 /* perform TCP checksum */
170 1.6 thorpej #define EXTSTS_Rx_IPERR 0x00040000 /* IP header checksum error */
171 1.6 thorpej #define EXTSTS_IPPKT 0x00020000 /* perform IP header checksum */
172 1.6 thorpej #define EXTSTS_VPKT 0x00010000 /* insert VLAN tag */
173 1.6 thorpej #define EXTSTS_VTCI 0x0000ffff /* VLAN tag control information */
174 1.6 thorpej #endif /* DP83820 */
175 1.6 thorpej
176 1.1 thorpej /*
177 1.1 thorpej * PCI Configuration space registers.
178 1.1 thorpej */
179 1.1 thorpej #define SIP_PCI_CFGIOA (PCI_MAPREG_START + 0x00)
180 1.1 thorpej
181 1.1 thorpej #define SIP_PCI_CFGMA (PCI_MAPREG_START + 0x04)
182 1.1 thorpej
183 1.6 thorpej #ifdef DP83820
184 1.6 thorpej #define SIP_PCI_CFGMA1 (PCI_MAPREG_START + 0x08)
185 1.6 thorpej #endif /* DP83820 */
186 1.6 thorpej
187 1.1 thorpej #define SIP_PCI_CFGEROMA 0x30 /* expansion ROM address */
188 1.1 thorpej
189 1.1 thorpej #define SIP_PCI_CFGPMC 0x40 /* power management cap. */
190 1.1 thorpej
191 1.1 thorpej #define SIP_PCI_CFGPMCSR 0x44 /* power management ctl. */
192 1.1 thorpej
193 1.1 thorpej /*
194 1.1 thorpej * MAC Operation Registers
195 1.1 thorpej */
196 1.1 thorpej #define SIP_CR 0x00 /* command register */
197 1.6 thorpej #ifdef DP83820
198 1.6 thorpej #define CR_RXPRI3 0x00010000 /* Rx priority queue select */
199 1.6 thorpej #define CR_RXPRI2 0x00008000 /* Rx priority queue select */
200 1.6 thorpej #define CR_RXPRI1 0x00004000 /* Rx priority queue select */
201 1.6 thorpej #define CR_RXPRI0 0x00002000 /* Rx priority queue select */
202 1.6 thorpej #define CR_TXPRI3 0x00001000 /* Tx priority queue select */
203 1.6 thorpej #define CR_TXPRI2 0x00000800 /* Tx priority queue select */
204 1.6 thorpej #define CR_TXPRI1 0x00000400 /* Tx priority queue select */
205 1.6 thorpej #define CR_TXPRI0 0x00000200 /* Tx priority queue select */
206 1.6 thorpej #endif /* DP83820 */
207 1.8 thorpej #define CR_RLD 0x00000400 /* reload from NVRAM */
208 1.1 thorpej #define CR_RST 0x00000100 /* software reset */
209 1.1 thorpej #define CR_SWI 0x00000080 /* software interrupt */
210 1.1 thorpej #define CR_RXR 0x00000020 /* receiver reset */
211 1.1 thorpej #define CR_TXR 0x00000010 /* transmit reset */
212 1.1 thorpej #define CR_RXD 0x00000008 /* receiver disable */
213 1.1 thorpej #define CR_RXE 0x00000004 /* receiver enable */
214 1.1 thorpej #define CR_TXD 0x00000002 /* transmit disable */
215 1.1 thorpej #define CR_TXE 0x00000001 /* transmit enable */
216 1.1 thorpej
217 1.1 thorpej #define SIP_CFG 0x04 /* configuration register */
218 1.3 thorpej #define CFG_LNKSTS 0x80000000 /* link status (83815) */
219 1.6 thorpej #ifdef DP83820
220 1.6 thorpej #define CFG_SPEED1000 0x40000000 /* 1000Mb/s input pin */
221 1.6 thorpej #define CFG_SPEED100 0x20000000 /* 100Mb/s input pin */
222 1.6 thorpej #define CFG_DUPSTS 0x10000000 /* full-duplex status */
223 1.6 thorpej #define CFG_TBI_EN 0x01000000 /* ten-bit interface enable */
224 1.6 thorpej #define CFG_MODE_1000 0x00400000 /* 1000Mb/s mode enable */
225 1.6 thorpej #define CFG_PINT_DUP 0x00100000 /* interrupt on PHY DUP change */
226 1.6 thorpej #define CFG_PINT_LNK 0x00080000 /* interrupt on PHY LNK change */
227 1.6 thorpej #define CFG_PINT_SPD 0x00040000 /* interrupt on PHY SPD change */
228 1.6 thorpej #define CFG_TMRTEST 0x00020000 /* timer test mode */
229 1.6 thorpej #define CFG_MRM_DIS 0x00010000 /* MRM disable */
230 1.6 thorpej #define CFG_MWI_DIS 0x00008000 /* MWI disable */
231 1.6 thorpej #define CFG_T64ADDR 0x00004000 /* target 64-bit addressing enable */
232 1.6 thorpej #define CFG_PCI64_DET 0x00002000 /* 64-bit PCI bus detected */
233 1.6 thorpej #define CFG_DATA64_EN 0x00001000 /* 64-bit data enable */
234 1.6 thorpej #define CFG_M64ADDR 0x00000800 /* master 64-bit addressing enable */
235 1.6 thorpej #else
236 1.3 thorpej #define CFG_SPEED100 0x40000000 /* 100Mb/s (83815) */
237 1.3 thorpej #define CFG_FDUP 0x20000000 /* full duplex (83815) */
238 1.3 thorpej #define CFG_POL 0x10000000 /* 10Mb/s polarity (83815) */
239 1.3 thorpej #define CFG_ANEG_DN 0x08000000 /* autonegotiation done (83815) */
240 1.3 thorpej #define CFG_PHY_CFG 0x00fc0000 /* PHY configuration (83815) */
241 1.3 thorpej #define CFG_PINT_ACEN 0x00020000 /* PHY interrupt auto clear (83815) */
242 1.3 thorpej #define CFG_PAUSE_ADV 0x00010000 /* pause advertise (83815) */
243 1.3 thorpej #define CFG_ANEG_SEL 0x0000e000 /* autonegotiation select (83815) */
244 1.6 thorpej #endif /* DP83820 */
245 1.3 thorpej #define CFG_PHY_RST 0x00000400 /* PHY reset (83815) */
246 1.3 thorpej #define CFG_PHY_DIS 0x00000200 /* PHY disable (83815) */
247 1.6 thorpej #ifdef DP83820
248 1.6 thorpej #define CFG_EXTSTS_EN 0x00000100 /* extended status enable */
249 1.6 thorpej #else
250 1.3 thorpej #define CFG_EUPHCOMP 0x00000100 /* 83810 descriptor compat (83815) */
251 1.6 thorpej #endif /* DP83820 */
252 1.9 thorpej #define CFG_EDBMASTEN 0x00002000 /* 635,900B ?? from linux driver */
253 1.9 thorpej #define CFG_RNDCNT 0x00000400 /* 635,900B ?? from linux driver */
254 1.9 thorpej #define CFG_FAIRBO 0x00000200 /* 635,900B ?? from linux driver */
255 1.1 thorpej #define CFG_REQALG 0x00000080 /* PCI bus request alg. */
256 1.1 thorpej #define CFG_SB 0x00000040 /* single backoff */
257 1.1 thorpej #define CFG_POW 0x00000020 /* program out of window timer */
258 1.1 thorpej #define CFG_EXD 0x00000010 /* excessive defferal timer disable */
259 1.1 thorpej #define CFG_PESEL 0x00000008 /* parity error detection action */
260 1.6 thorpej #ifdef DP83820
261 1.6 thorpej #define CFG_BROM_DIS 0x00000004 /* boot ROM disable */
262 1.6 thorpej #define CFG_EXT_125 0x00000002 /* external 125MHz reference select */
263 1.6 thorpej #endif /* DP83820 */
264 1.1 thorpej #define CFG_BEM 0x00000001 /* big-endian mode */
265 1.1 thorpej
266 1.1 thorpej #define SIP_EROMAR 0x08 /* EEPROM access register */
267 1.13 cube #ifndef DP83820
268 1.13 cube #define EROMAR_REQ 0x00000400 /* SiS 96x specific */
269 1.13 cube #define EROMAR_DONE 0x00000200 /* SiS 96x specific */
270 1.13 cube #define EROMAR_GNT 0x00000100 /* SiS 96x specific */
271 1.13 cube #endif /* DP83820 */
272 1.6 thorpej #define EROMAR_MDC 0x00000040 /* MII clock */
273 1.7 thorpej #define EROMAR_MDDIR 0x00000020 /* MII direction (1 == MAC->PHY) */
274 1.6 thorpej #define EROMAR_MDIO 0x00000010 /* MII data */
275 1.1 thorpej #define EROMAR_EECS 0x00000008 /* chip select */
276 1.1 thorpej #define EROMAR_EESK 0x00000004 /* clock */
277 1.1 thorpej #define EROMAR_EEDO 0x00000002 /* data out */
278 1.1 thorpej #define EROMAR_EEDI 0x00000001 /* data in */
279 1.1 thorpej
280 1.1 thorpej #define SIP_PTSCR 0x0c /* PCI test control register */
281 1.6 thorpej #ifdef DP83820
282 1.6 thorpej #define PTSCR_RBIST_RST 0x00002000 /* SRAM BIST reset */
283 1.6 thorpej #define PTSCR_RBIST_EN 0x00000400 /* SRAM BIST enable */
284 1.6 thorpej #define PTSCR_RBIST_DONE 0x00000200 /* SRAM BIST done */
285 1.6 thorpej #define PTSCR_RBIST_RX1FAIL 0x00000100 /* Rx status FIFO BIST fail */
286 1.6 thorpej #define PTSCR_RBIST_RX0FAIL 0x00000080 /* Rx data FIFO BIST fail */
287 1.6 thorpej #define PTSCR_RBIST_TX0FAIL 0x00000020 /* Tx data FIFO BIST fail */
288 1.6 thorpej #define PTSCR_RBIST_HFFAIL 0x00000010 /* hash filter BIST fail */
289 1.6 thorpej #define PTSCR_RBIST_RXFAIL 0x00000008 /* Rx filter BIST failed */
290 1.6 thorpej #define PTSCR_EELOAD_EN 0x00000004 /* EEPROM load initiate */
291 1.6 thorpej #define PTSCR_EEBIST_EN 0x00000002 /* EEPROM BIST enable */
292 1.6 thorpej #define PTSCR_EEBIST_FAIL 0x00000001 /* EEPROM BIST failed */
293 1.6 thorpej #else
294 1.1 thorpej #define PTSCR_DIS_TEST 0x40000000 /* discard timer test mode */
295 1.1 thorpej #define PTSCR_EROM_TACC 0x0f000000 /* boot rom access time */
296 1.1 thorpej #define PTSCR_TRRAMADR 0x001ff000 /* TX/RX RAM address */
297 1.1 thorpej #define PTSCR_BMTEN 0x00000200 /* bus master test enable */
298 1.1 thorpej #define PTSCR_RRTMEN 0x00000080 /* receive RAM test mode enable */
299 1.1 thorpej #define PTSCR_TRTMEN 0x00000040 /* transmit RAM test mode enable */
300 1.1 thorpej #define PTSCR_SRTMEN 0x00000020 /* status RAM test mode enable */
301 1.1 thorpej #define PTSCR_SRAMADR 0x0000001f /* status RAM address */
302 1.6 thorpej #endif /* DP83820 */
303 1.1 thorpej
304 1.1 thorpej #define SIP_ISR 0x10 /* interrupt status register */
305 1.6 thorpej #ifdef DP83820
306 1.6 thorpej #define ISR_TXDESC3 0x40000000 /* Tx queue 3 */
307 1.6 thorpej #define ISR_TXDESC2 0x20000000 /* Tx queue 2 */
308 1.6 thorpej #define ISR_TXDESC1 0x10000000 /* Tx queue 1 */
309 1.6 thorpej #define ISR_TXDESC0 0x08000000 /* Tx queue 0 */
310 1.6 thorpej #define ISR_RXDESC3 0x04000000 /* Rx queue 3 */
311 1.6 thorpej #define ISR_RXDESC2 0x02000000 /* Rx queue 2 */
312 1.6 thorpej #define ISR_RXDESC1 0x01000000 /* Rx queue 1 */
313 1.6 thorpej #define ISR_RXDESC0 0x00800000 /* Rx queue 0 */
314 1.6 thorpej #define ISR_TXRCMP 0x00400000 /* transmit reset complete */
315 1.6 thorpej #define ISR_RXRCMP 0x00200000 /* receive reset complete */
316 1.6 thorpej #define ISR_DPERR 0x00100000 /* detected parity error */
317 1.6 thorpej #define ISR_SSERR 0x00080000 /* signalled system error */
318 1.6 thorpej #define ISR_RMABT 0x00040000 /* received master abort */
319 1.6 thorpej #define ISR_RTABT 0x00020000 /* received target abort */
320 1.6 thorpej #else
321 1.1 thorpej #define ISR_WAKEEVT 0x10000000 /* wake up event */
322 1.1 thorpej #define ISR_PAUSE_END 0x08000000 /* end of transmission pause */
323 1.1 thorpej #define ISR_PAUSE_ST 0x04000000 /* start of transmission pause */
324 1.1 thorpej #define ISR_TXRCMP 0x02000000 /* transmit reset complete */
325 1.1 thorpej #define ISR_RXRCMP 0x01000000 /* receive reset complete */
326 1.1 thorpej #define ISR_DPERR 0x00800000 /* detected parity error */
327 1.1 thorpej #define ISR_SSERR 0x00400000 /* signalled system error */
328 1.1 thorpej #define ISR_RMABT 0x00200000 /* received master abort */
329 1.1 thorpej #define ISR_RTABT 0x00100000 /* received target abort */
330 1.6 thorpej #endif /* DP83820 */
331 1.1 thorpej #define ISR_RXSOVR 0x00010000 /* Rx status FIFO overrun */
332 1.1 thorpej #define ISR_HIBERR 0x00008000 /* high bits error set */
333 1.6 thorpej #ifdef DP83820
334 1.6 thorpej #define ISR_PHY 0x00004000 /* PHY interrupt */
335 1.6 thorpej #define ISR_PME 0x00002000 /* power management event */
336 1.6 thorpej #endif /* DP83820 */
337 1.1 thorpej #define ISR_SWI 0x00001000 /* software interrupt */
338 1.6 thorpej #ifdef DP83820
339 1.6 thorpej #define ISR_MIB 0x00000800 /* MIB service */
340 1.6 thorpej #endif /* DP83820 */
341 1.1 thorpej #define ISR_TXURN 0x00000400 /* Tx underrun */
342 1.1 thorpej #define ISR_TXIDLE 0x00000200 /* Tx idle */
343 1.1 thorpej #define ISR_TXERR 0x00000100 /* Tx error */
344 1.1 thorpej #define ISR_TXDESC 0x00000080 /* Tx descriptor interrupt */
345 1.1 thorpej #define ISR_TXOK 0x00000040 /* Tx okay */
346 1.1 thorpej #define ISR_RXORN 0x00000020 /* Rx overrun */
347 1.1 thorpej #define ISR_RXIDLE 0x00000010 /* Rx idle */
348 1.1 thorpej #define ISR_RXEARLY 0x00000008 /* Rx early */
349 1.1 thorpej #define ISR_RXERR 0x00000004 /* Rx error */
350 1.1 thorpej #define ISR_RXDESC 0x00000002 /* Rx descriptor interrupt */
351 1.1 thorpej #define ISR_RXOK 0x00000001 /* Rx okay */
352 1.1 thorpej
353 1.1 thorpej #define SIP_IMR 0x14 /* interrupt mask register */
354 1.1 thorpej /* See bits in SIP_ISR */
355 1.1 thorpej
356 1.1 thorpej #define SIP_IER 0x18 /* interrupt enable register */
357 1.1 thorpej #define IER_IE 0x00000001 /* master interrupt enable */
358 1.1 thorpej
359 1.6 thorpej #ifdef DP83820
360 1.6 thorpej #define SIP_IHR 0x1c /* interrupt hold-off register */
361 1.6 thorpej #define IHR_IHCTL 0x00000100 /* interrupt hold-off control */
362 1.6 thorpej #define IHR_IH 0x000000ff /* interrupt hold-off timer (100us) */
363 1.6 thorpej #else
364 1.1 thorpej #define SIP_ENPHY 0x1c /* enhanced PHY access register */
365 1.1 thorpej #define ENPHY_PHYDATA 0xffff0000 /* PHY data */
366 1.1 thorpej #define ENPHY_DATA_SHIFT 16
367 1.2 thorpej #define ENPHY_PHYADDR 0x0000f800 /* PHY number (7016 only) */
368 1.2 thorpej #define ENPHY_PHYADDR_SHIFT 11
369 1.1 thorpej #define ENPHY_REGADDR 0x000007c0 /* PHY register */
370 1.1 thorpej #define ENPHY_REGADDR_SHIFT 6
371 1.1 thorpej #define ENPHY_RWCMD 0x00000020 /* 1 == read, 0 == write */
372 1.1 thorpej #define ENPHY_ACCESS 0x00000010 /* PHY access enable */
373 1.6 thorpej #endif /* DP83820 */
374 1.1 thorpej
375 1.1 thorpej #define SIP_TXDP 0x20 /* transmit descriptor pointer reg */
376 1.1 thorpej
377 1.6 thorpej #ifdef DP83820
378 1.6 thorpej #define SIP_TXDP_HI 0x24 /* transmit descriptor pointer (high) reg */
379 1.6 thorpej #endif /* DP83820 */
380 1.6 thorpej
381 1.6 thorpej #ifdef DP83820
382 1.6 thorpej #define SIP_TXCFG 0x28 /* transmit configuration register */
383 1.6 thorpej #else
384 1.1 thorpej #define SIP_TXCFG 0x24 /* transmit configuration register */
385 1.6 thorpej #endif /* DP83820 */
386 1.1 thorpej #define TXCFG_CSI 0x80000000 /* carrier sense ignore */
387 1.1 thorpej #define TXCFG_HBI 0x40000000 /* heartbeat ignore */
388 1.1 thorpej #define TXCFG_MLB 0x20000000 /* MAC loopback */
389 1.1 thorpej #define TXCFG_ATP 0x10000000 /* automatic transmit padding */
390 1.6 thorpej #ifdef DP83820
391 1.6 thorpej #define TXCFG_ECRETRY 0x008000000 /* excessive collision retry enable */
392 1.6 thorpej #define TXCFG_MXDMA 0x00700000 /* max DMA burst size */
393 1.6 thorpej #define TXCFG_MXDMA_1024 0x00000000 /* 1024 bytes */
394 1.6 thorpej #define TXCFG_MXDMA_8 0x00100000 /* 8 bytes */
395 1.6 thorpej #define TXCFG_MXDMA_16 0x00200000 /* 16 bytes */
396 1.6 thorpej #define TXCFG_MXDMA_32 0x00300000 /* 32 bytes */
397 1.6 thorpej #define TXCFG_MXDMA_64 0x00400000 /* 64 bytes */
398 1.6 thorpej #define TXCFG_MXDMA_128 0x00500000 /* 128 bytes */
399 1.6 thorpej #define TXCFG_MXDMA_256 0x00600000 /* 256 bytes */
400 1.6 thorpej #define TXCFG_MXDMA_512 0x00700000 /* 512 bytes */
401 1.6 thorpej #define TXCFG_BRST_DIS 0x00080000 /* 1000Mb/s burst disable */
402 1.6 thorpej #define TXCFG_FLTH 0x0000ff00 /* Fx fill threshold */
403 1.6 thorpej #define TXCFG_FLTH_SHIFT 8
404 1.6 thorpej #define TXCFG_DRTH 0x000000ff /* Tx drain threshold */
405 1.6 thorpej #else
406 1.1 thorpej #define TXCFG_MXDMA 0x00700000 /* max DMA burst size */
407 1.1 thorpej #define TXCFG_MXDMA_512 0x00000000 /* 512 bytes */
408 1.1 thorpej #define TXCFG_MXDMA_4 0x00100000 /* 4 bytes */
409 1.1 thorpej #define TXCFG_MXDMA_8 0x00200000 /* 8 bytes */
410 1.1 thorpej #define TXCFG_MXDMA_16 0x00300000 /* 16 bytes */
411 1.1 thorpej #define TXCFG_MXDMA_32 0x00400000 /* 32 bytes */
412 1.1 thorpej #define TXCFG_MXDMA_64 0x00500000 /* 64 bytes */
413 1.1 thorpej #define TXCFG_MXDMA_128 0x00600000 /* 128 bytes */
414 1.1 thorpej #define TXCFG_MXDMA_256 0x00700000 /* 256 bytes */
415 1.1 thorpej #define TXCFG_FLTH 0x00003f00 /* Tx fill threshold */
416 1.1 thorpej #define TXCFG_FLTH_SHIFT 8
417 1.1 thorpej #define TXCFG_DRTH 0x0000003f /* Tx drain threshold */
418 1.6 thorpej #endif /* DP83820 */
419 1.1 thorpej
420 1.6 thorpej #ifdef DP83820
421 1.6 thorpej #define SIP_GPIOR 0x2c /* general purpose i/o register */
422 1.6 thorpej #define GPIOR_GP5_IN 0x00004000 /* GP 5 in */
423 1.6 thorpej #define GPIOR_GP4_IN 0x00002000 /* GP 4 in */
424 1.6 thorpej #define GPIOR_GP3_IN 0x00001000 /* GP 3 in */
425 1.6 thorpej #define GPIOR_GP2_IN 0x00000800 /* GP 2 in */
426 1.6 thorpej #define GPIOR_GP1_IN 0x00000400 /* GP 1 in */
427 1.6 thorpej #define GPIOR_GP5_OE 0x00000200 /* GP 5 out enable */
428 1.6 thorpej #define GPIOR_GP4_OE 0x00000100 /* GP 4 out enable */
429 1.6 thorpej #define GPIOR_GP3_OE 0x00000080 /* GP 3 out enable */
430 1.6 thorpej #define GPIOR_GP2_OE 0x00000040 /* GP 2 out enable */
431 1.6 thorpej #define GPIOR_GP1_OE 0x00000020 /* GP 1 out enable */
432 1.6 thorpej #define GPIOR_GP5_OUT 0x00000010 /* GP 5 out */
433 1.6 thorpej #define GPIOR_GP4_OUT 0x00000008 /* GP 4 out */
434 1.6 thorpej #define GPIOR_GP3_OUT 0x00000004 /* GP 3 out */
435 1.6 thorpej #define GPIOR_GP2_OUT 0x00000002 /* GP 2 out */
436 1.6 thorpej #define GPIOR_GP1_OUT 0x00000001 /* GP 1 out */
437 1.6 thorpej #endif /* DP83820 */
438 1.6 thorpej
439 1.6 thorpej #define SIP_RXDP 0x30 /* receive descriptor pointer reg */
440 1.6 thorpej
441 1.6 thorpej #ifdef DP83820
442 1.6 thorpej #define SIP_RXDP_HI 0x34 /* receive descriptor pointer (high) reg */
443 1.6 thorpej #endif /* DP83820 */
444 1.6 thorpej
445 1.6 thorpej #ifdef DP83820
446 1.6 thorpej #define SIP_RXCFG 0x38 /* receive configuration register */
447 1.6 thorpej #else
448 1.1 thorpej #define SIP_RXCFG 0x34 /* receive configuration register */
449 1.6 thorpej #endif
450 1.1 thorpej #define RXCFG_AEP 0x80000000 /* accept error packets */
451 1.1 thorpej #define RXCFG_ARP 0x40000000 /* accept runt packets */
452 1.6 thorpej #ifdef DP83820
453 1.6 thorpej #define RXCFG_STRIPCRC 0x20000000 /* strip CRC */
454 1.7 thorpej #endif /* DP83820 */
455 1.7 thorpej #define RXCFG_ATX 0x10000000 /* accept transmit packets */
456 1.12 itojun #define RXCFG_ALP 0x08000000 /* accept long packets */
457 1.7 thorpej #ifdef DP83820
458 1.6 thorpej #define RXCFG_AIRL 0x04000000 /* accept in-range length err packets */
459 1.6 thorpej #define RXCFG_MXDMA 0x00700000 /* max DMA burst size */
460 1.6 thorpej #define RXCFG_MXDMA_1024 0x00000000 /* 1024 bytes */
461 1.6 thorpej #define RXCFG_MXDMA_8 0x00100000 /* 8 bytes */
462 1.6 thorpej #define RXCFG_MXDMA_16 0x00200000 /* 16 bytes */
463 1.6 thorpej #define RXCFG_MXDMA_32 0x00300000 /* 32 bytes */
464 1.6 thorpej #define RXCFG_MXDMA_64 0x00400000 /* 64 bytes */
465 1.6 thorpej #define RXCFG_MXDMA_128 0x00500000 /* 128 bytes */
466 1.6 thorpej #define RXCFG_MXDMA_256 0x00600000 /* 256 bytes */
467 1.6 thorpej #define RXCFG_MXDMA_512 0x00700000 /* 512 bytes */
468 1.6 thorpej #else
469 1.1 thorpej #define RXCFG_MXDMA 0x00700000 /* max DMA burst size */
470 1.1 thorpej #define RXCFG_MXDMA_512 0x00000000 /* 512 bytes */
471 1.1 thorpej #define RXCFG_MXDMA_4 0x00100000 /* 4 bytes */
472 1.1 thorpej #define RXCFG_MXDMA_8 0x00200000 /* 8 bytes */
473 1.1 thorpej #define RXCFG_MXDMA_16 0x00300000 /* 16 bytes */
474 1.1 thorpej #define RXCFG_MXDMA_32 0x00400000 /* 32 bytes */
475 1.1 thorpej #define RXCFG_MXDMA_64 0x00500000 /* 64 bytes */
476 1.1 thorpej #define RXCFG_MXDMA_128 0x00600000 /* 128 bytes */
477 1.1 thorpej #define RXCFG_MXDMA_256 0x00700000 /* 256 bytes */
478 1.6 thorpej #endif /* DP83820 */
479 1.1 thorpej #define RXCFG_DRTH 0x0000003e
480 1.1 thorpej #define RXCFG_DRTH_SHIFT 1
481 1.1 thorpej
482 1.6 thorpej #ifdef DP83820
483 1.6 thorpej #define SIP_PQCR 0x3c /* priority queueing control register */
484 1.6 thorpej #define PQCR_RXPQ_4 0x0000000c /* 4 Rx queues */
485 1.6 thorpej #define PQCR_RXPQ_3 0x00000008 /* 3 Rx queues */
486 1.6 thorpej #define PQCR_RXPQ_2 0x00000004 /* 2 Rx queues */
487 1.6 thorpej #define PQCR_TXFAIR 0x00000002 /* Tx fairness enable */
488 1.6 thorpej #define PQCR_TXPQEN 0x00000001 /* Tx priority queueing enable */
489 1.6 thorpej #else
490 1.1 thorpej #define SIP_FLOWCTL 0x38 /* flow control register */
491 1.1 thorpej #define FLOWCTL_PAUSE 0x00000002 /* PAUSE flag */
492 1.1 thorpej #define FLOWCTL_FLOWEN 0x00000001 /* enable flow control */
493 1.1 thorpej
494 1.3 thorpej #define SIP_NS_CCSR 0x3c /* CLKRUN control/status register (83815) */
495 1.3 thorpej #define CCSR_PMESTS 0x00008000 /* PME status */
496 1.3 thorpej #define CCSR_PMEEN 0x00000100 /* PME enable */
497 1.3 thorpej #define CCSR_CLKRUN_EN 0x00000001 /* clkrun enable */
498 1.6 thorpej #endif /* DP83820 */
499 1.3 thorpej
500 1.3 thorpej #define SIP_NS_WCSR 0x40 /* WoL control/status register (83815) */
501 1.3 thorpej
502 1.3 thorpej #define SIP_NS_PCR 0x44 /* pause control/status register (83815) */
503 1.3 thorpej
504 1.1 thorpej #define SIP_RFCR 0x48 /* receive filter control register */
505 1.1 thorpej #define RFCR_RFEN 0x80000000 /* Rx filter enable */
506 1.1 thorpej #define RFCR_AAB 0x40000000 /* accept all broadcast */
507 1.1 thorpej #define RFCR_AAM 0x20000000 /* accept all multicast */
508 1.1 thorpej #define RFCR_AAP 0x10000000 /* accept all physical */
509 1.3 thorpej #define RFCR_APM 0x08000000 /* accept perfect match (83815) */
510 1.3 thorpej #define RFCR_APAT 0x07800000 /* accept pattern match (83815) */
511 1.3 thorpej #define RFCR_AARP 0x00400000 /* accept ARP (83815) */
512 1.3 thorpej #define RFCR_MHEN 0x00200000 /* multicast hash enable (83815) */
513 1.3 thorpej #define RFCR_UHEN 0x00100000 /* unicast hash enable (83815) */
514 1.3 thorpej #define RFCR_ULM 0x00080000 /* U/L bit mask (83815) */
515 1.3 thorpej #define RFCR_NS_RFADDR 0x000003ff /* Rx filter ext reg address (83815) */
516 1.1 thorpej #define RFCR_RFADDR 0x000f0000 /* Rx filter address */
517 1.1 thorpej #define RFCR_RFADDR_NODE0 0x00000000 /* node address 1, 0 */
518 1.1 thorpej #define RFCR_RFADDR_NODE2 0x00010000 /* node address 3, 2 */
519 1.1 thorpej #define RFCR_RFADDR_NODE4 0x00020000 /* node address 5, 4 */
520 1.1 thorpej #define RFCR_RFADDR_MC0 0x00040000 /* multicast hash word 0 */
521 1.1 thorpej #define RFCR_RFADDR_MC1 0x00050000 /* multicast hash word 1 */
522 1.1 thorpej #define RFCR_RFADDR_MC2 0x00060000 /* multicast hash word 2 */
523 1.1 thorpej #define RFCR_RFADDR_MC3 0x00070000 /* multicast hash word 3 */
524 1.1 thorpej #define RFCR_RFADDR_MC4 0x00080000 /* multicast hash word 4 */
525 1.1 thorpej #define RFCR_RFADDR_MC5 0x00090000 /* multicast hash word 5 */
526 1.1 thorpej #define RFCR_RFADDR_MC6 0x000a0000 /* multicast hash word 6 */
527 1.1 thorpej #define RFCR_RFADDR_MC7 0x000b0000 /* multicast hash word 7 */
528 1.9 thorpej /* For SiS900B and 635/735 only */
529 1.9 thorpej #define RFCR_RFADDR_MC8 0x000c0000 /* multicast hash word 8 */
530 1.9 thorpej #define RFCR_RFADDR_MC9 0x000d0000 /* multicast hash word 9 */
531 1.9 thorpej #define RFCR_RFADDR_MC10 0x000e0000 /* multicast hash word 10 */
532 1.9 thorpej #define RFCR_RFADDR_MC11 0x000f0000 /* multicast hash word 11 */
533 1.9 thorpej #define RFCR_RFADDR_MC12 0x00100000 /* multicast hash word 12 */
534 1.9 thorpej #define RFCR_RFADDR_MC13 0x00110000 /* multicast hash word 13 */
535 1.9 thorpej #define RFCR_RFADDR_MC14 0x00120000 /* multicast hash word 14 */
536 1.9 thorpej #define RFCR_RFADDR_MC15 0x00130000 /* multicast hash word 15 */
537 1.4 thorpej
538 1.5 briggs #define RFCR_NS_RFADDR_PMATCH0 0x0000 /* perfect match octets 1-0 */
539 1.5 briggs #define RFCR_NS_RFADDR_PMATCH2 0x0002 /* perfect match octets 3-2 */
540 1.5 briggs #define RFCR_NS_RFADDR_PMATCH4 0x0004 /* perfect match octets 5-4 */
541 1.4 thorpej #define RFCR_NS_RFADDR_PCOUNT 0x0006 /* pattern count */
542 1.6 thorpej #ifdef DP83820
543 1.6 thorpej #define RFCR_NS_RFADDR_PCOUNT2 0x0008 /* pattern count 2, 3 */
544 1.6 thorpej #define RFCR_NS_RFADDR_SOPAS0 0x000a /* SecureOn 0, 1 */
545 1.6 thorpej #define RFCR_NS_RFADDR_SOPAS2 0x000c /* SecureOn 2, 3 */
546 1.6 thorpej #define RFCR_NS_RFADDR_SOPAS4 0x000e /* SecureOn 4, 5 */
547 1.7 thorpej #define RFCR_NS_RFADDR_FILTMEM 0x0100 /* hash memory */
548 1.7 thorpej #define RFCR_NS_RFADDR_PATMEM 0x0200 /* pattern memory */
549 1.6 thorpej #else
550 1.4 thorpej #define RFCR_NS_RFADDR_FILTMEM 0x0200 /* filter memory (hash/pattern) */
551 1.6 thorpej #endif /* DP83820 */
552 1.1 thorpej
553 1.1 thorpej #define SIP_RFDR 0x4c /* receive filter data register */
554 1.3 thorpej #define RFDR_BMASK 0x00030000 /* byte mask (83815) */
555 1.1 thorpej #define RFDR_DATA 0x0000ffff /* data bits */
556 1.3 thorpej
557 1.3 thorpej #define SIP_NS_BRAR 0x50 /* boot rom address (83815) */
558 1.3 thorpej #define BRAR_AUTOINC 0x80000000 /* autoincrement */
559 1.3 thorpej #define BRAR_ADDR 0x0000ffff /* address */
560 1.3 thorpej
561 1.3 thorpej #define SIP_NS_BRDR 0x54 /* boot rom data (83815) */
562 1.3 thorpej
563 1.3 thorpej #define SIP_NS_SRR 0x58 /* silicon revision register (83815) */
564 1.6 thorpej #ifdef DP83820
565 1.6 thorpej #define SRR_REV_B 0x00000103
566 1.6 thorpej #else
567 1.3 thorpej #define SRR_REV_A 0x00000101
568 1.3 thorpej #define SRR_REV_B_1 0x00000200
569 1.3 thorpej #define SRR_REV_B_2 0x00000201
570 1.3 thorpej #define SRR_REV_B_3 0x00000203
571 1.3 thorpej #define SRR_REV_C_1 0x00000300
572 1.3 thorpej #define SRR_REV_C_2 0x00000302
573 1.6 thorpej #endif /* DP83820 */
574 1.3 thorpej
575 1.3 thorpej #define SIP_NS_MIBC 0x5c /* mib control register (83815) */
576 1.3 thorpej #define MIBC_MIBS 0x00000008 /* mib counter strobe */
577 1.3 thorpej #define MIBC_ACLR 0x00000004 /* clear all counters */
578 1.3 thorpej #define MIBC_FRZ 0x00000002 /* freeze all counters */
579 1.3 thorpej #define MIBC_WRN 0x00000001 /* warning test indicator */
580 1.3 thorpej
581 1.3 thorpej #define SIP_NS_MIB(mibreg) /* mib data registers (83815) */ \
582 1.3 thorpej (0x60 + (mibreg))
583 1.3 thorpej #define MIB_RXErroredPkts 0x00
584 1.3 thorpej #define MIB_RXFCSErrors 0x04
585 1.3 thorpej #define MIB_RXMsdPktErrors 0x08
586 1.3 thorpej #define MIB_RXFAErrors 0x0c
587 1.3 thorpej #define MIB_RXSymbolErrors 0x10
588 1.3 thorpej #define MIB_RXFrameTooLong 0x14
589 1.6 thorpej #ifdef DP83820
590 1.6 thorpej #define MIB_RXIRLErrors 0x18
591 1.6 thorpej #define MIB_RXBadOpcodes 0x1c
592 1.6 thorpej #define MIB_RXPauseFrames 0x20
593 1.6 thorpej #define MIB_TXPauseFrames 0x24
594 1.6 thorpej #define MIB_TXSQEErrors 0x28
595 1.6 thorpej #else
596 1.3 thorpej #define MIB_RXTXSQEErrors 0x18
597 1.6 thorpej #endif /* DP83820 */
598 1.3 thorpej
599 1.6 thorpej #ifndef DP83820
600 1.3 thorpej #define SIP_NS_PHY(miireg) /* PHY registers (83815) */ \
601 1.3 thorpej (0x80 + ((miireg) << 2))
602 1.6 thorpej #endif
603 1.6 thorpej
604 1.6 thorpej #ifdef DP83820
605 1.6 thorpej #define SIP_TXDP1 0xa0 /* transmit descriptor pointer (pri 1) */
606 1.6 thorpej
607 1.6 thorpej #define SIP_TXDP2 0xa4 /* transmit descriptor pointer (pri 2) */
608 1.6 thorpej
609 1.6 thorpej #define SIP_TXDP3 0xa8 /* transmit descriptor pointer (pri 3) */
610 1.1 thorpej
611 1.6 thorpej #define SIP_RXDP1 0xb0 /* receive descriptor pointer (pri 1) */
612 1.6 thorpej
613 1.6 thorpej #define SIP_RXDP2 0xb4 /* receive descriptor pointer (pri 2) */
614 1.6 thorpej
615 1.6 thorpej #define SIP_RXDP3 0xb8 /* receive descriptor pointer (pri 3) */
616 1.6 thorpej
617 1.6 thorpej #define SIP_VRCR 0xbc /* VLAN/IP receive control register */
618 1.6 thorpej #define VRCR_RUDPE 0x00000080 /* reject UDP checksum errors */
619 1.6 thorpej #define VRCR_RTCPE 0x00000040 /* reject TCP checksum errors */
620 1.6 thorpej #define VRCR_RIPE 0x00000020 /* reject IP checksum errors */
621 1.6 thorpej #define VRCR_IPEN 0x00000010 /* IP checksum enable */
622 1.6 thorpej #define VRCR_DUTF 0x00000008 /* discard untagged frames */
623 1.6 thorpej #define VRCR_DVTF 0x00000004 /* discard VLAN tagged frames */
624 1.6 thorpej #define VRCR_VTREN 0x00000002 /* VLAN tag removal enable */
625 1.6 thorpej #define VRCR_VTDEN 0x00000001 /* VLAN tag detection enable */
626 1.6 thorpej
627 1.6 thorpej #define SIP_VTCR 0xc0 /* VLAN/IP transmit control register */
628 1.6 thorpej #define VTCR_PPCHK 0x00000008 /* per-packet checksum generation */
629 1.6 thorpej #define VTCR_GCHK 0x00000004 /* global checksum generation */
630 1.6 thorpej #define VTCR_VPPTI 0x00000002 /* VLAN per-packet tag insertion */
631 1.6 thorpej #define VTCR_VGTI 0x00000001 /* VLAN global tag insertion */
632 1.6 thorpej
633 1.6 thorpej #define SIP_VDR 0xc4 /* VLAN data register */
634 1.6 thorpej #define VDR_VTCI 0xffff0000 /* VLAN tag control information */
635 1.6 thorpej #define VDR_VTYPE 0x0000ffff /* VLAN type field */
636 1.6 thorpej
637 1.6 thorpej #define SIP_NS_CCSR 0xcc /* CLKRUN control/status register (83815) */
638 1.6 thorpej #define CCSR_PMESTS 0x00008000 /* PME status */
639 1.6 thorpej #define CCSR_PMEEN 0x00000100 /* PME enable */
640 1.6 thorpej #define CCSR_CLKRUN_EN 0x00000001 /* clkrun enable */
641 1.6 thorpej
642 1.6 thorpej #define SIP_TBICR 0xe0 /* TBI control register */
643 1.6 thorpej #define TBICR_MR_LOOPBACK 0x00004000 /* TBI PCS loopback enable */
644 1.6 thorpej #define TBICR_MR_AN_ENABLE 0x00001000 /* TBI autonegotiation enable */
645 1.6 thorpej #define TBICR_MR_RESTART_AN 0x00000200 /* restart TBI autoneogtiation */
646 1.6 thorpej
647 1.6 thorpej #define SIP_TBISR 0xe4 /* TBI status register */
648 1.6 thorpej #define TBISR_MR_LINK_STATUS 0x00000020 /* TBI link status */
649 1.6 thorpej #define TBISR_MR_AN_COMPLETE 0x00000004 /* TBI autonegotiation complete */
650 1.6 thorpej
651 1.6 thorpej #define SIP_TANAR 0xe8 /* TBI autoneg adv. register */
652 1.6 thorpej #define TANAR_NP 0x00008000 /* next page exchange required */
653 1.6 thorpej #define TANAR_RF2 0x00002000 /* remote fault 2 */
654 1.6 thorpej #define TANAR_RF1 0x00001000 /* remote fault 1 */
655 1.6 thorpej #define TANAR_PS2 0x00000100 /* pause encoding 2 */
656 1.6 thorpej #define TANAR_PS1 0x00000080 /* pause encoding 1 */
657 1.6 thorpej #define TANAR_HALF_DUP 0x00000040 /* adv. half duplex */
658 1.6 thorpej #define TANAR_FULL_DUP 0x00000020 /* adv. full duplex */
659 1.6 thorpej
660 1.6 thorpej #define SIP_TANLPAR 0xec /* TBI autoneg link partner ability register */
661 1.6 thorpej /* See TANAR bits */
662 1.6 thorpej
663 1.6 thorpej #define SIP_TANER 0xf0 /* TBI autoneg expansion register */
664 1.6 thorpej #define TANER_NPA 0x00000004 /* we support next page function */
665 1.6 thorpej #define TANER_PR 0x00000002 /* page received from link partner */
666 1.6 thorpej
667 1.6 thorpej #define SIP_TESR 0xf4 /* TBI extended status register */
668 1.6 thorpej #define TESR_1000FDX 0x00008000 /* we support 1000base FDX */
669 1.6 thorpej #define TESR_1000HDX 0x00004000 /* we support 1000base HDX */
670 1.6 thorpej #else
671 1.1 thorpej #define SIP_PMCTL 0xb0 /* power management control register */
672 1.1 thorpej #define PMCTL_GATECLK 0x80000000 /* gate dual clock enable */
673 1.1 thorpej #define PMCTL_WAKEALL 0x40000000 /* wake on all Rx OK */
674 1.1 thorpej #define PMCTL_FRM3ACS 0x04000000 /* 3rd wake-up frame access */
675 1.1 thorpej #define PMCTL_FRM2ACS 0x02000000 /* 2nd wake-up frame access */
676 1.1 thorpej #define PMCTL_FRM1ACS 0x01000000 /* 1st wake-up frame access */
677 1.1 thorpej #define PMCTL_FRM3EN 0x00400000 /* 3rd wake-up frame match enable */
678 1.1 thorpej #define PMCTL_FRM2EN 0x00200000 /* 2nd wake-up frame match enable */
679 1.1 thorpej #define PMCTL_FRM1EN 0x00100000 /* 1st wake-up frame match enable */
680 1.1 thorpej #define PMCTL_ALGORITHM 0x00000800 /* Magic Packet match algorithm */
681 1.1 thorpej #define PMCTL_MAGICPKT 0x00000400 /* Magic Packet match enable */
682 1.1 thorpej #define PMCTL_LINKON 0x00000002 /* link on monitor enable */
683 1.1 thorpej #define PMCTL_LINKLOSS 0x00000001 /* link loss monitor enable */
684 1.1 thorpej
685 1.1 thorpej #define SIP_PMEVT 0xb4 /* power management wake-up evnt reg */
686 1.1 thorpej #define PMEVT_ALLFRMMAT 0x40000000 /* receive packet ok */
687 1.1 thorpej #define PMEVT_FRM3MAT 0x04000000 /* match 3rd wake-up frame */
688 1.1 thorpej #define PMEVT_FRM2MAT 0x02000000 /* match 2nd wake-up frame */
689 1.1 thorpej #define PMEVT_FRM1MAT 0x01000000 /* match 1st wake-up frame */
690 1.1 thorpej #define PMEVT_MAGICPKT 0x00000400 /* Magic Packet */
691 1.1 thorpej #define PMEVT_ONEVT 0x00000002 /* link on event */
692 1.1 thorpej #define PMEVT_LOSSEVT 0x00000001 /* link loss event */
693 1.1 thorpej
694 1.1 thorpej #define SIP_WAKECRC 0xbc /* wake-up frame CRC register */
695 1.1 thorpej
696 1.1 thorpej #define SIP_WAKEMASK0 0xc0 /* wake-up frame mask registers */
697 1.1 thorpej #define SIP_WAKEMASK1 0xc4
698 1.1 thorpej #define SIP_WAKEMASK2 0xc8
699 1.1 thorpej #define SIP_WAKEMASK3 0xcc
700 1.1 thorpej #define SIP_WAKEMASK4 0xe0
701 1.5 briggs #define SIP_WAKEMASK5 0xe4
702 1.1 thorpej #define SIP_WAKEMASK6 0xe8
703 1.1 thorpej #define SIP_WAKEMASK7 0xec
704 1.6 thorpej #endif /* DP83820 */
705 1.8 thorpej
706 1.8 thorpej /*
707 1.8 thorpej * Revision codes for the SiS 630 chipset built-in Ethernet.
708 1.8 thorpej */
709 1.9 thorpej #define SIS_REV_900B 0x03
710 1.8 thorpej #define SIS_REV_630E 0x81
711 1.8 thorpej #define SIS_REV_630S 0x82
712 1.8 thorpej #define SIS_REV_630EA1 0x83
713 1.10 briggs #define SIS_REV_630ET 0x84
714 1.9 thorpej #define SIS_REV_635 0x90 /* same for 735 (745?) */
715 1.13 cube #define SIS_REV_960 0x91
716 1.13 cube
717 1.13 cube /*
718 1.13 cube * MII operations for recent SiS chipsets
719 1.13 cube */
720 1.13 cube #define SIS_MII_STARTDELIM 0x01
721 1.13 cube #define SIS_MII_READOP 0x02
722 1.13 cube #define SIS_MII_WRITEOP 0x01
723 1.13 cube #define SIS_MII_TURNAROUND 0x02
724 1.1 thorpej
725 1.1 thorpej /*
726 1.1 thorpej * Serial EEPROM opcodes, including the start bit.
727 1.1 thorpej */
728 1.1 thorpej #define SIP_EEPROM_OPC_ERASE 0x04
729 1.1 thorpej #define SIP_EEPROM_OPC_WRITE 0x05
730 1.1 thorpej #define SIP_EEPROM_OPC_READ 0x06
731 1.1 thorpej
732 1.1 thorpej /*
733 1.5 briggs * Serial EEPROM address map (byte address) for the SiS900.
734 1.1 thorpej */
735 1.1 thorpej #define SIP_EEPROM_SIGNATURE 0x00 /* SiS 900 signature */
736 1.1 thorpej #define SIP_EEPROM_MASK 0x02 /* `enable' mask */
737 1.1 thorpej #define SIP_EEPROM_VENDOR_ID 0x04 /* PCI vendor ID */
738 1.1 thorpej #define SIP_EEPROM_DEVICE_ID 0x06 /* PCI device ID */
739 1.1 thorpej #define SIP_EEPROM_SUBVENDOR_ID 0x08 /* PCI subvendor ID */
740 1.1 thorpej #define SIP_EEPROM_SUBSYSTEM_ID 0x0a /* PCI subsystem ID */
741 1.1 thorpej #define SIP_EEPROM_PMC 0x0c /* PCI power management capabilities */
742 1.1 thorpej #define SIP_EEPROM_reserved 0x0e /* reserved */
743 1.1 thorpej #define SIP_EEPROM_ETHERNET_ID0 0x10 /* Ethernet address 0, 1 */
744 1.1 thorpej #define SIP_EEPROM_ETHERNET_ID1 0x12 /* Ethernet address 2, 3 */
745 1.1 thorpej #define SIP_EEPROM_ETHERNET_ID2 0x14 /* Ethernet address 4, 5 */
746 1.1 thorpej #define SIP_EEPROM_CHECKSUM 0x16 /* checksum */
747 1.5 briggs
748 1.5 briggs /*
749 1.5 briggs * Serial EEPROM data (byte addresses) for the DP83815.
750 1.5 briggs */
751 1.5 briggs #define SIP_DP83815_EEPROM_CHECKSUM 0x16 /* checksum */
752 1.5 briggs #define SIP_DP83815_EEPROM_LENGTH 0x18 /* length of EEPROM data */
753 1.6 thorpej
754 1.6 thorpej /*
755 1.6 thorpej * Serial EEPROM data (byte addresses) for the DP83820.
756 1.6 thorpej */
757 1.7 thorpej #define SIP_DP83820_EEPROM_SUBSYSTEM_ID 0x00 /* PCI subsystem ID */
758 1.7 thorpej #define SIP_DP83820_EEPROM_SUBVENDOR_ID 0x02 /* PCI subvendor ID */
759 1.7 thorpej #define SIP_DP83820_EEPROM_CFGINT 0x04 /* PCI INT [31:16] */
760 1.11 thorpej #define SIP_DP83820_EEPROM_CONFIG0 0x06 /* configuration word 0 */
761 1.11 thorpej #define SIP_DP83820_EEPROM_CONFIG1 0x08 /* configuration word 1 */
762 1.11 thorpej #define SIP_DP83820_EEPROM_CONFIG2 0x0a /* configuration word 2 */
763 1.11 thorpej #define SIP_DP83820_EEPROM_CONFIG3 0x0c /* configuration word 3 */
764 1.7 thorpej #define SIP_DP83820_EEPROM_SOPAS0 0x0e /* SecureOn [47:32] */
765 1.7 thorpej #define SIP_DP83820_EEPROM_SOPAS1 0x10 /* SecureOn [31:16] */
766 1.7 thorpej #define SIP_DP83820_EEPROM_SOPAS2 0x12 /* SecureOn [15:0] */
767 1.7 thorpej #define SIP_DP83820_EEPROM_PMATCH0 0x14 /* MAC [47:32] */
768 1.7 thorpej #define SIP_DP83820_EEPROM_PMATCH1 0x16 /* MAC [31:16] */
769 1.7 thorpej #define SIP_DP83820_EEPROM_PMATCH2 0x18 /* MAC [15:0] */
770 1.7 thorpej #define SIP_DP83820_EEPROM_CHECKSUM 0x1a /* checksum */
771 1.7 thorpej #define SIP_DP83820_EEPROM_LENGTH 0x1c /* length of EEPROM data */
772 1.11 thorpej
773 1.11 thorpej #define DP83820_CONFIG2_CFG_EXT_125 (1U << 0)
774 1.11 thorpej #define DP83820_CONFIG2_CFG_M64ADDR (1U << 1)
775 1.11 thorpej #define DP83820_CONFIG2_CFG_DATA64_EN (1U << 2)
776 1.11 thorpej #define DP83820_CONFIG2_CFG_T64ADDR (1U << 3)
777 1.11 thorpej #define DP83820_CONFIG2_CFG_MWI_DIS (1U << 4)
778 1.11 thorpej #define DP83820_CONFIG2_CFG_MRM_DIS (1U << 5)
779 1.11 thorpej #define DP83820_CONFIG2_CFG_MODE_1000 (1U << 7)
780 1.11 thorpej #define DP83820_CONFIG2_CFG_TBI_EN (1U << 9)
781 1.1 thorpej
782 1.1 thorpej #endif /* _DEV_PCI_IF_SIPREG_H_ */
783