mtd803reg.h revision 1.3 1 1.3 martin /* $NetBSD: mtd803reg.h,v 1.3 2008/04/28 20:23:50 martin Exp $ */
2 1.1 martin
3 1.1 martin /*-
4 1.1 martin * Copyright (c) 2002 The NetBSD Foundation, Inc.
5 1.1 martin * All rights reserved.
6 1.1 martin *
7 1.1 martin * This code is derived from software contributed to The NetBSD Foundation
8 1.1 martin * by Peter Bex <Peter.Bex (at) student.kun.nl>.
9 1.1 martin *
10 1.1 martin * Redistribution and use in source and binary forms, with or without
11 1.1 martin * modification, are permitted provided that the following conditions
12 1.1 martin * are met:
13 1.1 martin * 1. Redistributions of source code must retain the above copyright
14 1.1 martin * notice, this list of conditions and the following disclaimer.
15 1.1 martin * 2. Redistributions in binary form must reproduce the above copyright
16 1.1 martin * notice, this list of conditions and the following disclaimer in the
17 1.1 martin * documentation and/or other materials provided with the distribution.
18 1.1 martin *
19 1.1 martin * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 1.1 martin * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 1.1 martin * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 1.1 martin * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 1.1 martin * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 1.1 martin * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 1.1 martin * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 1.1 martin * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 1.1 martin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 1.1 martin * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 1.1 martin * POSSIBILITY OF SUCH DAMAGE.
30 1.1 martin */
31 1.1 martin
32 1.1 martin /* Command and Status Register */
33 1.1 martin #define MTD_PAR0 0x00 /* Physical address 0-3 */
34 1.1 martin #define MTD_PAR1 0x04 /* Physical address 4-5 */
35 1.1 martin #define MTD_MAR0 0x08 /* Multicast address 0-3 */
36 1.1 martin #define MTD_MAR1 0x0c /* Multicast address 4-7 */
37 1.1 martin #define MTD_FAR0 0x10 /* Flowctrl address 0-3 */
38 1.1 martin #define MTD_FAR1 0x14 /* Flowctrl address 4-5 */
39 1.1 martin #define MTD_RXTXR 0x18 /* Receive-transmit config */
40 1.1 martin #define MTD_BCR 0x1c /* Bus command */
41 1.1 martin #define MTD_TXPDR 0x20 /* Transmit polling demand */
42 1.1 martin #define MTD_RXPDR 0x24 /* Receive polling demand */
43 1.1 martin #define MTD_RCWP 0x28 /* Receive word pointer */
44 1.1 martin #define MTD_TXLBA 0x2c /* Transmit list base addr */
45 1.1 martin #define MTD_RXLBA 0x30 /* Receive list base addr */
46 1.1 martin #define MTD_ISR 0x34 /* Interrupt Status Register */
47 1.1 martin #define MTD_IMR 0x38 /* Interrupt Mask Register */
48 1.1 martin #define MTD_FHLT 0x3c /* Flow ctrl high/low thresh */
49 1.1 martin #define MTD_MIIMGT 0x40 /* ROM and MII management */
50 1.1 martin #define MTD_TALLY 0x44 /* Tally ctr for CRC & MPA */
51 1.1 martin #define MTD_TSR 0x48 /* Tally ctr for TSR */
52 1.1 martin #define MTD_PHYBASE 0x4c /* PHY status & control */
53 1.1 martin #define MTD_OUI 0x50 /* OUI register */
54 1.2 wiz #define MTD_LPAR 0x54 /* Link Partner, Advertisement */
55 1.1 martin #define MTD_WUECSR 0x5c /* Wake-up Events CSR */
56 1.1 martin
57 1.1 martin #define MTD_ALL_ADDR 0xffffffff /* Mask all addresses */
58 1.1 martin #define MTD_TXPDR_DEMAND 0xffffffff /* Demand transmit polling */
59 1.1 martin #define MTD_RXPDR_DEMAND 0xffffffff /* Demand receive polling */
60 1.1 martin
61 1.1 martin /* PHY registers */
62 1.1 martin /* Basic mode control register */
63 1.1 martin #define MTD_PHY_BMCR 0x00
64 1.1 martin
65 1.1 martin /* Bus Command Register */
66 1.1 martin #define MTD_BCR_RSRVD1 0xfffffc00 /* Bits [31:10] are reserved */
67 1.1 martin #define MTD_BCR_PROG 0x00000200 /* Programming */
68 1.1 martin #define MTD_BCR_RLE 0x00000100 /* Read Line command Enable */
69 1.1 martin #define MTD_BCR_RME 0x00000080 /* Read Multiple cmd Enable */
70 1.1 martin #define MTD_BCR_WIE 0x00000040 /* Write and Inval. cmd Enab. */
71 1.1 martin #define MTD_BCR_BLEN1 0x00000000 /* 1 dword burst length */
72 1.1 martin #define MTD_BCR_BLEN4 0x00000008 /* 4 dwords burst length */
73 1.1 martin #define MTD_BCR_BLEN8 0x00000010 /* 8 dwords burst length */
74 1.1 martin #define MTD_BCR_BLEN16 0x00000018 /* 16 dwords burst length */
75 1.1 martin #define MTD_BCR_BLEN32 0x00000020 /* 32 dwords burst length */
76 1.1 martin #define MTD_BCR_BLEN64 0x00000028 /* 64 dwords burst length */
77 1.1 martin #define MTD_BCR_BLEN128 0x00000030 /* 128 dwords burst length */
78 1.1 martin #define MTD_BCR_BLEN512 0x00000038 /* 512 dwords burst length */
79 1.1 martin #define MTD_BCR_RSVRD0 0x00000006 /* Bits [2:1] are reserved */
80 1.1 martin #define MTD_BCR_RESET 0x00000001 /* Software reset */
81 1.1 martin
82 1.1 martin #define MTD_TIMEOUT 1000 /* Timeout when resetting */
83 1.1 martin
84 1.1 martin /* Transmit configuration register */
85 1.1 martin #define MTD_TX_RUN 0x80000000 /* Transmit running status */
86 1.1 martin #define MTD_TX_RSRVD1 0x60000000 /* Bits [14:13] are reserved */
87 1.1 martin #define MTD_TX_BACKOPT 0x10000000 /* Optional backoff */
88 1.1 martin #define MTD_TX_FASTBACK 0x08000000 /* Fast back-off */
89 1.1 martin #define MTD_TX_RSRVD0 0x04000000 /* Bit 10 is reserved */
90 1.1 martin #define MTD_TX_ENH 0x02000000 /* Enhanced mode */
91 1.1 martin #define MTD_TX_FCTL 0x01000000 /* Transmit fctl packet enable*/
92 1.1 martin #define MTD_TX_64 0x00000000 /* 64 bytes */
93 1.1 martin #define MTD_TX_32 0x00200000 /* 32 bytes */
94 1.1 martin #define MTD_TX_128 0x00400000 /* 128 bytes */
95 1.1 martin #define MTD_TX_256 0x00600000 /* 256 bytes */
96 1.1 martin #define MTD_TX_512 0x00800000 /* 512 bytes */
97 1.1 martin #define MTD_TX_768 0x00a00000 /* 768 bytes */
98 1.1 martin #define MTD_TX_1024 0x00c00000 /* 1024 bytes */
99 1.1 martin #define MTD_TX_STFWD 0x00e00000 /* Store and forward */
100 1.1 martin #define MTD_TX_FDPLX 0x00100000 /* Full duplex mode */
101 1.1 martin #define MTD_TX_SPD10 0x00080000 /* Port speed is 10M */
102 1.1 martin #define MTD_TX_ENABLE 0x00040000 /* Transmit enable */
103 1.1 martin #define MTD_TX_LPBACK 0x00020000 /* Loopback mode bit 1 */
104 1.1 martin #define MTD_TX_LPBACKZERO 0x00010000 /* Loopback mode bit 0 */
105 1.1 martin
106 1.1 martin /* Receive configuration register */
107 1.1 martin #define MTD_RX_RUN 0x00008000 /* Receive running status */
108 1.1 martin #define MTD_RX_EARLY 0x00004000 /* Early interrupt enable */
109 1.1 martin #define MTD_RX_FCTL 0x00002000 /* Receive fctl packet enable */
110 1.1 martin #define MTD_RX_FANA 0x00001000 /* Fctl address undefined(n/a)*/
111 1.1 martin #define MTD_RX_BLEN 0x00000800 /* Receive burst len enable */
112 1.1 martin #define MTD_RX_512 0x00000700 /* 512 words */
113 1.1 martin #define MTD_RX_128 0x00000600 /* 128 words */
114 1.1 martin #define MTD_RX_64 0x00000500 /* 64 words */
115 1.1 martin #define MTD_RX_32 0x00000400 /* 32 words */
116 1.1 martin #define MTD_RX_16 0x00000300 /* 16 words */
117 1.1 martin #define MTD_RX_8 0x00000200 /* 8 words */
118 1.1 martin #define MTD_RX_4 0x00000100 /* 4 words */
119 1.1 martin #define MTD_RX_1 0x00000000 /* 1 word */
120 1.1 martin #define MTD_RX_PROM 0x00000080 /* Promiscuous mode */
121 1.1 martin #define MTD_RX_ABROAD 0x00000040 /* Accept broadcast */
122 1.1 martin #define MTD_RX_AMULTI 0x00000020 /* Accept multicast */
123 1.1 martin #define MTD_RX_ARP 0x00000008 /* Receive runt packet */
124 1.1 martin #define MTD_RX_ALP 0x00000004 /* Receive long packet */
125 1.1 martin #define MTD_RX_ERRP 0x00000002 /* Receive error packet */
126 1.1 martin #define MTD_RX_ENABLE 0x00000001 /* Receive enable */
127 1.1 martin
128 1.1 martin /* Interrupt Status Register */
129 1.1 martin #define MTD_ISR_RSRVD1 0xfff80000 /* Bits [31:19] are reserved */
130 1.1 martin #define MTD_ISR_PDF 0x00040000 /* Parallel Detection Fault */
131 1.1 martin #define MTD_ISR_RFCON 0x00020000 /* Receive FCtl xON packet */
132 1.1 martin #define MRD_ISR_RFCOFF 0x00010000 /* Receive FCtl xOFF packet */
133 1.1 martin #define MTD_ISR_LSC 0x00008000 /* Link Status Change */
134 1.1 martin #define MTD_ISR_ANC 0x00004000 /* Autonegotiation complete */
135 1.1 martin #define MTD_ISR_FBUSERR 0x00002000 /* Fatal bus error */
136 1.1 martin #define MTD_ISR_PARERR 0x00000000 /* Parity error */
137 1.1 martin #define MTD_ISR_MASTERR 0x00000800 /* Master error */
138 1.1 martin #define MTD_ISR_TARERR 0x00001000 /* Target error */
139 1.1 martin #define MTD_ISR_TXUNDER 0x00000400 /* Transmit underflow */
140 1.1 martin #define MTD_ISR_RXOVER 0x00000200 /* Receive overflow */
141 1.1 martin #define MTD_ISR_TXEARLY 0x00000100 /* Transmit early int */
142 1.1 martin #define MTD_ISR_RXEARLY 0x00000080 /* Receive early int */
143 1.1 martin #define MTD_ISR_CTROVER 0x00000040 /* Counter overflow */
144 1.1 martin #define MTD_ISR_RXBUN 0x00000020 /* Receive buffer n/a */
145 1.1 martin #define MTD_ISR_TXBUN 0x00000010 /* Transmit buffer n/a */
146 1.1 martin #define MTD_ISR_TXIRQ 0x00000008 /* Transmit interrupt */
147 1.1 martin #define MTD_ISR_RXIRQ 0x00000004 /* Receive interrupt */
148 1.1 martin #define MTD_ISR_RXERR 0x00000002 /* Receive error */
149 1.1 martin #define MTD_ISR_RSRVD0 0x00000001 /* Bit 1 is reserved */
150 1.1 martin
151 1.1 martin #define MTD_ISR_MASK MTD_ISR_TXIRQ | MTD_ISR_RXIRQ | MTD_ISR_RXBUN \
152 1.1 martin | MTD_ISR_RXERR | MTD_ISR_PDF \
153 1.1 martin | MTD_ISR_FBUSERR | MTD_ISR_TXUNDER \
154 1.1 martin | MTD_ISR_RXOVER | MTD_ISR_PARERR \
155 1.1 martin | MTD_ISR_MASTERR | MTD_ISR_TARERR
156 1.1 martin
157 1.1 martin #define MTD_ISR_ENABLE 0xffffffff /* Enable interrupts */
158 1.1 martin
159 1.1 martin /* Interrupt Mask Register. Essentially the same as ISR */
160 1.1 martin #define MTD_IMR_RSRVD2 0xfff80000 /* Bits [31:19] are reserved */
161 1.1 martin #define MTD_IMR_PDF 0x00040000 /* Parallel Detection Fault */
162 1.1 martin #define MTD_IMR_RFCON 0x00020000 /* Receive FCtl xON packet */
163 1.1 martin #define MRD_IMR_RFCOFF 0x00010000 /* Receive FCtl xOFF packet */
164 1.1 martin #define MTD_IMR_LSC 0x00008000 /* Link Status Change */
165 1.1 martin #define MTD_IMR_ANC 0x00004000 /* Autonegotiation complete */
166 1.1 martin #define MTD_IMR_FBUSERR 0x00002000 /* Fatal bus error */
167 1.1 martin #define MTD_IMR_RSRVD1 0x00001800 /* Bits [12:11] are reserved */
168 1.1 martin #define MTD_IMR_TXUNDER 0x00000400 /* Transmit underflow */
169 1.1 martin #define MTD_IMR_RXOVER 0x00000200 /* Receive overflow */
170 1.1 martin #define MTD_IMR_TXEARLY 0x00000100 /* Transmit early int */
171 1.1 martin #define MTD_IMR_RXEARLY 0x00000080 /* Receive early int */
172 1.1 martin #define MTD_IMR_CTROVER 0x00000040 /* Counter overflow */
173 1.1 martin #define MTD_IMR_RXBUN 0x00000020 /* Receive buffer n/a */
174 1.1 martin #define MTD_IMR_TXBUN 0x00000010 /* Transmit buffer n/a */
175 1.1 martin #define MTD_IMR_TXIRQ 0x00000008 /* Transmit interrupt */
176 1.1 martin #define MTD_IMR_RXIRQ 0x00000004 /* Receive interrupt */
177 1.1 martin #define MTD_IMR_RXERR 0x00000002 /* Receive error */
178 1.1 martin #define MTD_IMR_RSRVD0 0x00000001 /* Bit 1 is reserved */
179 1.1 martin
180 1.1 martin #define MTD_IMR_MASK MTD_IMR_TXIRQ | MTD_IMR_RXIRQ | MTD_IMR_RXBUN \
181 1.1 martin | MTD_IMR_RXERR | MTD_IMR_PDF \
182 1.1 martin | MTD_IMR_FBUSERR | MTD_IMR_TXUNDER \
183 1.1 martin | MTD_IMR_RXOVER \
184 1.1 martin
185 1.1 martin /* Tally counters for CRC and MPA */
186 1.1 martin #define MTD_TALLY_CRCOVER 0x80000000 /* CRC tally ctr overflow */
187 1.1 martin #define MTD_TALLY_NCRCERR 0x7fff0000 /* Number of CRC errors */
188 1.1 martin #define MTD_TALLY_MPAOVER 0x00008000 /* MPA tally ctr overflow */
189 1.1 martin #define MTD_TALLY_NMPAERR 0x00007fff /* Number of MPA errors */
190 1.1 martin
191 1.1 martin /* Tally counters for Transmit Status Report */
192 1.1 martin #define MTD_TSR_NABORT 0xff000000 /* Number of aborted packets */
193 1.1 martin #define MTD_TSR_NLCOL 0x00ff0000 /* Number of late collisions */
194 1.1 martin #define MTD_TSR_NRETRY 0x0000ffff /* Number of transm. retries */
195 1.1 martin
196 1.1 martin /* Wake-Up Events Control and Status Register */
197 1.1 martin #define MTD_WUECSR_RSRVD1 0xfffff000 /* Bits [31:12] are reserved */
198 1.1 martin #define MTD_WUECSR_FRCWKUP 0x00000800 /* Force Wake Up LAN mode */
199 1.1 martin #define MTD_WUECSR_STATCHG 0x00000400 /* Status Change enable */
200 1.1 martin #define MTD_WUECSR_AGU 0x00000200 /* Accept Global Unicast */
201 1.1 martin #define MTD_WUECSR_WUPOP 0x00000100 /* Wake Up Pin Output Pattern */
202 1.1 martin #define MTD_WUECSR_WUPPROP 0x00000080 /* Wake Up Pin Property */
203 1.1 martin #define MTD_WUECSR_LCD 0x00000040 /* Link Change Detected */
204 1.1 martin #define MTD_WUECSR_MPR 0x00000020 /* Magic Packet Received */
205 1.1 martin #define MTD_WUECSR_WUFR 0x00000010 /* Wake Up Frame Received */
206 1.1 martin #define MTD_WUECSR_RSRVD0 0x00000008 /* Unspecified! */
207 1.1 martin #define MTD_WUECSR_LCE 0x00000004 /* Link Change Enable */
208 1.1 martin #define MTD_WUECSR_MPE 0x00000002 /* Magic Packet Enable */
209 1.1 martin #define MTD_WUECSR_WUFE 0x00000001 /* Wake Up Frame Enable */
210 1.1 martin
211 1.1 martin
212 1.1 martin /*
213 1.1 martin * Note: We should probably move the following info to a new PHY driver.
214 1.1 martin * Or maybe remove them anyway, but we might need them someday so leave them
215 1.1 martin * here for now.
216 1.1 martin */
217 1.1 martin /* PHY Control and Status Register */
218 1.1 martin #define MTD_PHY_T4 0x80000000 /* T4 operation capability */
219 1.1 martin #define MTD_PHY_TXFD 0x40000000 /* 100-TX Full Duplex cap. */
220 1.1 martin #define MTD_PHY_TXHD 0x20000000 /* 100-TX Half Duplex cap. */
221 1.1 martin #define MTD_PHY_TPFD 0x10000000 /* 10-TP Full Duplex cap. */
222 1.1 martin #define MTD_PHY_TPHD 0x08000000 /* 10-TP Half Duplex cap. */
223 1.1 martin #define MTD_PHY_RSRVD2 0x07c00000 /* Bits [16:22] are reserved */
224 1.1 martin #define MTD_PHY_ANC 0x00200000 /* Autonegotiation complete */
225 1.1 martin #define MTD_PHY_RMTFAULT 0x00100000 /* Remote fault */
226 1.1 martin #define MTD_PHY_AUTONEG 0x00080000 /* Autonegotiation */
227 1.1 martin #define MTD_PHY_LINK 0x00040000 /* Link status */
228 1.1 martin #define MTD_PHY_JABBER 0x00020000 /* Jabber detected */
229 1.1 martin #define MTD_PHY_EXTREG 0x00010000 /* Extended register exists */
230 1.1 martin #define MTD_PHY_RESET 0x00008000 /* Reset PHY registers */
231 1.1 martin #define MTD_PHY_LPBACK 0x00004000 /* Loopback select */
232 1.1 martin #define MTD_PHY_SPEED 0x00002000 /* Speed select */
233 1.1 martin #define MTD_PHY_ANEN 0x00001000 /* Autoneg enable */
234 1.1 martin #define MTD_PHY_POWDWN 0x00000800 /* Power-down */
235 1.1 martin #define MTD_PHY_RSRVD1 0x00000400 /* Bit 10 is reserved */
236 1.1 martin #define MTD_PHY_RESTAN 0x00000200 /* Restart Autoneg */
237 1.1 martin #define MTD_PHY_DUPLEX 0x00000100 /* Duplex select */
238 1.1 martin #define MTD_PHY_COLTST 0x00000080 /* Collision test enable */
239 1.1 martin #define MTD_PHY_RSRVD0 0x0000007f /* Bits [6:0] are reserved */
240 1.1 martin
241 1.1 martin /* OUI register */
242 1.1 martin #define MTD_OUI_HIGH 0xfc000000 /* OUI High register (0x34) */
243 1.1 martin #define MTD_OUI_PARTNO 0x02f00000 /* Part number (0x0) */
244 1.1 martin #define MTD_OUI_REVISION 0x000f0000 /* Revision number (0x0) */
245 1.1 martin #define MTD_OUI_LOW 0x0000ffff /* OUI Low register (0x0302) */
246 1.1 martin
247 1.2 wiz /* Link Partner Ability Register and Advertisement Register */
248 1.1 martin #define MTD_LPAR_LP_NEXTPAGE 0x80000000 /* Next page */
249 1.1 martin #define MTD_LPAR_LP_ACK 0x40000000 /* Acknowledge */
250 1.1 martin #define MTD_LPAR_LP_RMTFAULT 0x20000000 /* Remote fault detected */
251 1.1 martin #define MTD_LPAR_RSRVD1 0x1c000000 /* Bits [28:26] are reserved */
252 1.1 martin #define MTD_LPAR_LP_T4 0x02000000 /* Capable of T4 operation */
253 1.1 martin #define MTD_LPAR_LP_TXFD 0x01000000 /* Cap. of 100-TX Full Duplex */
254 1.1 martin #define MTD_LPAR_LP_TXHD 0x00800000 /* Cap. of 100-TX Half Duplex */
255 1.1 martin #define MTD_LPAR_LP_TPFD 0x00400000 /* Cap. of 10-TP Full Duplex */
256 1.1 martin #define MTD_LPAR_LP_TPHD 0x00200000 /* Cap. of 10-TP Half Duplex */
257 1.1 martin #define MTD_LPAR_SELECTOR1 0x001f0000 /* Selector field 1 */
258 1.1 martin #define MTD_LPAR_AD_NEXTPAGE 0x00008000 /* Next page */
259 1.1 martin #define MTD_LPAR_AD_ACK 0x00004000 /* Acknowledge */
260 1.1 martin #define MTD_LPAR_AD_RMTFAULT 0x00002000 /* Remote fault detected */
261 1.1 martin #define MTD_LPAR_RSRVD0 0x00001c00 /* Bits [12:10] are reserved */
262 1.1 martin #define MTD_LPAR_AD_T4 0x00000200 /* Capable of T4 operation */
263 1.1 martin #define MTD_LPAR_AD_TXFD 0x00000100 /* Cap. of 100-TX Full Duplex */
264 1.1 martin #define MTD_LPAR_AD_TXHD 0x00000080 /* Cap. of 100-TX Half Duplex */
265 1.1 martin #define MTD_LPAR_AD_TPFD 0x00000040 /* Cap. of 10-TP Full Duplex */
266 1.1 martin #define MTD_LPAR_AD_TPHD 0x00000020 /* Cap. of 10-TP Half Duplex */
267 1.1 martin #define MTD_LPAR_SELECTOR0 0x0000001f /* Selector field 0 */
268