TianoCore EDK2 master
DevicePath.h
Go to the documentation of this file.
1
13#ifndef __EFI_DEVICE_PATH_PROTOCOL_H__
14#define __EFI_DEVICE_PATH_PROTOCOL_H__
15
16#include <Guid/PcAnsi.h>
19
23#define EFI_DEVICE_PATH_PROTOCOL_GUID \
24 { \
25 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
26 }
27
31#define DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL_GUID
32
33#pragma pack(1)
34
43typedef struct {
44 UINT8 Type;
50
51 UINT8 SubType;
55
56 UINT8 Length[2];
59
64
68#define HARDWARE_DEVICE_PATH 0x01
69
73#define HW_PCI_DP 0x01
74
78typedef struct {
83 UINT8 Function;
87 UINT8 Device;
89
93#define HW_PCCARD_DP 0x02
94
98typedef struct {
105
109#define HW_MEMMAP_DP 0x03
110
114typedef struct {
129
133#define HW_VENDOR_DP 0x04
134
140typedef struct {
150
154#define HW_CONTROLLER_DP 0x05
155
159typedef struct {
166
170#define HW_BMC_DP 0x06
171
175typedef struct {
184 UINT8 BaseAddress[8];
186
190#define ACPI_DEVICE_PATH 0x02
191
195#define ACPI_DP 0x01
196typedef struct {
203 UINT32 HID;
211 UINT32 UID;
213
217#define ACPI_EXTENDED_DP 0x02
218typedef struct {
225 UINT32 HID;
231 UINT32 UID;
238 UINT32 CID;
245
246//
247// EISA ID Macro
248// EISA ID Definition 32-bits
249// bits[15:0] - three character compressed ASCII EISA ID.
250// bits[31:16] - binary number
251// Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
252//
253#define PNP_EISA_ID_CONST 0x41d0
254#define EISA_ID(_Name, _Num) ((UINT32)((_Name) | (_Num) << 16))
255#define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
256#define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
257
258#define PNP_EISA_ID_MASK 0xffff
259#define EISA_ID_TO_NUM(_Id) ((_Id) >> 16)
260
264#define ACPI_ADR_DP 0x03
265
271typedef struct {
278 UINT32 ADR;
279 //
280 // This device path may optionally contain more than one _ADR entry.
281 //
283
287#define ACPI_NVDIMM_DP 0x04
290typedef struct {
298
299#define ACPI_ADR_DISPLAY_TYPE_OTHER 0
300#define ACPI_ADR_DISPLAY_TYPE_VGA 1
301#define ACPI_ADR_DISPLAY_TYPE_TV 2
302#define ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL 3
303#define ACPI_ADR_DISPLAY_TYPE_INTERNAL_DIGITAL 4
304
305#define ACPI_DISPLAY_ADR(_DeviceIdScheme, _HeadId, _NonVgaOutput, _BiosCanDetect, _VendorInfo, _Type, _Port, _Index) \
306 ((UINT32)( ((UINT32)((_DeviceIdScheme) & 0x1) << 31) | \
307 (((_HeadId) & 0x7) << 18) | \
308 (((_NonVgaOutput) & 0x1) << 17) | \
309 (((_BiosCanDetect) & 0x1) << 16) | \
310 (((_VendorInfo) & 0xf) << 12) | \
311 (((_Type) & 0xf) << 8) | \
312 (((_Port) & 0xf) << 4) | \
313 ((_Index) & 0xf) ))
314
321#define MESSAGING_DEVICE_PATH 0x03
322
326#define MSG_ATAPI_DP 0x01
327typedef struct {
340 UINT16 Lun;
342
346#define MSG_SCSI_DP 0x02
347typedef struct {
352 UINT16 Pun;
356 UINT16 Lun;
358
362#define MSG_FIBRECHANNEL_DP 0x03
363typedef struct {
368 UINT32 Reserved;
372 UINT64 WWN;
376 UINT64 Lun;
378
382#define MSG_FIBRECHANNELEX_DP 0x15
383typedef struct {
388 UINT32 Reserved;
392 UINT8 WWN[8];
396 UINT8 Lun[8];
398
402#define MSG_1394_DP 0x04
403typedef struct {
408 UINT32 Reserved;
412 UINT64 Guid;
414
418#define MSG_USB_DP 0x05
419typedef struct {
430
434#define MSG_USB_CLASS_DP 0x0f
435typedef struct {
441 UINT16 VendorId;
446 UINT16 ProductId;
463
467#define MSG_USB_WWID_DP 0x10
468
472typedef struct {
481 UINT16 VendorId;
485 UINT16 ProductId;
494
498#define MSG_DEVICE_LOGICAL_UNIT_DP 0x11
499typedef struct {
504 UINT8 Lun;
506
510#define MSG_SATA_DP 0x12
511typedef struct {
527 UINT16 Lun;
529
533#define SATA_HBA_DIRECT_CONNECT_FLAG 0x8000
534
538#define MSG_I2O_DP 0x06
539typedef struct {
544 UINT32 Tid;
546
550#define MSG_MAC_ADDR_DP 0x0b
551typedef struct {
560 UINT8 IfType;
562
566#define MSG_IPv4_DP 0x0c
567typedef struct {
580 UINT16 LocalPort;
588 UINT16 Protocol;
603
607#define MSG_IPv6_DP 0x0d
608typedef struct {
621 UINT16 LocalPort;
629 UINT16 Protocol;
647
651#define MSG_INFINIBAND_DP 0x09
652typedef struct {
667 UINT8 PortGid[16];
672 UINT64 ServiceId;
680 UINT64 DeviceId;
682
683#define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01
684#define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02
685#define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04
686#define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08
687#define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10
688
692#define MSG_UART_DP 0x0e
693typedef struct {
698 UINT32 Reserved;
703 UINT64 BaudRate;
708 UINT8 DataBits;
718 UINT8 Parity;
726 UINT8 StopBits;
728
732#define NVDIMM_NAMESPACE_DP 0x20
733typedef struct {
740
741//
742// Use VENDOR_DEVICE_PATH struct
743//
744#define MSG_VENDOR_DP 0x0a
746
747#define DEVICE_PATH_MESSAGING_PC_ANSI EFI_PC_ANSI_GUID
748#define DEVICE_PATH_MESSAGING_VT_100 EFI_VT_100_GUID
749#define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID
750#define DEVICE_PATH_MESSAGING_VT_UTF8 EFI_VT_UTF8_GUID
751
756typedef struct {
770
771#define UART_FLOW_CONTROL_HARDWARE 0x00000001
772#define UART_FLOW_CONTROL_XON_XOFF 0x00000010
773
774#define DEVICE_PATH_MESSAGING_SAS EFI_SAS_DEVICE_PATH_GUID
778typedef struct {
787 UINT32 Reserved;
795 UINT64 Lun;
805
809#define MSG_SASEX_DP 0x16
810typedef struct {
815 UINT8 SasAddress[8];
819 UINT8 Lun[8];
829
833#define MSG_NVME_NAMESPACE_DP 0x17
834typedef struct {
836 UINT32 NamespaceId;
837 UINT64 NamespaceUuid;
839
843#define MSG_DNS_DP 0x1F
844typedef struct {
849 UINT8 IsIPv6;
853 EFI_IP_ADDRESS DnsServerIp[];
855
859#define MSG_URI_DP 0x18
860typedef struct {
865 CHAR8 Uri[];
867
871#define MSG_UFS_DP 0x19
872typedef struct {
877 UINT8 Pun;
881 UINT8 Lun;
883
887#define MSG_SD_DP 0x1A
888typedef struct {
890 UINT8 SlotNumber;
892
896#define MSG_EMMC_DP 0x1D
897typedef struct {
899 UINT8 SlotNumber;
901
905#define MSG_ISCSI_DP 0x13
906typedef struct {
919 UINT64 Lun;
931
932#define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST 0x0000
933#define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C 0x0002
934#define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST 0x0000
935#define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C 0x0008
936#define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP 0x0000
937#define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON 0x1000
938#define ISCSI_LOGIN_OPTION_CHAP_BI 0x0000
939#define ISCSI_LOGIN_OPTION_CHAP_UNI 0x2000
940
944#define MSG_VLAN_DP 0x14
945typedef struct {
950 UINT16 VlanId;
952
956#define MSG_BLUETOOTH_DP 0x1b
957typedef struct {
964
968#define MSG_WIFI_DP 0x1C
969typedef struct {
974 UINT8 SSId[32];
976
980#define MSG_BLUETOOTH_LE_DP 0x1E
981typedef struct {
983 BLUETOOTH_LE_ADDRESS Address;
985
986//
987// Media Device Path
988//
989#define MEDIA_DEVICE_PATH 0x04
990
994#define MEDIA_HARDDRIVE_DP 0x01
995
999typedef struct {
1023 UINT8 Signature[16];
1029 UINT8 MBRType;
1038
1039#define MBR_TYPE_PCAT 0x01
1040#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
1041
1042#define NO_DISK_SIGNATURE 0x00
1043#define SIGNATURE_TYPE_MBR 0x01
1044#define SIGNATURE_TYPE_GUID 0x02
1045
1049#define MEDIA_CDROM_DP 0x02
1050
1054typedef struct {
1069
1070//
1071// Use VENDOR_DEVICE_PATH struct
1072//
1073#define MEDIA_VENDOR_DP 0x03
1074
1078#define MEDIA_FILEPATH_DP 0x04
1079typedef struct {
1084 CHAR16 PathName[1];
1086
1087#define SIZE_OF_FILEPATH_DEVICE_PATH OFFSET_OF(FILEPATH_DEVICE_PATH,PathName)
1088
1092#define MEDIA_PROTOCOL_DP 0x05
1093
1099typedef struct {
1106
1110#define MEDIA_PIWG_FW_FILE_DP 0x06
1111
1115typedef struct {
1122
1126#define MEDIA_PIWG_FW_VOL_DP 0x07
1127
1131typedef struct {
1138
1142#define MEDIA_RELATIVE_OFFSET_RANGE_DP 0x08
1143
1147typedef struct {
1149 UINT32 Reserved;
1150 UINT64 StartingOffset;
1151 UINT64 EndingOffset;
1153
1157#define EFI_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE
1158
1159extern EFI_GUID gEfiVirtualDiskGuid;
1160
1164#define EFI_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE
1165
1166extern EFI_GUID gEfiVirtualCdGuid;
1167
1171#define EFI_PERSISTENT_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT
1172
1173extern EFI_GUID gEfiPersistentVirtualDiskGuid;
1174
1178#define EFI_PERSISTENT_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT
1179
1180extern EFI_GUID gEfiPersistentVirtualCdGuid;
1181
1185#define MEDIA_RAM_DISK_DP 0x09
1186
1190typedef struct {
1195 UINT32 StartingAddr[2];
1199 UINT32 EndingAddr[2];
1207 UINT16 Instance;
1209
1213#define BBS_DEVICE_PATH 0x05
1214
1218#define BBS_BBS_DP 0x01
1219
1223typedef struct {
1236 CHAR8 String[1];
1238
1239//
1240// DeviceType definitions - from BBS specification
1241//
1242#define BBS_TYPE_FLOPPY 0x01
1243#define BBS_TYPE_HARDDRIVE 0x02
1244#define BBS_TYPE_CDROM 0x03
1245#define BBS_TYPE_PCMCIA 0x04
1246#define BBS_TYPE_USB 0x05
1247#define BBS_TYPE_EMBEDDED_NETWORK 0x06
1248#define BBS_TYPE_BEV 0x80
1249#define BBS_TYPE_UNKNOWN 0xFF
1250
1254typedef union {
1256 PCI_DEVICE_PATH Pci;
1257 PCCARD_DEVICE_PATH PcCard;
1258 MEMMAP_DEVICE_PATH MemMap;
1259 VENDOR_DEVICE_PATH Vendor;
1260
1261 CONTROLLER_DEVICE_PATH Controller;
1262 BMC_DEVICE_PATH Bmc;
1264 ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi;
1265 ACPI_ADR_DEVICE_PATH AcpiAdr;
1266
1267 ATAPI_DEVICE_PATH Atapi;
1268 SCSI_DEVICE_PATH Scsi;
1269 ISCSI_DEVICE_PATH Iscsi;
1270 FIBRECHANNEL_DEVICE_PATH FibreChannel;
1271 FIBRECHANNELEX_DEVICE_PATH FibreChannelEx;
1272
1273 F1394_DEVICE_PATH F1394;
1274 USB_DEVICE_PATH Usb;
1275 SATA_DEVICE_PATH Sata;
1276 USB_CLASS_DEVICE_PATH UsbClass;
1277 USB_WWID_DEVICE_PATH UsbWwid;
1279 I2O_DEVICE_PATH I2O;
1280 MAC_ADDR_DEVICE_PATH MacAddr;
1281 IPv4_DEVICE_PATH Ipv4;
1282 IPv6_DEVICE_PATH Ipv6;
1283 VLAN_DEVICE_PATH Vlan;
1284 INFINIBAND_DEVICE_PATH InfiniBand;
1285 UART_DEVICE_PATH Uart;
1286 UART_FLOW_CONTROL_DEVICE_PATH UartFlowControl;
1287 SAS_DEVICE_PATH Sas;
1288 SASEX_DEVICE_PATH SasEx;
1289 NVME_NAMESPACE_DEVICE_PATH NvmeNamespace;
1290 DNS_DEVICE_PATH Dns;
1291 URI_DEVICE_PATH Uri;
1292 BLUETOOTH_DEVICE_PATH Bluetooth;
1293 WIFI_DEVICE_PATH WiFi;
1294 UFS_DEVICE_PATH Ufs;
1295 SD_DEVICE_PATH Sd;
1296 EMMC_DEVICE_PATH Emmc;
1297 HARDDRIVE_DEVICE_PATH HardDrive;
1299
1300 FILEPATH_DEVICE_PATH FilePath;
1301 MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;
1302
1303 MEDIA_FW_VOL_DEVICE_PATH FirmwareVolume;
1308} EFI_DEV_PATH;
1309
1310typedef union {
1311 EFI_DEVICE_PATH_PROTOCOL *DevPath;
1312 PCI_DEVICE_PATH *Pci;
1313 PCCARD_DEVICE_PATH *PcCard;
1314 MEMMAP_DEVICE_PATH *MemMap;
1315 VENDOR_DEVICE_PATH *Vendor;
1316
1317 CONTROLLER_DEVICE_PATH *Controller;
1318 BMC_DEVICE_PATH *Bmc;
1320 ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
1321 ACPI_ADR_DEVICE_PATH *AcpiAdr;
1322
1323 ATAPI_DEVICE_PATH *Atapi;
1324 SCSI_DEVICE_PATH *Scsi;
1325 ISCSI_DEVICE_PATH *Iscsi;
1326 FIBRECHANNEL_DEVICE_PATH *FibreChannel;
1327 FIBRECHANNELEX_DEVICE_PATH *FibreChannelEx;
1328
1329 F1394_DEVICE_PATH *F1394;
1330 USB_DEVICE_PATH *Usb;
1331 SATA_DEVICE_PATH *Sata;
1332 USB_CLASS_DEVICE_PATH *UsbClass;
1333 USB_WWID_DEVICE_PATH *UsbWwid;
1335 I2O_DEVICE_PATH *I2O;
1336 MAC_ADDR_DEVICE_PATH *MacAddr;
1337 IPv4_DEVICE_PATH *Ipv4;
1338 IPv6_DEVICE_PATH *Ipv6;
1339 VLAN_DEVICE_PATH *Vlan;
1340 INFINIBAND_DEVICE_PATH *InfiniBand;
1341 UART_DEVICE_PATH *Uart;
1342 UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl;
1343 SAS_DEVICE_PATH *Sas;
1344 SASEX_DEVICE_PATH *SasEx;
1345 NVME_NAMESPACE_DEVICE_PATH *NvmeNamespace;
1346 DNS_DEVICE_PATH *Dns;
1347 URI_DEVICE_PATH *Uri;
1348 BLUETOOTH_DEVICE_PATH *Bluetooth;
1349 WIFI_DEVICE_PATH *WiFi;
1350 UFS_DEVICE_PATH *Ufs;
1351 SD_DEVICE_PATH *Sd;
1352 EMMC_DEVICE_PATH *Emmc;
1353 HARDDRIVE_DEVICE_PATH *HardDrive;
1355
1356 FILEPATH_DEVICE_PATH *FilePath;
1357 MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;
1358
1359 MEDIA_FW_VOL_DEVICE_PATH *FirmwareVolume;
1364 UINT8 *Raw;
1366
1367#pragma pack()
1368
1369#define END_DEVICE_PATH_TYPE 0x7f
1370#define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xFF
1371#define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01
1372
1373extern EFI_GUID gEfiDevicePathProtocolGuid;
1374
1375#endif
EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH
Definition: DevicePath.h:63
UINT64 EFI_PHYSICAL_ADDRESS
Definition: UefiBaseType.h:49
UINT8 PrimarySecondary
Definition: DevicePath.h:332
BLUETOOTH_ADDRESS BD_ADDR
Definition: DevicePath.h:962
UINT8 InterfaceType
Definition: DevicePath.h:180
Definition: Base.h:213
EFI_IPv4_ADDRESS GatewayIpAddress
Definition: DevicePath.h:597
EFI_IPv4_ADDRESS SubnetMask
Definition: DevicePath.h:601
BOOLEAN StaticIpAddress
Definition: DevicePath.h:593
EFI_IPv4_ADDRESS LocalIpAddress
Definition: DevicePath.h:572
EFI_IPv4_ADDRESS RemoteIpAddress
Definition: DevicePath.h:576
EFI_IPv6_ADDRESS LocalIpAddress
Definition: DevicePath.h:613
UINT8 IpAddressOrigin
Definition: DevicePath.h:637
EFI_IPv6_ADDRESS RemoteIpAddress
Definition: DevicePath.h:617
EFI_IPv6_ADDRESS GatewayIpAddress
Definition: DevicePath.h:645
UINT16 TargetPortalGroupTag
Definition: DevicePath.h:924
UINT16 NetworkProtocol
Definition: DevicePath.h:911
EFI_MAC_ADDRESS MacAddress
Definition: DevicePath.h:556
EFI_PHYSICAL_ADDRESS StartingAddress
Definition: DevicePath.h:123
EFI_PHYSICAL_ADDRESS EndingAddress
Definition: DevicePath.h:127
UINT16 RelativeTargetPort
Definition: DevicePath.h:803
EFI_GUID Guid
Definition: DevicePath.h:783
UINT64 SasAddress
Definition: DevicePath.h:791
UINT16 DeviceTopology
Definition: DevicePath.h:799
UINT16 DeviceTopology
Definition: DevicePath.h:823
UINT16 RelativeTargetPort
Definition: DevicePath.h:827
UINT16 PortMultiplierPortNumber
Definition: DevicePath.h:523
UINT16 HBAPortNumber
Definition: DevicePath.h:517
UINT8 InterfaceNumber
Definition: DevicePath.h:428
UINT8 ParentPortNumber
Definition: DevicePath.h:424