22#define MAX_MEM_REGISTERS 9
23#define MAX_IO_PORTS 20
29#define PNPinterrupt0 "PNP0000"
30#define PNPinterrupt1 "PNP0001"
31#define PNPinterrupt2 "PNP0002"
32#define PNPinterrupt3 "PNP0003"
33#define PNPExtInt "IBM000D"
37#define PNPtimer0 "PNP0100"
38#define PNPtimer1 "PNP0101"
39#define PNPtimer2 "PNP0102"
43#define PNPdma0 "PNP0200"
44#define PNPdma1 "PNP0201"
45#define PNPdma2 "PNP0202"
49#define PNPCMOS "IBM0009"
52#define PNPL2 "IBM0007"
55#define PNPNVRAM "IBM0008"
58#define PNPPM "IBM0005"
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"
74#define PNPparallel0 "PNP0400"
75#define PNPparallel1 "PNP0401"
76#define PNPepp "IBM001C"
80#define PNPserial0 "PNP0500"
81#define PNPSerial1 "PNP0501"
85#define PNPdisk0 "PNP0600"
86#define PNPdisk1 "PNP0601"
87#define PNPdisk2 "PNP0602"
91#define PNPdiskette0 "PNP0700"
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"
114#define PNPbuses0 "PNP0A00"
115#define PNPbuses1 "PNP0A01"
116#define PNPbuses2 "PNP0A02"
117#define PNPbuses3 "PNP0A03"
118#define PNPbuses4 "PNP0A04"
122#define PNPspeaker0 "PNP0800"
123#define PNPrtc0 "PNP0B00"
124#define PNPpnpbios0 "PNP0C00"
125#define PNPpnpbios1 "PNP0C01"
126#define PNPpnpbios2 "PNP0C02"
127#define PNPpnpbios3 "PNP0C03"
131#define PNPpcmcia0 "PNP0E00"
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"
150#define PNPmodem0 "PNP9000"
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"
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"
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"
185#define PNPopctl "IBM000B"
188#define PNPsp "IBM0011"
189#define PNPLTsp "IBM001E"
190#define PNPLTmsp "IBM001F"
193#define PNPmemctl "IBM000A"
196#define PNPg_assist "IBM0014"
199#define PNPtablet "IBM0019"
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
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
231#define DF_START_TAG 0x30
232#define DF_START_TAG_priority 0x31
233#define DF_END_TAG 0x38
234#define SUBOPTIMAL_CONFIGURATION 0x2
238typedef enum _PnP_BASE_TYPE {
240 MassStorageDevice = 1,
241 NetworkInterfaceController = 2,
242 DisplayController = 3,
243 MultimediaController = 4,
244 MemoryController = 5,
245 BridgeController = 6,
246 CommunicationsDevice = 7,
247 SystemPeripheral = 8,
249 ServiceProcessor = 0x0A,
254typedef enum _PnP_SUB_TYPE {
257 FloppyController = 2,
259 OtherMassStorageController = 0x80,
261 EthernetController = 0,
262 TokenRingController = 1,
264 OtherNetworkController = 0x80,
269 OtherDisplayController = 0x80,
273 OtherMultimediaController = 0x80,
277 OtherMemoryDevice = 0x80,
279 HostProcessorBridge = 0,
282 MicroChannelBridge = 3,
286 OtherBridgeDevice = 0x80,
289 ATCompatibleParallelPort = 1,
290 OtherCommunicationsDevice = 0x80,
292 ProgrammableInterruptController = 0,
301 ServiceProcessorClass1 = 9,
302 ServiceProcessorClass2 = 0xA,
303 ServiceProcessorClass3 = 0xB,
306 OtherSystemPeripheral = 0x80,
308 KeyboardController = 0,
311 TabletController = 3,
312 OtherInputController = 0x80,
314 GeneralMemoryController = 0,
319typedef enum _PnP_INTERFACE {
351 PCIMemoryController = 0,
352 RS6KMemoryController = 1,
354 GeneralHostBridge = 0,
355 GeneralISABridge = 0,
356 GeneralEISABridge = 0,
357 GeneralMCABridge = 0,
358 GeneralPCIBridge = 0,
360 PCIBridgeIndirect = 1,
362 GeneralPCMCIABridge = 0,
363 GeneralVMEBridge = 0,
409 GeneralPowerManagement = 0,
410 EPOWPowerManagement = 1,
422 CHRP_SystemStatusLED = 7,
424 GeneralServiceProcessor = 0,
430 GeneralSystemPlanar = 0,
439 unsigned char VendorID0;
444 unsigned char VendorID1;
448 unsigned char VendorID2;
449 unsigned char VendorID3;
454 unsigned char Serial0;
455 unsigned char Serial1;
456 unsigned char Serial2;
457 unsigned char Serial3;
458 unsigned char Checksum;
461typedef enum _PnPItemName {
465 CompatibleDevice = 3,
475 SmallVendorItem = 14,
479 UnicodeIdentifier = 3,
482 MemoryRangeFixed32 = 6,
488#define tag_type(t) (((t) & 0x80)>>7)
489#define set_tag_type(t,v) (t = (t & 0x7f) | ((v)<<7))
492#define tag_small_item_name(t) (((t) & 0x78)>>3)
493#define set_tag_small_item_name(t,v) (t = (t & 0x07) | ((v)<<3))
496#define tag_small_count(t) ((t) & 0x07)
497#define set_tag_count(t,v) (t = (t & 0x78) | (v))
500#define tag_large_item_name(t) ((t) & 0x7f)
501#define set_tag_large_item_name(t,v) (t = (t | 0x80) | (v))
508 unsigned char Version[2];
513 unsigned char DevId[4];
514 unsigned char Flags[2];
521 unsigned char CompatId[4];
526 unsigned char IRQMask[2];
528 unsigned char IRQInfo;
538 unsigned char DMAMask;
539 unsigned char DMAInfo;
544 unsigned char Priority;
556 unsigned char IOInfo;
557#define ISAAddr16bit 0x01
558 unsigned char RangeMin[2];
559 unsigned char RangeMax[2];
560 unsigned char IOAlign;
566 unsigned char Range[2];
573 unsigned char Data[7];
576 unsigned char PPCData[6];
588 unsigned char Count0;
589 unsigned char Count1;
590 unsigned char Data[9];
596 unsigned char Count0;
597 unsigned char Count1;
598 unsigned char Identifier[1];
604 unsigned char Count0;
605 unsigned char Count1;
606 unsigned char Country0;
607 unsigned char Country1;
608 unsigned char Identifier[1];
614 unsigned char Count0;
615 unsigned char Count1;
617 unsigned char Data[1];
621 unsigned char PPCData[1];
629 unsigned char Count0;
630 unsigned char Count1;
631 unsigned char Data[17];
636 unsigned char Count0;
637 unsigned char Count1;
638 unsigned char Data[9];