]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Efi/Include/EfiDevicePath.h
Fixes for the ARM port of SCTs
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Include / EfiDevicePath.h
1 /*++
2
3 Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 EfiDevicePath.h
15
16 Abstract:
17
18 EFI Device Path definitions
19
20 --*/
21
22 #ifndef _EFI_DEVICE_PATH_H
23 #define _EFI_DEVICE_PATH_H
24
25
26
27 #pragma pack(1)
28
29
30 //
31 // Device Path defines and macros
32 //
33 #define EFI_DP_TYPE_MASK 0x7F
34 #define EFI_DP_TYPE_UNPACKED 0x80
35 #define END_DEVICE_PATH_TYPE 0x7f
36 #define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xff
37 #define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01
38 #define END_DEVICE_PATH_LENGTH (sizeof(EFI_DEVICE_PATH_PROTOCOL))
39
40 #define DP_IS_END_TYPE(a)
41 #define DP_IS_END_SUBTYPE(a) ( ((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
42
43 #define DevicePathType(a) ( ((a)->Type) & EFI_DP_TYPE_MASK )
44 #define DevicePathSubType(a) ( (a)->SubType )
45 #define DevicePathNodeLength(a) ( ((a)->Length[0]) | ((a)->Length[1] << 8) )
46 #define NextDevicePathNode(a) ( (EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a)))
47 #define IsDevicePathEndType(a) ( DevicePathType(a) == END_DEVICE_PATH_TYPE )
48 #define IsDevicePathEndSubType(a) ( (a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
49 #define IsDevicePathEnd(a) ( IsDevicePathEndType(a) && IsDevicePathEndSubType(a) )
50 #define IsDevicePathUnpacked(a) ( (a)->Type & EFI_DP_TYPE_UNPACKED )
51
52
53 #define SetDevicePathNodeLength(a,l) { \
54 (a)->Length[0] = (UINT8) (l); \
55 (a)->Length[1] = (UINT8) ((l) >> 8); \
56 }
57
58 #define SetDevicePathEndNode(a) { \
59 (a)->Type = END_DEVICE_PATH_TYPE; \
60 (a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE; \
61 (a)->Length[0] = sizeof(EFI_DEVICE_PATH_PROTOCOL); \
62 (a)->Length[1] = 0; \
63 }
64
65 //
66 // Hardware Device Paths
67 //
68 #define HARDWARE_DEVICE_PATH 0x01
69
70 #define HW_PCI_DP 0x01
71 typedef struct {
72 EFI_DEVICE_PATH_PROTOCOL Header;
73 UINT8 Function;
74 UINT8 Device;
75 } PCI_DEVICE_PATH;
76
77 #define HW_PCCARD_DP 0x02
78 typedef struct {
79 EFI_DEVICE_PATH_PROTOCOL Header;
80 UINT8 FunctionNumber;
81 } PCCARD_DEVICE_PATH;
82
83 #define HW_MEMMAP_DP 0x03
84 typedef struct {
85 EFI_DEVICE_PATH_PROTOCOL Header;
86 UINT32 MemoryType;
87 EFI_PHYSICAL_ADDRESS StartingAddress;
88 EFI_PHYSICAL_ADDRESS EndingAddress;
89 } MEMMAP_DEVICE_PATH;
90
91 #define HW_VENDOR_DP 0x04
92 typedef struct {
93 EFI_DEVICE_PATH_PROTOCOL Header;
94 EFI_GUID Guid;
95 } VENDOR_DEVICE_PATH;
96
97 #define HW_CONTROLLER_DP 0x05
98 typedef struct {
99 EFI_DEVICE_PATH_PROTOCOL Header;
100 UINT32 Controller;
101 } CONTROLLER_DEVICE_PATH;
102
103 //
104 // ACPI Device Paths
105 //
106 #define ACPI_DEVICE_PATH 0x02
107
108 #define ACPI_DP 0x01
109 typedef struct {
110 EFI_DEVICE_PATH_PROTOCOL Header;
111 UINT32 HID;
112 UINT32 UID;
113 } ACPI_HID_DEVICE_PATH;
114
115 #define ACPI_EXTENDED_DP 0x02
116 typedef struct {
117 EFI_DEVICE_PATH_PROTOCOL Header;
118 UINT32 HID;
119 UINT32 UID;
120 UINT32 CID;
121 //
122 // Optional variable length _HIDSTR
123 // Optional variable length _UIDSTR
124 //
125 } ACPI_EXTENDED_HID_DEVICE_PATH;
126
127 #define ACPI_ADR_DP 0x03
128
129 typedef struct {
130 EFI_DEVICE_PATH_PROTOCOL Header;
131 UINT32 ADR;
132 } ACPI_ADR_DEVICE_PATH;
133
134 #define ACPI_ADR_DISPLAY_TYPE_OTHER 0
135 #define ACPI_ADR_DISPLAY_TYPE_VGA 1
136 #define ACPI_ADR_DISPLAY_TYPE_TV 2
137 #define ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL 3
138 #define ACPI_ADR_DISPLAY_TYPE_INTERNAL_DIGITAL 4
139
140 #define ACPI_DISPLAY_ADR(_DeviceIdScheme, _HeadId, _NonVgaOutput, _BiosCanDetect, _VendorInfo, _Type, _Port, _Index) \
141 ((UINT32) ( (((_DeviceIdScheme) & 0x1) << 31) | \
142 (((_HeadId) & 0x7) << 18) | \
143 (((_NonVgaOutput) & 0x1) << 17) | \
144 (((_BiosCanDetect) & 0x1) << 16) | \
145 (((_VendorInfo) & 0xf) << 12) | \
146 (((_Type) & 0xf) << 8) | \
147 (((_Port) & 0xf) << 4) | \
148 ((_Index) & 0xf) ))
149
150 //
151 // EISA ID Macro
152 // EISA ID Definition 32-bits
153 // bits[15:0] - three character compressed ASCII EISA ID.
154 // bits[31:16] - binary number
155 // Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
156 //
157 #define PNP_EISA_ID_CONST 0x41d0
158 #define EISA_ID(_Name, _Num) ((UINT32) ((_Name) | (_Num) << 16))
159 #define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
160 #define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
161
162 #define PNP_EISA_ID_MASK 0xffff
163 #define EISA_ID_TO_NUM(_Id) ((_Id) >> 16)
164
165 //
166 // Messaging Device Paths
167 //
168 #define MESSAGING_DEVICE_PATH 0x03
169
170 #define MSG_ATAPI_DP 0x01
171 typedef struct {
172 EFI_DEVICE_PATH_PROTOCOL Header;
173 UINT8 PrimarySecondary;
174 UINT8 SlaveMaster;
175 UINT16 Lun;
176 } ATAPI_DEVICE_PATH;
177
178 #define MSG_SCSI_DP 0x02
179 typedef struct {
180 EFI_DEVICE_PATH_PROTOCOL Header;
181 UINT16 Pun;
182 UINT16 Lun;
183 } SCSI_DEVICE_PATH;
184
185 #define MSG_FIBRECHANNEL_DP 0x03
186 typedef struct {
187 EFI_DEVICE_PATH_PROTOCOL Header;
188 UINT32 Reserved;
189 UINT64 WWN;
190 UINT64 Lun;
191 } FIBRECHANNEL_DEVICE_PATH;
192
193 #define MSG_1394_DP 0x04
194 typedef struct {
195 EFI_DEVICE_PATH_PROTOCOL Header;
196 UINT32 Reserved;
197 UINT64 Guid;
198 } F1394_DEVICE_PATH;
199
200 #define MSG_USB_DP 0x05
201 typedef struct {
202 EFI_DEVICE_PATH_PROTOCOL Header;
203 UINT8 ParentPortNumber;
204 UINT8 InterfaceNumber;
205 } USB_DEVICE_PATH;
206
207 #define MSG_USB_CLASS_DP 0x0f
208 typedef struct {
209 EFI_DEVICE_PATH_PROTOCOL Header;
210 UINT16 VendorId;
211 UINT16 ProductId;
212 UINT8 DeviceClass;
213 UINT8 DeviceSubClass;
214 UINT8 DeviceProtocol;
215 } USB_CLASS_DEVICE_PATH;
216
217 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
218 #define MSG_USB_WWID_DP 0x10
219 typedef struct {
220 EFI_DEVICE_PATH_PROTOCOL Header;
221 UINT16 InterfaceNumber;
222 UINT16 VendorId;
223 UINT16 ProductId;
224 //
225 // CHAR16 SerialNumber[];
226 //
227 } USB_WWID_DEVICE_PATH;
228
229 #define MSG_DEVICE_LOGICAL_UNIT_DP 0x11
230 typedef struct {
231 EFI_DEVICE_PATH_PROTOCOL Header;
232 UINT8 Lun;
233 } DEVICE_LOGICAL_UNIT_DEVICE_PATH;
234 #endif
235
236 #define MSG_SATA_DP 0x12
237 typedef struct {
238 EFI_DEVICE_PATH_PROTOCOL Header;
239 UINT16 HBAPortNumber;
240 UINT16 PortMultiplierPortNumber;
241 UINT16 Lun;
242 } SATA_DEVICE_PATH;
243
244 #define SATA_HBA_DIRECT_CONNECT_FLAG 0x8000
245
246 #define MSG_I2O_DP 0x06
247 typedef struct {
248 EFI_DEVICE_PATH_PROTOCOL Header;
249 UINT32 Tid;
250 } I2O_DEVICE_PATH;
251
252 #define MSG_MAC_ADDR_DP 0x0b
253 typedef struct {
254 EFI_DEVICE_PATH_PROTOCOL Header;
255 EFI_MAC_ADDRESS MacAddress;
256 UINT8 IfType;
257 } MAC_ADDR_DEVICE_PATH;
258
259 #define MSG_IPv4_DP 0x0c
260 typedef struct {
261 EFI_DEVICE_PATH_PROTOCOL Header;
262 EFI_IPv4_ADDRESS LocalIpAddress;
263 EFI_IPv4_ADDRESS RemoteIpAddress;
264 UINT16 LocalPort;
265 UINT16 RemotePort;
266 UINT16 Protocol;
267 BOOLEAN StaticIpAddress;
268 } IPv4_DEVICE_PATH;
269
270 #define MSG_IPv6_DP 0x0d
271 typedef struct {
272 EFI_DEVICE_PATH_PROTOCOL Header;
273 EFI_IPv6_ADDRESS LocalIpAddress;
274 EFI_IPv6_ADDRESS RemoteIpAddress;
275 UINT16 LocalPort;
276 UINT16 RemotePort;
277 UINT16 Protocol;
278 BOOLEAN StaticIpAddress;
279 } IPv6_DEVICE_PATH;
280
281 #define MSG_INFINIBAND_DP 0x09
282 typedef struct {
283 EFI_DEVICE_PATH_PROTOCOL Header;
284 UINT32 ResourceFlags;
285 UINT8 PortGid[16];
286 UINT64 ServiceId;
287 UINT64 TargetPortId;
288 UINT64 DeviceId;
289 } INFINIBAND_DEVICE_PATH;
290
291 #define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01
292 #define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02
293 #define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04
294 #define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08
295 #define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10
296
297 #define MSG_UART_DP 0x0e
298 typedef struct {
299 EFI_DEVICE_PATH_PROTOCOL Header;
300 UINT32 Reserved;
301 UINT64 BaudRate;
302 UINT8 DataBits;
303 UINT8 Parity;
304 UINT8 StopBits;
305 } UART_DEVICE_PATH;
306
307 //
308 // Use VENDOR_DEVICE_PATH struct
309 //
310 #define MSG_VENDOR_DP 0x0a
311
312 #define DEVICE_PATH_MESSAGING_PC_ANSI \
313 { 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
314
315 #define DEVICE_PATH_MESSAGING_VT_100 \
316 { 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
317
318 #define DEVICE_PATH_MESSAGING_VT_100_PLUS \
319 { 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43} }
320
321 #define DEVICE_PATH_MESSAGING_VT_UTF8 \
322 { 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88} }
323
324 #define DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL \
325 { 0x37499a9d, 0x542f, 0x4c89, {0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 0xe4} }
326
327 typedef struct {
328 EFI_DEVICE_PATH_PROTOCOL Header;
329 EFI_GUID Guid;
330 UINT32 FlowControlMap;
331 } UART_FLOW_CONTROL_DEVICE_PATH;
332
333 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
334
335 #define DEVICE_PATH_MESSAGING_SAS \
336 { 0xd487ddb4, 0x008b, 0x11d9, {0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d} }
337
338 typedef struct {
339 EFI_DEVICE_PATH_PROTOCOL Header;
340 EFI_GUID Guid;
341 UINT32 Reserved;
342 UINT64 SasAddress;
343 UINT64 Lun;
344 UINT16 DeviceTopology;
345 UINT16 RelativeTargetPort;
346 } SAS_DEVICE_PATH;
347
348 #endif
349
350 #define MSG_ISCSI_DP 0x13
351 typedef struct {
352 EFI_DEVICE_PATH_PROTOCOL Header;
353 UINT16 NetworkProtocol;
354 UINT16 LoginOption;
355 UINT64 Lun;
356 UINT16 TargetPortalGroupTag;
357 // CHAR8 iSCSI Target Name
358 } ISCSI_DEVICE_PATH;
359
360 #define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST 0x0000
361 #define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C 0x0002
362 #define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST 0x0000
363 #define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C 0x0008
364 #define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP 0x0000
365 #define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON 0x1000
366 #define ISCSI_LOGIN_OPTION_CHAP_BI 0x0000
367 #define ISCSI_LOGIN_OPTION_CHAP_UNI 0x2000
368
369 ///
370 /// VLAN Device Path SubType.
371 ///
372 #define MSG_VLAN_DP 0x14
373 typedef struct {
374 EFI_DEVICE_PATH_PROTOCOL Header;
375 ///
376 /// VLAN identifier (0-4094).
377 ///
378 UINT16 VlanId;
379 } VLAN_DEVICE_PATH;
380
381
382 //
383 // Media Device Path
384 //
385 #define MEDIA_DEVICE_PATH 0x04
386
387 #define MEDIA_HARDDRIVE_DP 0x01
388 typedef struct {
389 EFI_DEVICE_PATH_PROTOCOL Header;
390 UINT32 PartitionNumber;
391 UINT64 PartitionStart;
392 UINT64 PartitionSize;
393 UINT8 Signature[16];
394 UINT8 MBRType;
395 UINT8 SignatureType;
396 } HARDDRIVE_DEVICE_PATH;
397
398 #define MBR_TYPE_PCAT 0x01
399 #define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
400
401 #define SIGNATURE_TYPE_MBR 0x01
402 #define SIGNATURE_TYPE_GUID 0x02
403
404 #define MEDIA_CDROM_DP 0x02
405 typedef struct {
406 EFI_DEVICE_PATH_PROTOCOL Header;
407 UINT32 BootEntry;
408 UINT64 PartitionStart;
409 UINT64 PartitionSize;
410 } CDROM_DEVICE_PATH;
411
412 //
413 // Use VENDOR_DEVICE_PATH struct
414 //
415 #define MEDIA_VENDOR_DP 0x03
416
417 #define MEDIA_FILEPATH_DP 0x04
418 typedef struct {
419 EFI_DEVICE_PATH_PROTOCOL Header;
420 CHAR16 PathName[1];
421 } FILEPATH_DEVICE_PATH;
422
423 #define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)
424
425 #define MEDIA_PROTOCOL_DP 0x05
426 typedef struct {
427 EFI_DEVICE_PATH_PROTOCOL Header;
428 EFI_GUID Protocol;
429 } MEDIA_PROTOCOL_DEVICE_PATH;
430
431 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
432
433 #define MEDIA_FV_DP 0x07
434 typedef struct {
435 EFI_DEVICE_PATH_PROTOCOL Header;
436 EFI_GUID NameGuid;
437 } MEDIA_FW_VOL_DEVICE_PATH;
438
439 #define MEDIA_FV_FILEPATH_DP 0x06
440 typedef struct {
441 EFI_DEVICE_PATH_PROTOCOL Header;
442 EFI_GUID NameGuid;
443 } MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
444
445 #define MEDIA_RELATIVE_OFFSET_RANGE_DP 0x08
446 typedef struct {
447 EFI_DEVICE_PATH_PROTOCOL Header;
448 UINT32 Reserved;
449 UINT64 StartingOffset;
450 UINT64 EndingOffset;
451 } MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH;
452 #endif
453
454 //
455 // BBS Device Path
456 //
457 #define BBS_DEVICE_PATH 0x05
458 #define BBS_BBS_DP 0x01
459 typedef struct {
460 EFI_DEVICE_PATH_PROTOCOL Header;
461 UINT16 DeviceType;
462 UINT16 StatusFlag;
463 CHAR8 String[1];
464 } BBS_BBS_DEVICE_PATH;
465
466 //
467 // DeviceType definitions - from BBS specification
468 //
469 #define BBS_TYPE_FLOPPY 0x01
470 #define BBS_TYPE_HARDDRIVE 0x02
471 #define BBS_TYPE_CDROM 0x03
472 #define BBS_TYPE_PCMCIA 0x04
473 #define BBS_TYPE_USB 0x05
474 #define BBS_TYPE_EMBEDDED_NETWORK 0x06
475 #define BBS_TYPE_BEV 0x80
476 #define BBS_TYPE_UNKNOWN 0xFF
477
478 #define UNKNOWN_DEVICE_GUID \
479 { 0xcf31fac5, 0xc24e, 0x11d2, {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b} }
480
481 typedef struct {
482 VENDOR_DEVICE_PATH DevicePath;
483 UINT8 LegacyDriveLetter;
484 } UNKNOWN_DEVICE_VENDOR_DEVICE_PATH;
485
486
487 //
488 // Union of all possible Device Paths and pointers to Device Paths
489 //
490
491 typedef union {
492 EFI_DEVICE_PATH_PROTOCOL DevPath;
493 PCI_DEVICE_PATH Pci;
494 PCCARD_DEVICE_PATH PcCard;
495 MEMMAP_DEVICE_PATH MemMap;
496 VENDOR_DEVICE_PATH Vendor;
497
498 UNKNOWN_DEVICE_VENDOR_DEVICE_PATH UnknownVendor;
499
500 CONTROLLER_DEVICE_PATH Controller;
501 ACPI_HID_DEVICE_PATH Acpi;
502 ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi;
503
504 ATAPI_DEVICE_PATH Atapi;
505 SCSI_DEVICE_PATH Scsi;
506 FIBRECHANNEL_DEVICE_PATH FibreChannel;
507 SATA_DEVICE_PATH Sata;
508
509 F1394_DEVICE_PATH F1394;
510 USB_DEVICE_PATH Usb;
511 USB_CLASS_DEVICE_PATH UsbClass;
512 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
513 USB_WWID_DEVICE_PATH UsbWwid;
514 DEVICE_LOGICAL_UNIT_DEVICE_PATH LogicUnit;
515 #endif
516 I2O_DEVICE_PATH I2O;
517 MAC_ADDR_DEVICE_PATH MacAddr;
518 IPv4_DEVICE_PATH Ipv4;
519 IPv6_DEVICE_PATH Ipv6;
520 INFINIBAND_DEVICE_PATH InfiniBand;
521 UART_DEVICE_PATH Uart;
522 UART_FLOW_CONTROL_DEVICE_PATH UartFlowControl;
523 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
524 SAS_DEVICE_PATH Sas;
525 #endif
526 ISCSI_DEVICE_PATH Iscsi;
527 HARDDRIVE_DEVICE_PATH HardDrive;
528 CDROM_DEVICE_PATH CD;
529
530 FILEPATH_DEVICE_PATH FilePath;
531 MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;
532
533 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
534 MEDIA_FW_VOL_DEVICE_PATH PiwgFirmwareVolume;
535 MEDIA_FW_VOL_FILEPATH_DEVICE_PATH PiwgFirmwareFile;
536 MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH
537 Offset;
538 #endif
539
540 BBS_BBS_DEVICE_PATH Bbs;
541 } EFI_DEV_PATH;
542
543
544
545 typedef union {
546 EFI_DEVICE_PATH_PROTOCOL *DevPath;
547 PCI_DEVICE_PATH *Pci;
548 PCCARD_DEVICE_PATH *PcCard;
549 MEMMAP_DEVICE_PATH *MemMap;
550 VENDOR_DEVICE_PATH *Vendor;
551
552 UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *UnknownVendor;
553
554 CONTROLLER_DEVICE_PATH *Controller;
555 ACPI_HID_DEVICE_PATH *Acpi;
556 ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
557
558 ATAPI_DEVICE_PATH *Atapi;
559 SCSI_DEVICE_PATH *Scsi;
560 FIBRECHANNEL_DEVICE_PATH *FibreChannel;
561 SATA_DEVICE_PATH *Sata;
562
563 F1394_DEVICE_PATH *F1394;
564 USB_DEVICE_PATH *Usb;
565 USB_CLASS_DEVICE_PATH *UsbClass;
566 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
567 USB_WWID_DEVICE_PATH *UsbWwid;
568 DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicUnit;
569 #endif
570 I2O_DEVICE_PATH *I2O;
571 MAC_ADDR_DEVICE_PATH *MacAddr;
572 IPv4_DEVICE_PATH *Ipv4;
573 IPv6_DEVICE_PATH *Ipv6;
574 INFINIBAND_DEVICE_PATH *InfiniBand;
575 UART_DEVICE_PATH *Uart;
576 UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl;
577
578 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
579 SAS_DEVICE_PATH *Sas;
580 #endif
581 ISCSI_DEVICE_PATH *Iscsi;
582
583 HARDDRIVE_DEVICE_PATH *HardDrive;
584 CDROM_DEVICE_PATH *CD;
585
586 FILEPATH_DEVICE_PATH *FilePath;
587 MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;
588
589 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
590 MEDIA_FW_VOL_DEVICE_PATH *PiwgFirmwareVolume;
591 MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *PiwgFirmwareFile;
592 #endif
593
594 BBS_BBS_DEVICE_PATH *Bbs;
595 UINT8 *Raw;
596 } EFI_DEV_PATH_PTR;
597
598 #pragma pack()
599
600
601 #endif