from a software point of view. The path must persist from boot to boot, so \r
it can not contain things like PCI bus numbers that change from boot to boot.\r
\r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials are licensed and made available under \r
the terms and conditions of the BSD License that accompanies this distribution. \r
The full text of the license may be found at\r
#define __EFI_DEVICE_PATH_PROTOCOL_H__\r
\r
#include <Guid/PcAnsi.h>\r
+#include <IndustryStandard/Bluetooth.h>\r
+#include <IndustryStandard/Acpi60.h>\r
\r
///\r
/// Device Path protocol.\r
UINT32 ControllerNumber;\r
} CONTROLLER_DEVICE_PATH;\r
\r
+///\r
+/// BMC Device Path SubType.\r
+///\r
+#define HW_BMC_DP 0x06\r
+\r
+///\r
+/// BMC Device Path.\r
+///\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ ///\r
+ /// Interface Type.\r
+ ///\r
+ UINT8 InterfaceType;\r
+ ///\r
+ /// Base Address.\r
+ ///\r
+ UINT8 BaseAddress[8];\r
+} BMC_DEVICE_PATH;\r
+\r
///\r
/// ACPI Device Paths.\r
///\r
#define ACPI_ADR_DISPLAY_TYPE_INTERNAL_DIGITAL 4\r
\r
#define ACPI_DISPLAY_ADR(_DeviceIdScheme, _HeadId, _NonVgaOutput, _BiosCanDetect, _VendorInfo, _Type, _Port, _Index) \\r
- ((UINT32)( (((_DeviceIdScheme) & 0x1) << 31) | \\r
- (((_HeadId) & 0x7) << 18) | \\r
- (((_NonVgaOutput) & 0x1) << 17) | \\r
- (((_BiosCanDetect) & 0x1) << 16) | \\r
- (((_VendorInfo) & 0xf) << 12) | \\r
- (((_Type) & 0xf) << 8) | \\r
- (((_Port) & 0xf) << 4) | \\r
- ((_Index) & 0xf) ))\r
+ ((UINT32)( ((UINT32)((_DeviceIdScheme) & 0x1) << 31) | \\r
+ (((_HeadId) & 0x7) << 18) | \\r
+ (((_NonVgaOutput) & 0x1) << 17) | \\r
+ (((_BiosCanDetect) & 0x1) << 16) | \\r
+ (((_VendorInfo) & 0xf) << 12) | \\r
+ (((_Type) & 0xf) << 8) | \\r
+ (((_Port) & 0xf) << 4) | \\r
+ ((_Index) & 0xf) ))\r
\r
///\r
/// Messaging Device Paths.\r
UINT64 Lun;\r
} FIBRECHANNEL_DEVICE_PATH;\r
\r
+///\r
+/// Fibre Channel Ex SubType.\r
+///\r
+#define MSG_FIBRECHANNELEX_DP 0x15\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ ///\r
+ /// Reserved for the future.\r
+ ///\r
+ UINT32 Reserved;\r
+ ///\r
+ /// 8 byte array containing Fibre Channel End Device Port Name.\r
+ ///\r
+ UINT8 WWN[8];\r
+ ///\r
+ /// 8 byte array containing Fibre Channel Logical Unit Number.\r
+ ///\r
+ UINT8 Lun[8];\r
+} FIBRECHANNELEX_DEVICE_PATH;\r
+\r
///\r
/// 1394 Device Path SubType\r
///\r
UINT16 HBAPortNumber;\r
///\r
/// The Port multiplier port number that facilitates the connection\r
- /// to the device. Bit 15 should be set if the device is directly\r
+ /// to the device. Must be set to 0xFFFF if the device is directly\r
/// connected to the HBA.\r
///\r
UINT16 PortMultiplierPortNumber;\r
/// 0x01 - The Source IP Address is statically bound.\r
///\r
BOOLEAN StaticIpAddress;\r
+ ///\r
+ /// The gateway IP address\r
+ ///\r
+ EFI_IPv4_ADDRESS GatewayIpAddress;\r
+ ///\r
+ /// The subnet mask\r
+ ///\r
+ EFI_IPv4_ADDRESS SubnetMask;\r
} IPv4_DEVICE_PATH;\r
\r
///\r
///\r
UINT16 Protocol;\r
///\r
- /// 0x00 - The Source IP Address was assigned though DHCP.\r
- /// 0x01 - The Source IP Address is statically bound.\r
+ /// 0x00 - The Local IP Address was manually configured.\r
+ /// 0x01 - The Local IP Address is assigned through IPv6\r
+ /// stateless auto-configuration.\r
+ /// 0x02 - The Local IP Address is assigned through IPv6\r
+ /// stateful configuration.\r
///\r
- BOOLEAN StaticIpAddress;\r
+ UINT8 IpAddressOrigin;\r
+ ///\r
+ /// The prefix length\r
+ ///\r
+ UINT8 PrefixLength;\r
+ ///\r
+ /// The gateway IP address\r
+ ///\r
+ EFI_IPv6_ADDRESS GatewayIpAddress;\r
} IPv6_DEVICE_PATH;\r
\r
///\r
#define UART_FLOW_CONTROL_HARDWARE 0x00000001\r
#define UART_FLOW_CONTROL_XON_XOFF 0x00000010\r
\r
-#define DEVICE_PATH_MESSAGING_SAS EFI_SAS_DEVICE_PATH_GUID\r
+#define DEVICE_PATH_MESSAGING_SAS EFI_SAS_DEVICE_PATH_GUID\r
///\r
-/// Serial Attached SCSI (SAS) devices.\r
+/// Serial Attached SCSI (SAS) Device Path.\r
///\r
typedef struct {\r
EFI_DEVICE_PATH_PROTOCOL Header;\r
UINT16 RelativeTargetPort;\r
} SAS_DEVICE_PATH;\r
\r
+///\r
+/// Serial Attached SCSI (SAS) Ex Device Path SubType\r
+///\r
+#define MSG_SASEX_DP 0x16\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ ///\r
+ /// 8-byte array of the SAS Address for Serial Attached SCSI Target Port.\r
+ ///\r
+ UINT8 SasAddress[8];\r
+ ///\r
+ /// 8-byte array of the SAS Logical Unit Number.\r
+ ///\r
+ UINT8 Lun[8];\r
+ ///\r
+ /// More Information about the device and its interconnect.\r
+ ///\r
+ UINT16 DeviceTopology;\r
+ ///\r
+ /// Relative Target Port (RTP).\r
+ ///\r
+ UINT16 RelativeTargetPort;\r
+} SASEX_DEVICE_PATH;\r
+\r
+///\r
+/// NvmExpress Namespace Device Path SubType.\r
+///\r
+#define MSG_NVME_NAMESPACE_DP 0x17\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ UINT32 NamespaceId;\r
+ UINT64 NamespaceUuid;\r
+} NVME_NAMESPACE_DEVICE_PATH;\r
+\r
+///\r
+/// Uniform Resource Identifiers (URI) Device Path SubType\r
+///\r
+#define MSG_URI_DP 0x18\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ ///\r
+ /// Instance of the URI pursuant to RFC 3986.\r
+ ///\r
+ CHAR8 Uri[];\r
+} URI_DEVICE_PATH;\r
+\r
+///\r
+/// Universal Flash Storage (UFS) Device Path SubType.\r
+///\r
+#define MSG_UFS_DP 0x19\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ ///\r
+ /// Target ID on the UFS bus (PUN).\r
+ ///\r
+ UINT8 Pun;\r
+ ///\r
+ /// Logical Unit Number (LUN).\r
+ ///\r
+ UINT8 Lun;\r
+} UFS_DEVICE_PATH;\r
+\r
+///\r
+/// SD (Secure Digital) Device Path SubType.\r
+///\r
+#define MSG_SD_DP 0x1A\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ UINT8 SlotNumber;\r
+} SD_DEVICE_PATH;\r
+\r
+///\r
+/// EMMC (Embedded MMC) Device Path SubType.\r
+///\r
+#define MSG_EMMC_DP 0x1D\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ UINT8 SlotNumber;\r
+} EMMC_DEVICE_PATH;\r
+\r
///\r
/// iSCSI Device Path SubType\r
///\r
UINT16 VlanId;\r
} VLAN_DEVICE_PATH;\r
\r
+///\r
+/// Bluetooth Device Path SubType.\r
+///\r
+#define MSG_BLUETOOTH_DP 0x1b\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ ///\r
+ /// 48bit Bluetooth device address.\r
+ ///\r
+ BLUETOOTH_ADDRESS BD_ADDR;\r
+} BLUETOOTH_DEVICE_PATH;\r
+\r
+///\r
+/// Wi-Fi Device Path SubType.\r
+///\r
+#define MSG_WIFI_DP 0x1C\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ ///\r
+ /// Service set identifier. A 32-byte octets string.\r
+ ///\r
+ UINT8 SSId[32];\r
+} WIFI_DEVICE_PATH;\r
+\r
//\r
// Media Device Path\r
//\r
} MEDIA_PROTOCOL_DEVICE_PATH;\r
\r
///\r
-/// PIWG Firmware Volume Device Path SubType.\r
+/// PIWG Firmware File SubType.\r
///\r
#define MEDIA_PIWG_FW_FILE_DP 0x06\r
\r
UINT64 EndingOffset;\r
} MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH;\r
\r
+///\r
+/// This GUID defines a RAM Disk supporting a raw disk format in volatile memory.\r
+///\r
+#define EFI_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE\r
+\r
+extern EFI_GUID gEfiVirtualDiskGuid;\r
+\r
+///\r
+/// This GUID defines a RAM Disk supporting an ISO image in volatile memory.\r
+///\r
+#define EFI_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE\r
+\r
+extern EFI_GUID gEfiVirtualCdGuid;\r
+\r
+///\r
+/// This GUID defines a RAM Disk supporting a raw disk format in persistent memory.\r
+///\r
+#define EFI_PERSISTENT_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT\r
+\r
+extern EFI_GUID gEfiPersistentVirtualDiskGuid;\r
+\r
+///\r
+/// This GUID defines a RAM Disk supporting an ISO image in persistent memory.\r
+///\r
+#define EFI_PERSISTENT_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT\r
+\r
+extern EFI_GUID gEfiPersistentVirtualCdGuid;\r
+\r
+///\r
+/// Media ram disk device path.\r
+///\r
+#define MEDIA_RAM_DISK_DP 0x09\r
+\r
+///\r
+/// Used to describe the ram disk device path.\r
+///\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL Header;\r
+ ///\r
+ /// Starting Memory Address.\r
+ ///\r
+ UINT32 StartingAddr[2];\r
+ ///\r
+ /// Ending Memory Address.\r
+ ///\r
+ UINT32 EndingAddr[2];\r
+ ///\r
+ /// GUID that defines the type of the RAM Disk.\r
+ ///\r
+ EFI_GUID TypeGuid;\r
+ ///\r
+ /// RAM Diskinstance number, if supported. The default value is zero.\r
+ ///\r
+ UINT16 Instance;\r
+} MEDIA_RAM_DISK_DEVICE_PATH;\r
+\r
///\r
/// BIOS Boot Specification Device Path.\r
///\r
///\r
UINT16 StatusFlag;\r
///\r
- /// ASCIIZ string that describes the boot device to a user. \r
+ /// Null-terminated ASCII string that describes the boot device to a user.\r
///\r
CHAR8 String[1];\r
} BBS_BBS_DEVICE_PATH;\r
/// Union of all possible Device Paths and pointers to Device Paths.\r
///\r
typedef union {\r
- EFI_DEVICE_PATH_PROTOCOL DevPath;\r
- PCI_DEVICE_PATH Pci;\r
- PCCARD_DEVICE_PATH PcCard;\r
- MEMMAP_DEVICE_PATH MemMap;\r
- VENDOR_DEVICE_PATH Vendor;\r
-\r
- CONTROLLER_DEVICE_PATH Controller;\r
- ACPI_HID_DEVICE_PATH Acpi;\r
-\r
- ATAPI_DEVICE_PATH Atapi;\r
- SCSI_DEVICE_PATH Scsi;\r
- ISCSI_DEVICE_PATH Iscsi;\r
- FIBRECHANNEL_DEVICE_PATH FibreChannel;\r
-\r
- F1394_DEVICE_PATH F1394;\r
- USB_DEVICE_PATH Usb;\r
- SATA_DEVICE_PATH Sata;\r
- USB_CLASS_DEVICE_PATH UsbClass;\r
- I2O_DEVICE_PATH I2O;\r
- MAC_ADDR_DEVICE_PATH MacAddr;\r
- IPv4_DEVICE_PATH Ipv4;\r
- IPv6_DEVICE_PATH Ipv6;\r
- INFINIBAND_DEVICE_PATH InfiniBand;\r
- UART_DEVICE_PATH Uart;\r
-\r
- HARDDRIVE_DEVICE_PATH HardDrive;\r
- CDROM_DEVICE_PATH CD;\r
-\r
- FILEPATH_DEVICE_PATH FilePath;\r
- MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;\r
- MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH Offset;\r
-\r
- BBS_BBS_DEVICE_PATH Bbs;\r
+ EFI_DEVICE_PATH_PROTOCOL DevPath;\r
+ PCI_DEVICE_PATH Pci;\r
+ PCCARD_DEVICE_PATH PcCard;\r
+ MEMMAP_DEVICE_PATH MemMap;\r
+ VENDOR_DEVICE_PATH Vendor;\r
+\r
+ CONTROLLER_DEVICE_PATH Controller;\r
+ BMC_DEVICE_PATH Bmc;\r
+ ACPI_HID_DEVICE_PATH Acpi;\r
+ ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi;\r
+ ACPI_ADR_DEVICE_PATH AcpiAdr;\r
+\r
+ ATAPI_DEVICE_PATH Atapi;\r
+ SCSI_DEVICE_PATH Scsi;\r
+ ISCSI_DEVICE_PATH Iscsi;\r
+ FIBRECHANNEL_DEVICE_PATH FibreChannel;\r
+ FIBRECHANNELEX_DEVICE_PATH FibreChannelEx;\r
+\r
+ F1394_DEVICE_PATH F1394;\r
+ USB_DEVICE_PATH Usb;\r
+ SATA_DEVICE_PATH Sata;\r
+ USB_CLASS_DEVICE_PATH UsbClass;\r
+ USB_WWID_DEVICE_PATH UsbWwid;\r
+ DEVICE_LOGICAL_UNIT_DEVICE_PATH LogicUnit;\r
+ I2O_DEVICE_PATH I2O;\r
+ MAC_ADDR_DEVICE_PATH MacAddr;\r
+ IPv4_DEVICE_PATH Ipv4;\r
+ IPv6_DEVICE_PATH Ipv6;\r
+ VLAN_DEVICE_PATH Vlan;\r
+ INFINIBAND_DEVICE_PATH InfiniBand;\r
+ UART_DEVICE_PATH Uart;\r
+ UART_FLOW_CONTROL_DEVICE_PATH UartFlowControl;\r
+ SAS_DEVICE_PATH Sas;\r
+ SASEX_DEVICE_PATH SasEx;\r
+ NVME_NAMESPACE_DEVICE_PATH NvmeNamespace;\r
+ URI_DEVICE_PATH Uri;\r
+ BLUETOOTH_DEVICE_PATH Bluetooth;\r
+ WIFI_DEVICE_PATH WiFi;\r
+ UFS_DEVICE_PATH Ufs;\r
+ SD_DEVICE_PATH Sd;\r
+ EMMC_DEVICE_PATH Emmc;\r
+ HARDDRIVE_DEVICE_PATH HardDrive;\r
+ CDROM_DEVICE_PATH CD;\r
+\r
+ FILEPATH_DEVICE_PATH FilePath;\r
+ MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;\r
+\r
+ MEDIA_FW_VOL_DEVICE_PATH FirmwareVolume;\r
+ MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FirmwareFile;\r
+ MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH Offset;\r
+ MEDIA_RAM_DISK_DEVICE_PATH RamDisk;\r
+ BBS_BBS_DEVICE_PATH Bbs;\r
} EFI_DEV_PATH;\r
\r
\r
\r
typedef union {\r
- EFI_DEVICE_PATH_PROTOCOL *DevPath;\r
- PCI_DEVICE_PATH *Pci;\r
- PCCARD_DEVICE_PATH *PcCard;\r
- MEMMAP_DEVICE_PATH *MemMap;\r
- VENDOR_DEVICE_PATH *Vendor;\r
-\r
- CONTROLLER_DEVICE_PATH *Controller;\r
- ACPI_HID_DEVICE_PATH *Acpi;\r
- ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;\r
-\r
- ATAPI_DEVICE_PATH *Atapi;\r
- SCSI_DEVICE_PATH *Scsi;\r
- FIBRECHANNEL_DEVICE_PATH *FibreChannel;\r
-\r
- F1394_DEVICE_PATH *F1394;\r
- USB_DEVICE_PATH *Usb;\r
- SATA_DEVICE_PATH *Sata;\r
- USB_CLASS_DEVICE_PATH *UsbClass;\r
- I2O_DEVICE_PATH *I2O;\r
- MAC_ADDR_DEVICE_PATH *MacAddr;\r
- IPv4_DEVICE_PATH *Ipv4;\r
- IPv6_DEVICE_PATH *Ipv6;\r
- INFINIBAND_DEVICE_PATH *InfiniBand;\r
- UART_DEVICE_PATH *Uart;\r
-\r
- HARDDRIVE_DEVICE_PATH *HardDrive;\r
- CDROM_DEVICE_PATH *CD;\r
-\r
- FILEPATH_DEVICE_PATH *FilePath;\r
- MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;\r
- MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *Offset;\r
-\r
- BBS_BBS_DEVICE_PATH *Bbs;\r
- UINT8 *Raw;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevPath;\r
+ PCI_DEVICE_PATH *Pci;\r
+ PCCARD_DEVICE_PATH *PcCard;\r
+ MEMMAP_DEVICE_PATH *MemMap;\r
+ VENDOR_DEVICE_PATH *Vendor;\r
+\r
+ CONTROLLER_DEVICE_PATH *Controller;\r
+ BMC_DEVICE_PATH *Bmc;\r
+ ACPI_HID_DEVICE_PATH *Acpi;\r
+ ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;\r
+ ACPI_ADR_DEVICE_PATH *AcpiAdr;\r
+\r
+ ATAPI_DEVICE_PATH *Atapi;\r
+ SCSI_DEVICE_PATH *Scsi;\r
+ ISCSI_DEVICE_PATH *Iscsi;\r
+ FIBRECHANNEL_DEVICE_PATH *FibreChannel;\r
+ FIBRECHANNELEX_DEVICE_PATH *FibreChannelEx;\r
+\r
+ F1394_DEVICE_PATH *F1394;\r
+ USB_DEVICE_PATH *Usb;\r
+ SATA_DEVICE_PATH *Sata;\r
+ USB_CLASS_DEVICE_PATH *UsbClass;\r
+ USB_WWID_DEVICE_PATH *UsbWwid;\r
+ DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicUnit;\r
+ I2O_DEVICE_PATH *I2O;\r
+ MAC_ADDR_DEVICE_PATH *MacAddr;\r
+ IPv4_DEVICE_PATH *Ipv4;\r
+ IPv6_DEVICE_PATH *Ipv6;\r
+ VLAN_DEVICE_PATH *Vlan;\r
+ INFINIBAND_DEVICE_PATH *InfiniBand;\r
+ UART_DEVICE_PATH *Uart;\r
+ UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl;\r
+ SAS_DEVICE_PATH *Sas;\r
+ SASEX_DEVICE_PATH *SasEx;\r
+ NVME_NAMESPACE_DEVICE_PATH *NvmeNamespace;\r
+ URI_DEVICE_PATH *Uri;\r
+ BLUETOOTH_DEVICE_PATH *Bluetooth;\r
+ WIFI_DEVICE_PATH *WiFi;\r
+ UFS_DEVICE_PATH *Ufs;\r
+ SD_DEVICE_PATH *Sd;\r
+ EMMC_DEVICE_PATH *Emmc;\r
+ HARDDRIVE_DEVICE_PATH *HardDrive;\r
+ CDROM_DEVICE_PATH *CD;\r
+\r
+ FILEPATH_DEVICE_PATH *FilePath;\r
+ MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;\r
+\r
+ MEDIA_FW_VOL_DEVICE_PATH *FirmwareVolume;\r
+ MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FirmwareFile;\r
+ MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *Offset;\r
+ MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;\r
+ BBS_BBS_DEVICE_PATH *Bbs;\r
+ UINT8 *Raw;\r
} EFI_DEV_PATH_PTR;\r
\r
#pragma pack()\r