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#define TX_INIT_RATE 16
52#define TX_INIT_MAX_RATE 64
53#define RX_INIT_LATENCY 64
54#define RX_INIT_EARLY_THRESH 64
55#define MIN_RX_EARLY_THRESHF 16
56#define MIN_RX_EARLY_THRESHL 4
57
58#define EEPROMSIZE 0x40
59#define MAX_EEPROMBUSY 1000
60#define VX_LAST_TAG 0xd7
61#define VX_MAX_BOARDS 16
62#define VX_ID_PORT 0x100
63
64
65
66
67#define BASE (EL_BASE_ADDR)
68
69
70
71
72
73#define EEPROM_CMD_RD 0x0080
74#define EEPROM_CMD_WR 0x0040
75#define EEPROM_CMD_ERASE 0x00c0
76#define EEPROM_CMD_EWEN 0x0030
77
78#define EEPROM_BUSY (1<<15)
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94#define EEPROM_NODE_ADDR_0 0x0
95#define EEPROM_NODE_ADDR_1 0x1
96#define EEPROM_NODE_ADDR_2 0x2
97#define EEPROM_PROD_ID 0x3
98#define EEPROM_MFG_ID 0x7
99#define EEPROM_ADDR_CFG 0x8
100#define EEPROM_RESOURCE_CFG 0x9
101#define EEPROM_OEM_ADDR_0 0xa
102#define EEPROM_OEM_ADDR_1 0xb
103#define EEPROM_OEM_ADDR_2 0xc
104#define EEPROM_SOFT_INFO_2 0xf
105
106#define NO_RX_OVN_ANOMALY (1<<5)
107
108
109
110
111
112
113
114
115
116
117#define VX_COMMAND 0x0e
118
119#define VX_STATUS 0x0e
120
121#define VX_WINDOW 0x0f
122
123
124
125
126
127#define VX_W0_EEPROM_DATA 0x0c
128#define VX_W0_EEPROM_COMMAND 0x0a
129#define VX_W0_RESOURCE_CFG 0x08
130#define VX_W0_ADDRESS_CFG 0x06
131#define VX_W0_CONFIG_CTRL 0x04
132
133#define VX_W0_PRODUCT_ID 0x02
134#define VX_W0_MFG_ID 0x00
135
136
137
138
139
140
141#define VX_W1_TX_PIO_WR_2 0x02
142#define VX_W1_TX_PIO_WR_1 0x00
143
144#define VX_W1_FREE_TX 0x0c
145#define VX_W1_TX_STATUS 0x0b
146#define VX_W1_TIMER 0x0a
147#define VX_W1_RX_STATUS 0x08
148#define VX_W1_RX_PIO_RD_2 0x02
149#define VX_W1_RX_PIO_RD_1 0x00
150
151
152
153
154
155#define VX_W2_ADDR_5 0x05
156#define VX_W2_ADDR_4 0x04
157#define VX_W2_ADDR_3 0x03
158#define VX_W2_ADDR_2 0x02
159#define VX_W2_ADDR_1 0x01
160#define VX_W2_ADDR_0 0x00
161
162
163
164
165
166#define VX_W3_INTERNAL_CFG 0x00
167#define VX_W3_RESET_OPT 0x08
168#define VX_W3_FREE_TX 0x0c
169#define VX_W3_FREE_RX 0x0a
170
171
172
173
174
175#define VX_W4_MEDIA_TYPE 0x0a
176#define VX_W4_CTRLR_STATUS 0x08
177#define VX_W4_NET_DIAG 0x06
178#define VX_W4_FIFO_DIAG 0x04
179#define VX_W4_HOST_DIAG 0x02
180#define VX_W4_TX_DIAG 0x00
181
182
183
184
185
186#define VX_W5_READ_0_MASK 0x0c
187#define VX_W5_INTR_MASK 0x0a
188#define VX_W5_RX_FILTER 0x08
189#define VX_W5_RX_EARLY_THRESH 0x06
190#define VX_W5_TX_AVAIL_THRESH 0x02
191#define VX_W5_TX_START_THRESH 0x00
192
193
194
195
196
197#define TX_TOTAL_OK 0x0c
198#define RX_TOTAL_OK 0x0a
199#define TX_DEFERRALS 0x08
200#define RX_FRAMES_OK 0x07
201#define TX_FRAMES_OK 0x06
202#define RX_OVERRUNS 0x05
203#define TX_COLLISIONS 0x04
204#define TX_AFTER_1_COLLISION 0x03
205#define TX_AFTER_X_COLLISIONS 0x02
206#define TX_NO_SQE 0x01
207#define TX_CD_LOST 0x00
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223#define GLOBAL_RESET (unsigned short) 0x0000
224
225#define WINDOW_SELECT (unsigned short) (0x1<<11)
226#define START_TRANSCEIVER (unsigned short) (0x2<<11)
227
228
229
230
231
232#define RX_DISABLE (unsigned short) (0x3<<11)
233
234#define RX_ENABLE (unsigned short) (0x4<<11)
235#define RX_RESET (unsigned short) (0x5<<11)
236#define RX_DISCARD_TOP_PACK (unsigned short) (0x8<<11)
237#define TX_ENABLE (unsigned short) (0x9<<11)
238#define TX_DISABLE (unsigned short) (0xa<<11)
239#define TX_RESET (unsigned short) (0xb<<11)
240#define REQ_INTR (unsigned short) (0xc<<11)
241
242
243
244
245#define ACK_INTR (unsigned short) (0x6800)
246# define C_INTR_LATCH (unsigned short) (ACK_INTR|0x1)
247# define C_CARD_FAILURE (unsigned short) (ACK_INTR|0x2)
248# define C_TX_COMPLETE (unsigned short) (ACK_INTR|0x4)
249# define C_TX_AVAIL (unsigned short) (ACK_INTR|0x8)
250# define C_RX_COMPLETE (unsigned short) (ACK_INTR|0x10)
251# define C_RX_EARLY (unsigned short) (ACK_INTR|0x20)
252# define C_INT_RQD (unsigned short) (ACK_INTR|0x40)
253# define C_UPD_STATS (unsigned short) (ACK_INTR|0x80)
254#define SET_INTR_MASK (unsigned short) (0xe<<11)
255#define SET_RD_0_MASK (unsigned short) (0xf<<11)
256#define SET_RX_FILTER (unsigned short) (0x10<<11)
257# define FIL_INDIVIDUAL (unsigned short) (0x1)
258# define FIL_MULTICAST (unsigned short) (0x02)
259# define FIL_BRDCST (unsigned short) (0x04)
260# define FIL_PROMISC (unsigned short) (0x08)
261#define SET_RX_EARLY_THRESH (unsigned short) (0x11<<11)
262#define SET_TX_AVAIL_THRESH (unsigned short) (0x12<<11)
263#define SET_TX_START_THRESH (unsigned short) (0x13<<11)
264#define STATS_ENABLE (unsigned short) (0x15<<11)
265#define STATS_DISABLE (unsigned short) (0x16<<11)
266#define STOP_TRANSCEIVER (unsigned short) (0x17<<11)
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286#define S_INTR_LATCH (unsigned short) (0x1)
287#define S_CARD_FAILURE (unsigned short) (0x2)
288#define S_TX_COMPLETE (unsigned short) (0x4)
289#define S_TX_AVAIL (unsigned short) (0x8)
290#define S_RX_COMPLETE (unsigned short) (0x10)
291#define S_RX_EARLY (unsigned short) (0x20)
292#define S_INT_RQD (unsigned short) (0x40)
293#define S_UPD_STATS (unsigned short) (0x80)
294#define S_COMMAND_IN_PROGRESS (unsigned short) (0x1000)
295
296#define VX_BUSY_WAIT while (inw(BASE + VX_STATUS) & S_COMMAND_IN_PROGRESS)
297
298
299
300
301
302#define ACF_CONNECTOR_BITS 14
303#define ACF_CONNECTOR_UTP 0
304#define ACF_CONNECTOR_AUI 1
305#define ACF_CONNECTOR_BNC 3
306
307#define INTERNAL_CONNECTOR_BITS 20
308#define INTERNAL_CONNECTOR_MASK 0x01700000
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326#define ERR_INCOMPLETE (unsigned short) (0x8000)
327#define ERR_RX (unsigned short) (0x4000)
328#define ERR_MASK (unsigned short) (0x7800)
329#define ERR_OVERRUN (unsigned short) (0x4000)
330#define ERR_RUNT (unsigned short) (0x5800)
331#define ERR_ALIGNMENT (unsigned short) (0x6000)
332#define ERR_CRC (unsigned short) (0x6800)
333#define ERR_OVERSIZE (unsigned short) (0x4800)
334#define ERR_DRIBBLE (unsigned short) (0x1000)
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353#define TXS_COMPLETE 0x80
354#define TXS_INTR_REQ 0x40
355#define TXS_JABBER 0x20
356#define TXS_UNDERRUN 0x10
357#define TXS_MAX_COLLISION 0x8
358#define TXS_STATUS_OVERFLOW 0x4
359
360#define RS_AUI (1<<5)
361#define RS_BNC (1<<4)
362#define RS_UTP (1<<3)
363#define RS_T4 (1<<0)
364#define RS_TX (1<<1)
365#define RS_FX (1<<2)
366#define RS_MII (1<<6)
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402#define FIFOS_RX_RECEIVING (unsigned short) 0x8000
403#define FIFOS_RX_UNDERRUN (unsigned short) 0x2000
404#define FIFOS_RX_STATUS_OVERRUN (unsigned short) 0x1000
405#define FIFOS_RX_OVERRUN (unsigned short) 0x0800
406#define FIFOS_TX_OVERRUN (unsigned short) 0x0400
407
408
409
410
411#define TAG_ADAPTER 0xd0
412#define ACTIVATE_ADAPTER_TO_CONFIG 0xff
413#define ENABLE_DRQ_IRQ 0x0001
414#define MFG_ID 0x506d
415#define PROD_ID 0x5090
416#define GO_WINDOW(x) outw(WINDOW_SELECT|(x),BASE+VX_COMMAND)
417#define JABBER_GUARD_ENABLE 0x40
418#define LINKBEAT_ENABLE 0x80
419#define ENABLE_UTP (JABBER_GUARD_ENABLE | LINKBEAT_ENABLE)
420#define DISABLE_UTP 0x0
421#define RX_BYTES_MASK (unsigned short) (0x07ff)
422#define RX_ERROR 0x4000
423#define RX_INCOMPLETE 0x8000
424#define TX_INDICATE 1<<15
425#define is_eeprom_busy(b) (inw((b)+VX_W0_EEPROM_COMMAND)&EEPROM_BUSY)
426
427#define VX_IOSIZE 0x20
428
429#define VX_CONNECTORS 8
430
431
432
433
434
435
436