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