summaryrefslogtreecommitdiffstats
path: root/private/ntos/ndis/wd/wdlmireg.h
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