1#ifdef __KERNEL__
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#ifndef _PNP_
19#define _PNP_
20
21#ifndef __ASSEMBLY__
22#define MAX_MEM_REGISTERS 9
23#define MAX_IO_PORTS 20
24#define MAX_IRQS 7
25
26
27
28
29#define PNPinterrupt0 "PNP0000"
30#define PNPinterrupt1 "PNP0001"
31#define PNPinterrupt2 "PNP0002"
32#define PNPinterrupt3 "PNP0003"
33#define PNPExtInt "IBM000D"
34
35
36
37#define PNPtimer0 "PNP0100"
38#define PNPtimer1 "PNP0101"
39#define PNPtimer2 "PNP0102"
40
41
42
43#define PNPdma0 "PNP0200"
44#define PNPdma1 "PNP0201"
45#define PNPdma2 "PNP0202"
46
47
48
49#define PNPCMOS "IBM0009"
50
51
52#define PNPL2 "IBM0007"
53
54
55#define PNPNVRAM "IBM0008"
56
57
58#define PNPPM "IBM0005"
59
60
61
62
63#define PNPkeyboard0 "PNP0300"
64#define PNPkeyboard1 "PNP0301"
65#define PNPkeyboard2 "PNP0302"
66#define PNPkeyboard3 "PNP0303"
67#define PNPkeyboard4 "PNP0304"
68#define PNPkeyboard5 "PNP0305"
69#define PNPkeyboard6 "PNP0306"
70#define PNPkeyboard7 "PNP0307"
71
72
73
74#define PNPparallel0 "PNP0400"
75#define PNPparallel1 "PNP0401"
76#define PNPepp "IBM001C"
77
78
79
80#define PNPserial0 "PNP0500"
81#define PNPSerial1 "PNP0501"
82
83
84
85#define PNPdisk0 "PNP0600"
86#define PNPdisk1 "PNP0601"
87#define PNPdisk2 "PNP0602"
88
89
90
91#define PNPdiskette0 "PNP0700"
92
93
94
95#define PNPdisplay0 "PNP0900"
96#define PNPdisplay1 "PNP0901"
97#define PNPdisplay2 "PNP0902"
98#define PNPdisplay3 "PNP0903"
99#define PNPdisplay4 "PNP0904"
100#define PNPdisplay5 "PNP0905"
101#define PNPdisplay6 "PNP0906"
102#define PNPdisplay7 "PNP0907"
103#define PNPdisplay8 "PNP0908"
104#define PNPdisplay9 "PNP0909"
105#define PNPdisplayA "PNP090A"
106#define PNPdisplayB "PNP090B"
107#define PNPdisplayC "PNP090C"
108#define PNPdisplayD "PNP090D"
109#define PNPdisplayE "PNP090E"
110#define PNPdisplayF "PNP090F"
111
112
113
114#define PNPbuses0 "PNP0A00"
115#define PNPbuses1 "PNP0A01"
116#define PNPbuses2 "PNP0A02"
117#define PNPbuses3 "PNP0A03"
118#define PNPbuses4 "PNP0A04"
119
120
121
122#define PNPspeaker0 "PNP0800"
123#define PNPrtc0 "PNP0B00"
124#define PNPpnpbios0 "PNP0C00"
125#define PNPpnpbios1 "PNP0C01"
126#define PNPpnpbios2 "PNP0C02"
127#define PNPpnpbios3 "PNP0C03"
128
129
130
131#define PNPpcmcia0 "PNP0E00"
132
133
134
135#define PNPmouse0 "PNP0F00"
136#define PNPmouse1 "PNP0F01"
137#define PNPmouse2 "PNP0F02"
138#define PNPmouse3 "PNP0F03"
139#define PNPmouse4 "PNP0F04"
140#define PNPmouse5 "PNP0F05"
141#define PNPmouse6 "PNP0F06"
142#define PNPmouse7 "PNP0F07"
143#define PNPmouse8 "PNP0F08"
144#define PNPmouse9 "PNP0F09"
145#define PNPmouseA "PNP0F0A"
146#define PNPmouseB "PNP0F0B"
147
148
149
150#define PNPmodem0 "PNP9000"
151
152
153
154#define PNPnetworkC9 "PNP80C9"
155#define PNPnetworkCA "PNP80CA"
156#define PNPnetworkCB "PNP80CB"
157#define PNPnetworkCC "PNP80CC"
158#define PNPnetwork27 "PNP8327"
159#define PNPnetworket "IBM0010"
160#define PNPneteisaet "IBM2001"
161#define PNPAMD79C970 "IBM0016"
162
163
164
165#define PNPscsi0 "PNPA000"
166#define PNPscsi1 "PNPA001"
167#define PNPscsi2 "PNPA002"
168#define PNPscsi3 "PNPA003"
169#define PNPscsiF "IBM000F"
170#define PNPscsi825 "IBM001B"
171#define PNPscsi875 "IBM0018"
172
173
174
175#define PNPmm0 "PNPB000"
176#define PNPmm1 "PNPB001"
177#define PNPmmF "IBM000E"
178#define PNPv7310 "IBM0015"
179#define PNPmm4232 "IBM0017"
180#define PNPpmsyn "IBM001D"
181#define PNPgp4232 "IBM0012"
182#define PNPmidi4232 "IBM0013"
183
184
185#define PNPopctl "IBM000B"
186
187
188#define PNPsp "IBM0011"
189#define PNPLTsp "IBM001E"
190#define PNPLTmsp "IBM001F"
191
192
193#define PNPmemctl "IBM000A"
194
195
196#define PNPg_assist "IBM0014"
197
198
199#define PNPtablet "IBM0019"
200
201
202
203#define S1_Packet 0x0A
204#define S2_Packet 0x15
205#define S2_Packet_flags 0x16
206#define S3_Packet 0x1C
207#define S4_Packet 0x22
208#define S4_Packet_flags 0x23
209#define S5_Packet 0x2A
210#define S6_Packet 0x30
211#define S6_Packet_priority 0x31
212#define S7_Packet 0x38
213#define S8_Packet 0x47
214#define S9_Packet_fixed 0x4B
215#define S14_Packet 0x71
216#define S15_Packet 0x78
217#define S15_Packet_checksum 0x79
218#define L1_Packet 0x81
219#define L1_Shadow 0x20
220#define L1_32bit_mem 0x18
221#define L1_8_16bit_mem 0x10
222#define L1_Decode_Hi 0x04
223#define L1_Cache 0x02
224#define L1_Writeable 0x01
225#define L2_Packet 0x82
226#define L3_Packet 0x83
227#define L4_Packet 0x84
228#define L5_Packet 0x85
229#define L6_Packet 0x86
230#define END_TAG 0x78
231#define DF_START_TAG 0x30
232#define DF_START_TAG_priority 0x31
233#define DF_END_TAG 0x38
234#define SUBOPTIMAL_CONFIGURATION 0x2
235
236
237
238typedef enum _PnP_BASE_TYPE {
239 Reserved = 0,
240 MassStorageDevice = 1,
241 NetworkInterfaceController = 2,
242 DisplayController = 3,
243 MultimediaController = 4,
244 MemoryController = 5,
245 BridgeController = 6,
246 CommunicationsDevice = 7,
247 SystemPeripheral = 8,
248 InputDevice = 9,
249 ServiceProcessor = 0x0A,
250 } PnP_BASE_TYPE;
251
252
253
254typedef enum _PnP_SUB_TYPE {
255 SCSIController = 0,
256 IDEController = 1,
257 FloppyController = 2,
258 IPIController = 3,
259 OtherMassStorageController = 0x80,
260
261 EthernetController = 0,
262 TokenRingController = 1,
263 FDDIController = 2,
264 OtherNetworkController = 0x80,
265
266 VGAController= 0,
267 SVGAController= 1,
268 XGAController= 2,
269 OtherDisplayController = 0x80,
270
271 VideoController = 0,
272 AudioController = 1,
273 OtherMultimediaController = 0x80,
274
275 RAM = 0,
276 FLASH = 1,
277 OtherMemoryDevice = 0x80,
278
279 HostProcessorBridge = 0,
280 ISABridge = 1,
281 EISABridge = 2,
282 MicroChannelBridge = 3,
283 PCIBridge = 4,
284 PCMCIABridge = 5,
285 VMEBridge = 6,
286 OtherBridgeDevice = 0x80,
287
288 RS232Device = 0,
289 ATCompatibleParallelPort = 1,
290 OtherCommunicationsDevice = 0x80,
291
292 ProgrammableInterruptController = 0,
293 DMAController = 1,
294 SystemTimer = 2,
295 RealTimeClock = 3,
296 L2Cache = 4,
297 NVRAM = 5,
298 PowerManagement = 6,
299 CMOS = 7,
300 OperatorPanel = 8,
301 ServiceProcessorClass1 = 9,
302 ServiceProcessorClass2 = 0xA,
303 ServiceProcessorClass3 = 0xB,
304 GraphicAssist = 0xC,
305 SystemPlanar = 0xF,
306 OtherSystemPeripheral = 0x80,
307
308 KeyboardController = 0,
309 Digitizer = 1,
310 MouseController = 2,
311 TabletController = 3,
312 OtherInputController = 0x80,
313
314 GeneralMemoryController = 0,
315 } PnP_SUB_TYPE;
316
317
318
319typedef enum _PnP_INTERFACE {
320 General = 0,
321 GeneralSCSI = 0,
322 GeneralIDE = 0,
323 ATACompatible = 1,
324
325 GeneralFloppy = 0,
326 Compatible765 = 1,
327 NS398_Floppy = 2,
328
329
330 NS26E_Floppy = 3,
331 NS15C_Floppy = 4,
332 NS2E_Floppy = 5,
333 CHRP_Floppy = 6,
334
335 GeneralIPI = 0,
336
337 GeneralEther = 0,
338 GeneralToken = 0,
339 GeneralFDDI = 0,
340
341 GeneralVGA = 0,
342 GeneralSVGA = 0,
343 GeneralXGA = 0,
344
345 GeneralVideo = 0,
346 GeneralAudio = 0,
347 CS4232Audio = 1,
348
349 GeneralRAM = 0,
350 GeneralFLASH = 0,
351 PCIMemoryController = 0,
352 RS6KMemoryController = 1,
353
354 GeneralHostBridge = 0,
355 GeneralISABridge = 0,
356 GeneralEISABridge = 0,
357 GeneralMCABridge = 0,
358 GeneralPCIBridge = 0,
359 PCIBridgeDirect = 0,
360 PCIBridgeIndirect = 1,
361 PCIBridgeRS6K = 2,
362 GeneralPCMCIABridge = 0,
363 GeneralVMEBridge = 0,
364
365 GeneralRS232 = 0,
366 COMx = 1,
367 Compatible16450 = 2,
368 Compatible16550 = 3,
369 NS398SerPort = 4,
370
371
372 NS26ESerPort = 5,
373 NS15CSerPort = 6,
374 NS2ESerPort = 7,
375
376 GeneralParPort = 0,
377 LPTx = 1,
378 NS398ParPort = 2,
379
380
381 NS26EParPort = 3,
382 NS15CParPort = 4,
383 NS2EParPort = 5,
384
385 GeneralPIC = 0,
386 ISA_PIC = 1,
387 EISA_PIC = 2,
388 MPIC = 3,
389 RS6K_PIC = 4,
390
391 GeneralDMA = 0,
392 ISA_DMA = 1,
393 EISA_DMA = 2,
394
395 GeneralTimer = 0,
396 ISA_Timer = 1,
397 EISA_Timer = 2,
398 GeneralRTC = 0,
399 ISA_RTC = 1,
400
401 StoreThruOnly = 1,
402 StoreInEnabled = 2,
403 RS6KL2Cache = 3,
404
405 IndirectNVRAM = 0,
406 DirectNVRAM = 1,
407 IndirectNVRAM24 = 2,
408
409 GeneralPowerManagement = 0,
410 EPOWPowerManagement = 1,
411 PowerControl = 2,
412
413 GeneralCMOS = 0,
414
415 GeneralOPPanel = 0,
416 HarddiskLight = 1,
417 CDROMLight = 2,
418 PowerLight = 3,
419 KeyLock = 4,
420 ANDisplay = 5,
421 SystemStatusLED = 6,
422 CHRP_SystemStatusLED = 7,
423
424 GeneralServiceProcessor = 0,
425
426 TransferData = 1,
427 IGMC32 = 2,
428 IGMC64 = 3,
429
430 GeneralSystemPlanar = 0,
431
432 } PnP_INTERFACE;
433
434
435
436
437
438typedef struct _SERIAL_ID {
439 unsigned char VendorID0;
440
441
442
443
444 unsigned char VendorID1;
445
446
447
448 unsigned char VendorID2;
449 unsigned char VendorID3;
450
451
452
453
454 unsigned char Serial0;
455 unsigned char Serial1;
456 unsigned char Serial2;
457 unsigned char Serial3;
458 unsigned char Checksum;
459 } SERIAL_ID;
460
461typedef enum _PnPItemName {
462 Unused = 0,
463 PnPVersion = 1,
464 LogicalDevice = 2,
465 CompatibleDevice = 3,
466 IRQFormat = 4,
467 DMAFormat = 5,
468 StartDepFunc = 6,
469 EndDepFunc = 7,
470 IOPort = 8,
471 FixedIOPort = 9,
472 Res1 = 10,
473 Res2 = 11,
474 Res3 = 12,
475 SmallVendorItem = 14,
476 EndTag = 15,
477 MemoryRange = 1,
478 ANSIIdentifier = 2,
479 UnicodeIdentifier = 3,
480 LargeVendorItem = 4,
481 MemoryRange32 = 5,
482 MemoryRangeFixed32 = 6,
483 } PnPItemName;
484
485
486
487
488#define tag_type(t) (((t) & 0x80)>>7)
489#define set_tag_type(t,v) (t = (t & 0x7f) | ((v)<<7))
490
491
492#define tag_small_item_name(t) (((t) & 0x78)>>3)
493#define set_tag_small_item_name(t,v) (t = (t & 0x07) | ((v)<<3))
494
495
496#define tag_small_count(t) ((t) & 0x07)
497#define set_tag_count(t,v) (t = (t & 0x78) | (v))
498
499
500#define tag_large_item_name(t) ((t) & 0x7f)
501#define set_tag_large_item_name(t,v) (t = (t | 0x80) | (v))
502
503
504
505typedef union _PnP_TAG_PACKET {
506 struct _S1_Pack{
507 unsigned char Tag;
508 unsigned char Version[2];
509 } S1_Pack;
510
511 struct _S2_Pack{
512 unsigned char Tag;
513 unsigned char DevId[4];
514 unsigned char Flags[2];
515
516
517 } S2_Pack;
518
519 struct _S3_Pack{
520 unsigned char Tag;
521 unsigned char CompatId[4];
522 } S3_Pack;
523
524 struct _S4_Pack{
525 unsigned char Tag;
526 unsigned char IRQMask[2];
527
528 unsigned char IRQInfo;
529
530
531
532
533
534 } S4_Pack;
535
536 struct _S5_Pack{
537 unsigned char Tag;
538 unsigned char DMAMask;
539 unsigned char DMAInfo;
540 } S5_Pack;
541
542 struct _S6_Pack{
543 unsigned char Tag;
544 unsigned char Priority;
545
546
547
548 } S6_Pack;
549
550 struct _S7_Pack{
551 unsigned char Tag;
552 } S7_Pack;
553
554 struct _S8_Pack{
555 unsigned char Tag;
556 unsigned char IOInfo;
557#define ISAAddr16bit 0x01
558 unsigned char RangeMin[2];
559 unsigned char RangeMax[2];
560 unsigned char IOAlign;
561 unsigned char IONum;
562 } S8_Pack;
563
564 struct _S9_Pack{
565 unsigned char Tag;
566 unsigned char Range[2];
567 unsigned char IONum;
568 } S9_Pack;
569
570 struct _S14_Pack{
571 unsigned char Tag;
572 union _S14_Data{
573 unsigned char Data[7];
574 struct _S14_PPCPack{
575 unsigned char Type;
576 unsigned char PPCData[6];
577 } S14_PPCPack;
578 } S14_Data;
579 } S14_Pack;
580
581 struct _S15_Pack{
582 unsigned char Tag;
583 unsigned char Check;
584 } S15_Pack;
585
586 struct _L1_Pack{
587 unsigned char Tag;
588 unsigned char Count0;
589 unsigned char Count1;
590 unsigned char Data[9];
591
592 } L1_Pack;
593
594 struct _L2_Pack{
595 unsigned char Tag;
596 unsigned char Count0;
597 unsigned char Count1;
598 unsigned char Identifier[1];
599
600 } L2_Pack;
601
602 struct _L3_Pack{
603 unsigned char Tag;
604 unsigned char Count0;
605 unsigned char Count1;
606 unsigned char Country0;
607 unsigned char Country1;
608 unsigned char Identifier[1];
609
610 } L3_Pack;
611
612 struct _L4_Pack{
613 unsigned char Tag;
614 unsigned char Count0;
615 unsigned char Count1;
616 union _L4_Data{
617 unsigned char Data[1];
618
619 struct _L4_PPCPack{
620 unsigned char Type;
621 unsigned char PPCData[1];
622
623 } L4_PPCPack;
624 } L4_Data;
625 } L4_Pack;
626
627 struct _L5_Pack{
628 unsigned char Tag;
629 unsigned char Count0;
630 unsigned char Count1;
631 unsigned char Data[17];
632 } L5_Pack;
633
634 struct _L6_Pack{
635 unsigned char Tag;
636 unsigned char Count0;
637 unsigned char Count1;
638 unsigned char Data[9];
639 } L6_Pack;
640
641 } PnP_TAG_PACKET;
642
643#endif
644#endif
645#endif
646