blob: f20b345fb10c5b24dedbf4f7c402d9b83f749c6f (
plain) (
blame)
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
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
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
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
|
/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
wdlmireg.h
Abstract:
Register definitions and values for the many cards
Author:
Sean Selitrennikoff (seanse) 15-Jan-92
Environment:
Kernel mode, FSD
Revision History:
--*/
//
// Microchannel Bus registers
//
#define CHANNEL_SELECT_REG 0x96
#define LSB_ID_POS_REG 0x100
#define MSB_ID_POS_REG 0x101
#define IO_BASE_POS_REG 0x102
#define RAM_BASE_POS_REG 0x103
#define BIOS_ROM_POS_REG 0x104
#define IRQ_POS_REG 0x105
//
// Microchannel 83c593 Registers.
//
#define MEMORY_ENABLE_RESET_REG 0x00
#define EEPROM_CONTROL_REG 0x01
#define BOARD_ID_REG0 0x02
#define BOARD_ID_REG1 0x03
#define INTERRUPT_CONTROL_AND_STATUS_REG 0x04
#define COMMUNICATION_CONTROL_REG 0x05
#define FIFO_ENTRY_EXIT_REG 0x06
#define GENERAL_PURPOSE_REG 0x07
//
// Microchannel 83c594 Registers
#define REVISION_REG 0x07
//
// AT Bus Registers
//
//
// 83c583 registers
//
#define BASE_REG 0x00
#define MEMORY_SELECT_REG 0x00 // MSR
#define INTERFACE_CONFIG_REG 0x01 // ICR
#define BUS_SIZE_REG 0x01 // BSR (read only)
#define IO_ADDRESS_REG 0x02 // IAR
#define BIOS_ROM_ADDRESS_REG 0x03 // BIO (583, 584)
#define EEPROM_ADDRESS_REG 0x03 // EAR (584)
#define INTERRUPT_REQUEST_REG 0x04 // IRR
#define GENERAL_PURPOSE_REG1 0x05 // GP1
#define LA_ADDRESS_REG 0x05 // LAAR (write only)
#define IO_DATA_LATCH_REG 0x06 // IOD (583)
#define INITIALIZE_JUMPER_REG 0x06 // IJR (584)
#define GENERAL_PURPOSE_REG2 0x07 // GP2
#define LAN_ADDRESS_REG 0x08 // LAR
#define LAN_ADDRESS_REG2 0x09 // LAR2
#define LAN_ADDRESS_REG3 0x0A // LAR3
#define LAN_ADDRESS_REG4 0x0B // LAR4
#define LAN_ADDRESS_REG5 0x0C // LAR5
#define LAN_ADDRESS_REG6 0x0D // LAR6
#define LAN_ADDRESS_REG7 0x0E // LAR7
#define LAN_ADDRESS_REG8 0x0F // LAR8
//
// 8390 Registers
//
#define OFF_8390_REG 0x10 // offset of the 8390 chip
// page 0, reading
#define COMMAND_REG OFF_8390_REG + 0x00
#define DMA_ADDRESS_0_REG OFF_8390_REG + 0x01
#define DMA_ADDRESS_1_REG OFF_8390_REG + 0x02
#define BOUNDARY_REG OFF_8390_REG + 0x03
#define TRANSMIT_STATUS_REG OFF_8390_REG + 0x04
#define NUM_COLLISIONS_REG OFF_8390_REG + 0x05
#define FIFO_REG OFF_8390_REG + 0x06
#define INTERRUPT_STATUS_REG OFF_8390_REG + 0x07
#define REMOTE_DMA_ADDRESS_0_REG OFF_8390_REG + 0x08
#define REMOTE_DMA_ADDRESS_1_REG OFF_8390_REG + 0x09
#define RECEIVE_STATUS_REG OFF_8390_REG + 0x0C
#define ALIGNMENT_ERROR_REG OFF_8390_REG + 0x0D
#define CRC_ERROR_REG OFF_8390_REG + 0x0E
#define MISSED_PACKET_REG OFF_8390_REG + 0x0F
// page 0, writing
#define COMMAND_REG OFF_8390_REG + 0x00
#define PAGE_START_REG OFF_8390_REG + 0x01
#define PAGE_STOP_REG OFF_8390_REG + 0x02
#define TRANSMIT_PAGE_START_REG OFF_8390_REG + 0x04
#define TRANSMIT_BYTE_COUNT_REG0 OFF_8390_REG + 0x05
#define TRANSMIT_BYTE_COUNT_REG1 OFF_8390_REG + 0x06
#define REMOTE_START_ADDRESS_REG0 OFF_8390_REG + 0x08
#define REMOTE_START_ADDRESS_REG1 OFF_8390_REG + 0x09
#define REMOTE_BYTE_COUNT_REG0 OFF_8390_REG + 0x0A
#define REMOTE_BYTE_COUNT_REG1 OFF_8390_REG + 0x0B
#define RECEIVE_CONFIG_REG OFF_8390_REG + 0x0C
#define TRANSMIT_CONFIG_REG OFF_8390_REG + 0x0D
#define DATA_CONFIG_REG OFF_8390_REG + 0x0E
#define INTERRUPT_MASK_REG OFF_8390_REG + 0x0F
// page 1, reading and writing
#define CONTROL_REG OFF_8390_REG + 0x00
#define PHYSICAL_ADDRESS_REG0 OFF_8390_REG + 0x01
#define PHYSICAL_ADDRESS_REG1 OFF_8390_REG + 0x02
#define PHYSICAL_ADDRESS_REG2 OFF_8390_REG + 0x03
#define PHYSICAL_ADDRESS_REG3 OFF_8390_REG + 0x04
#define PHYSICAL_ADDRESS_REG4 OFF_8390_REG + 0x05
#define PHYSICAL_ADDRESS_REG5 OFF_8390_REG + 0x06
#define CURRENT_BUFFER_REG OFF_8390_REG + 0x07
#define MULTICAST_ADDRESS_REG0 OFF_8390_REG + 0x08
#define MULTICAST_ADDRESS_REG1 OFF_8390_REG + 0x09
#define MULTICAST_ADDRESS_REG2 OFF_8390_REG + 0x0A
#define MULTICAST_ADDRESS_REG3 OFF_8390_REG + 0x0B
#define MULTICAST_ADDRESS_REG4 OFF_8390_REG + 0x0C
#define MULTICAST_ADDRESS_REG5 OFF_8390_REG + 0x0D
#define MULTICAST_ADDRESS_REG6 OFF_8390_REG + 0x0E
#define MULTICAST_ADDRESS_REG7 OFF_8390_REG + 0x0F
// page 2, reading and writing
#define BLOCK_ADDRESS_REG OFF_8390_REG + 0x06
#define ENHANCEMENT_REG OFF_8390_REG + 0x07
//
// Register Bit Definitions
//
//
// Microchannel Registers
//
#define NUMBER_OF_CHANNELS 8
#define DISABLE_BIOS 0x02
#define DISABLE_SETUP 0x00
#define SELECT_CHANNEL_1 0x08
#define ADAPTER_ID_MSB 0x6F
#define ADAPTER_ID_LSB0 0xC0
#define ADAPTER_ID_LSB1 0xC1
#define ADAPTER_ID_LSB2 0xC2
#define ADAPTER_ID_LSB3 0xC3
#define ADAPTER_ID_LSB4 0xC4
#define ADAPTER_ID_LSB5 0xC5
#define ADAPTER_ID_LSB6 0xC6
//
// BISTRO ID BYTES
//
#define BISTRO_ID_MSB 0xEF
#define BISTRO_ID_LSB 0xE5
#define ALT_BISTRO_ID_LSB 0xD5
//
// COMMUNICATION_CONTROL_REG
//
#define CCR_INTERRUPT_ENABLE 0x04
//
// AT bus Registers
//
//
// MSR
//
#define RESET 0x80 // 1 == reset
#define MEMORY_ENABLE 0x40 // 1 == enabled
#define ADDRESS_BIT18 0x20 // Top bits for shared memory address
#define ADDRESS_BIT17 0x10 // Assume bit 19 == 1
#define ADDRESS_BIT16 0x08
#define ADDRESS_BIT15 0x04
#define ADDRESS_BIT14 0x02
#define ADDRESS_BIT13 0x01
//
// ICR
//
#define STORE 0x80 // Store into EEProm
#define RECALL 0x40 // Recall from EEProm
#define RECALL_ALL_BUT_IO 0x20 // Recall all but IO and LAN Address
#define RECALL_LAN 0x10 // Recall LAN Address
#define MEMORY_SIZE 0x08 // Shared Memory size
#define DMA_ENABLE 0x04 // DMA Enable (583)
#define IR2 0x04 // IRQ index MSB (584)
#define IO_PORT_ENABLE 0x02 // (583)
#define OTHER 0x02 // (584)
#define WORD_TRANSFER_SELECT 0x01
//
// BIO
//
#define BIOS_SIZE_BIT1 0x80
#define BIOS_SIZE_BIT0 0x40
#define BIOS_ROM_ADDRESS_BIT18 0x20
#define BIOS_ROM_ADDRESS_BIT17 0x10
#define BIOS_ROM_ADDRESS_BIT16 0x08
#define BIOS_ROM_ADDRESS_BIT15 0x04
#define BIOS_ROM_ADDRESS_BIT14 0x02
#define W8003_INTERRUPT 0x01
//
// IRR
//
#define INTERRUPT_ENABLE 0x80
#define INTERRUPT_REQUEST_BIT1 0x40
#define INTERRUPT_REQUEST_BIT0 0x20
#define ALTERNATE_MODE 0x10
#define ALTERNATE_INTERRUPT 0x08
#define BIOS_WAIT_STATE_BIT1 0x04
#define BIOS_WAIT_STATE_BIT0 0x02
#define ZERO_WAIT_STATE_ENABLE 0x01
//
// BSR
//
#define BUS_16_BIT 0x01
//
// LAAR
//
#define MEMORY_16BIT_ENABLE 0x80
#define LAN_16BIT_ENABLE 0x40
#define LAAR_ZERO_WAIT_STATE 0x20
#define LAN_ADDRESS_BIT23 0x10
#define LAN_ADDRESS_BIT22 0x08
#define LAN_ADDRESS_BIT21 0x04
#define LAN_ADDRESS_BIT20 0x02
#define LAN_ADDRESS_BIT19 0x01
#define LAAR_MASK 0x1F
#define INIT_LAAR_VALUE 0x01 // To set bit 19 to 1
//
// 8390 Register Bit definitions
//
//
// COMMAND_REG
//
#define STOP 0x01 // software reset
#define START 0x02
#define TRANSMIT_PACKET 0x04
#define READ_0 0x08
#define READ_1 0x10
#define READ_2 0x20
#define REMOTE_READ 0x08 // Remote DMA Command
#define REMOTE_WRITE 0x10 // Remote DMA Command
#define REMOTE_SEND_PACKET 0x18 // Remote DMA Command
#define REMOTE_ABORT_COMPLETE 0x20 // Remote DMA Command
#define PAGE_SELECT_0 0x00
#define PAGE_SELECT_1 0x40
#define PAGE_SELECT_2 0x80
#define PAGE_SELECT_0_START 0x22
#define PAGE_SELECT_1_START 0x62
#define PAGE_SELECT_2_START 0xA2
//
// INTERRUPT_STATUS_REG
//
#define PACKET_RECEIVED_NO_ERROR 0x01
#define PACKET_TRANSMITTED_NO_ERROR 0x02
#define RECEIVE_ERROR 0x04
#define TRANSMIT_ERROR 0x08
#define OVERWRITE_WARNING 0x10
#define ISR_COUNTER_OVERFLOW 0x20
#define REMOTE_DMA_COMPLETE 0x40
#define RESET_DONE 0x80
//
// INTERRUPT_MASK_REG
//
#define PACKET_RECEIVE_ENABLE 0x01
#define PACKET_TRANSMIT_ENABLE 0x02
#define RECEIVE_ERROR_ENABLE 0x04
#define TRANSMIT_ERROR_ENABLE 0x08
#define OVERWRITE_WARNING_ENABLE 0x10
#define COUNTER_OVERFLOW_ENABLE 0x20
#define REMOTE_DMA_COMPLETE_ENABLE 0x40
//
// DATA_CONFIG_REG
//
#define WORD_TRANSFER_SELECT 0x01
#define BYTE_ORDER_SELECT 0x02
#define LONG_ADDRESS_SELECT 0x04
#define BURST_DMA_SELECT 0x08
#define AUTO_INITIALIZE_REMOTE 0x10
#define RECEIVE_FIFO_THRESHOLD_2 0x00
#define RECEIVE_FIFO_THRESHOLD_4 0x20
#define RECEIVE_FIFO_THRESHOLD_8 0x40
#define RECEIVE_FIFO_THRESHOLD_12 0x80
//
// TRANSMIT_CONFIG_REG
//
#define MANUAL_CRC_GENERATION 0x01
#define LOOPBACK_MODE1 0x02 // mode 1, no loopback
#define LOOPBACK_MODE2 0x04 // mode 2, loopback
#define LOOPBACK_MODE3 0x06 // mode 3, no loopback
#define AUTO_TRANSMIT_DISABLE 0x08
#define COLLISION_OFFSET_ENABLE 0x10
//
// TRANSMIT_STATUS_REG
//
#define TRANSMIT_NO_ERROR 0x01
#define TRANSMIT_COLLISION 0x04
#define TRANSMIT_ABORT 0x08
#define TRANSMIT_LOST_CARRIER 0x10
#define TRANSMIT_FIFO_UNDERRUN 0x20
#define TRANSMIT_HEARTBEAT 0x40
#define TRANSMIT_OUT_OF_WINDOW 0x80
//
// RECEIVE_CONFIG_REG
//
#define SAVE_ERROR_PACKETS 0x01
#define SAVE_RUNT_PACKETS 0x02
#define SAVE_BROADCAST_PACKETS 0x04
#define SAVE_MULTICAST_PACKETS 0x08
#define PROMISCUOUS_MODE 0x10
#define MONITOR_MODE 0x20
//
// RECEIVE_STATUS_REG
#define RECEIVE_NO_ERROR 0x01
#define RECEIVE_CRC_ERROR 0x02
#define RECEIVE_ALIGNMENT_ERROR 0x04
#define RECEIVE_FIFO_UNDERRUN 0x08
#define RECEIVE_MISSED_PACKET 0x10
#define RECEIVE_PHYSICAL_ADDRESS 0x20
#define RECEIVE_DISABLED 0x40
#define RECEIVE_DEFERRING 0x80
|