aboutsummaryrefslogtreecommitdiff
path: root/src/include/ipxe/efi/Protocol
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2015-10-06 18:44:21 +0100
committerMichael Brown <mcb30@ipxe.org>2015-10-07 08:34:27 +0100
commit42e0c7e956609be4adebd61250a7271a6838d70e (patch)
tree01cccfde68eaa313e3048619ea24f238c0939f0b /src/include/ipxe/efi/Protocol
parent1880691774f276acad0cce76a555cdeb80422a28 (diff)
downloadipxe-42e0c7e956609be4adebd61250a7271a6838d70e.zip
ipxe-42e0c7e956609be4adebd61250a7271a6838d70e.tar.gz
ipxe-42e0c7e956609be4adebd61250a7271a6838d70e.tar.bz2
[efi] Update to current EDK2 headers
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe/efi/Protocol')
-rw-r--r--src/include/ipxe/efi/Protocol/DevicePath.h173
-rw-r--r--src/include/ipxe/efi/Protocol/FormBrowser2.h3
-rw-r--r--src/include/ipxe/efi/Protocol/SimpleTextOut.h17
-rw-r--r--src/include/ipxe/efi/Protocol/TcgService.h10
-rw-r--r--src/include/ipxe/efi/Protocol/Usb2HostController.h69
5 files changed, 246 insertions, 26 deletions
diff --git a/src/include/ipxe/efi/Protocol/DevicePath.h b/src/include/ipxe/efi/Protocol/DevicePath.h
index a305df5..d35b65f 100644
--- a/src/include/ipxe/efi/Protocol/DevicePath.h
+++ b/src/include/ipxe/efi/Protocol/DevicePath.h
@@ -5,7 +5,7 @@
from a software point of view. The path must persist from boot to boot, so
it can not contain things like PCI bus numbers that change from boot to boot.
-Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
@@ -22,6 +22,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
FILE_LICENCE ( BSD3 );
#include <ipxe/efi/Guid/PcAnsi.h>
+#include <ipxe/efi/IndustryStandard/Bluetooth.h>
+#include <ipxe/efi/IndustryStandard/Acpi60.h>
///
/// Device Path protocol.
@@ -172,6 +174,26 @@ typedef struct {
} CONTROLLER_DEVICE_PATH;
///
+/// BMC Device Path SubType.
+///
+#define HW_BMC_DP 0x06
+
+///
+/// BMC Device Path.
+///
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ ///
+ /// Interface Type.
+ ///
+ UINT8 InterfaceType;
+ ///
+ /// Base Address.
+ ///
+ UINT8 BaseAddress[8];
+} BMC_DEVICE_PATH;
+
+///
/// ACPI Device Paths.
///
#define ACPI_DEVICE_PATH 0x02
@@ -275,14 +297,14 @@ typedef struct {
#define ACPI_ADR_DISPLAY_TYPE_INTERNAL_DIGITAL 4
#define ACPI_DISPLAY_ADR(_DeviceIdScheme, _HeadId, _NonVgaOutput, _BiosCanDetect, _VendorInfo, _Type, _Port, _Index) \
- ((UINT32)( (((_DeviceIdScheme) & 0x1) << 31) | \
- (((_HeadId) & 0x7) << 18) | \
- (((_NonVgaOutput) & 0x1) << 17) | \
- (((_BiosCanDetect) & 0x1) << 16) | \
- (((_VendorInfo) & 0xf) << 12) | \
- (((_Type) & 0xf) << 8) | \
- (((_Port) & 0xf) << 4) | \
- ((_Index) & 0xf) ))
+ ((UINT32)( ((UINT32)((_DeviceIdScheme) & 0x1) << 31) | \
+ (((_HeadId) & 0x7) << 18) | \
+ (((_NonVgaOutput) & 0x1) << 17) | \
+ (((_BiosCanDetect) & 0x1) << 16) | \
+ (((_VendorInfo) & 0xf) << 12) | \
+ (((_Type) & 0xf) << 8) | \
+ (((_Port) & 0xf) << 4) | \
+ ((_Index) & 0xf) ))
///
/// Messaging Device Paths.
@@ -798,6 +820,43 @@ typedef struct {
} NVME_NAMESPACE_DEVICE_PATH;
///
+/// Uniform Resource Identifiers (URI) Device Path SubType
+///
+#define MSG_URI_DP 0x18
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ ///
+ /// Instance of the URI pursuant to RFC 3986.
+ ///
+ CHAR8 Uri[];
+} URI_DEVICE_PATH;
+
+///
+/// Universal Flash Storage (UFS) Device Path SubType.
+///
+#define MSG_UFS_DP 0x19
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ ///
+ /// Target ID on the UFS bus (PUN).
+ ///
+ UINT8 Pun;
+ ///
+ /// Logical Unit Number (LUN).
+ ///
+ UINT8 Lun;
+} UFS_DEVICE_PATH;
+
+///
+/// SD (Secure Digital) Device Path SubType.
+///
+#define MSG_SD_DP 0x1A
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ UINT8 SlotNumber;
+} SD_DEVICE_PATH;
+
+///
/// iSCSI Device Path SubType
///
#define MSG_ISCSI_DP 0x13
@@ -848,6 +907,30 @@ typedef struct {
UINT16 VlanId;
} VLAN_DEVICE_PATH;
+///
+/// Bluetooth Device Path SubType.
+///
+#define MSG_BLUETOOTH_DP 0x1b
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ ///
+ /// 48bit Bluetooth device address.
+ ///
+ BLUETOOTH_ADDRESS BD_ADDR;
+} BLUETOOTH_DEVICE_PATH;
+
+///
+/// Wi-Fi Device Path SubType.
+///
+#define MSG_WIFI_DP 0x1C
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ ///
+ /// Service set identifier. A 32-byte octets string.
+ ///
+ UINT8 SSId[32];
+} WIFI_DEVICE_PATH;
+
//
// Media Device Path
//
@@ -1017,6 +1100,62 @@ typedef struct {
} MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH;
///
+/// This GUID defines a RAM Disk supporting a raw disk format in volatile memory.
+///
+#define EFI_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE
+
+extern EFI_GUID gEfiVirtualDiskGuid;
+
+///
+/// This GUID defines a RAM Disk supporting an ISO image in volatile memory.
+///
+#define EFI_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE
+
+extern EFI_GUID gEfiVirtualCdGuid;
+
+///
+/// This GUID defines a RAM Disk supporting a raw disk format in persistent memory.
+///
+#define EFI_PERSISTENT_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT
+
+extern EFI_GUID gEfiPersistentVirtualDiskGuid;
+
+///
+/// This GUID defines a RAM Disk supporting an ISO image in persistent memory.
+///
+#define EFI_PERSISTENT_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT
+
+extern EFI_GUID gEfiPersistentVirtualCdGuid;
+
+///
+/// Media ram disk device path.
+///
+#define MEDIA_RAM_DISK_DP 0x09
+
+///
+/// Used to describe the ram disk device path.
+///
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ ///
+ /// Starting Memory Address.
+ ///
+ UINT32 StartingAddr[2];
+ ///
+ /// Ending Memory Address.
+ ///
+ UINT32 EndingAddr[2];
+ ///
+ /// GUID that defines the type of the RAM Disk.
+ ///
+ EFI_GUID TypeGuid;
+ ///
+ /// RAM Diskinstance number, if supported. The default value is zero.
+ ///
+ UINT16 Instance;
+} MEDIA_RAM_DISK_DEVICE_PATH;
+
+///
/// BIOS Boot Specification Device Path.
///
#define BBS_DEVICE_PATH 0x05
@@ -1069,6 +1208,7 @@ typedef union {
VENDOR_DEVICE_PATH Vendor;
CONTROLLER_DEVICE_PATH Controller;
+ BMC_DEVICE_PATH Bmc;
ACPI_HID_DEVICE_PATH Acpi;
ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi;
ACPI_ADR_DEVICE_PATH AcpiAdr;
@@ -1096,6 +1236,11 @@ typedef union {
SAS_DEVICE_PATH Sas;
SASEX_DEVICE_PATH SasEx;
NVME_NAMESPACE_DEVICE_PATH NvmeNamespace;
+ URI_DEVICE_PATH Uri;
+ BLUETOOTH_DEVICE_PATH Bluetooth;
+ WIFI_DEVICE_PATH WiFi;
+ UFS_DEVICE_PATH Ufs;
+ SD_DEVICE_PATH Sd;
HARDDRIVE_DEVICE_PATH HardDrive;
CDROM_DEVICE_PATH CD;
@@ -1105,7 +1250,7 @@ typedef union {
MEDIA_FW_VOL_DEVICE_PATH FirmwareVolume;
MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FirmwareFile;
MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH Offset;
-
+ MEDIA_RAM_DISK_DEVICE_PATH RamDisk;
BBS_BBS_DEVICE_PATH Bbs;
} EFI_DEV_PATH;
@@ -1119,6 +1264,7 @@ typedef union {
VENDOR_DEVICE_PATH *Vendor;
CONTROLLER_DEVICE_PATH *Controller;
+ BMC_DEVICE_PATH *Bmc;
ACPI_HID_DEVICE_PATH *Acpi;
ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
ACPI_ADR_DEVICE_PATH *AcpiAdr;
@@ -1146,6 +1292,11 @@ typedef union {
SAS_DEVICE_PATH *Sas;
SASEX_DEVICE_PATH *SasEx;
NVME_NAMESPACE_DEVICE_PATH *NvmeNamespace;
+ URI_DEVICE_PATH *Uri;
+ BLUETOOTH_DEVICE_PATH *Bluetooth;
+ WIFI_DEVICE_PATH *WiFi;
+ UFS_DEVICE_PATH *Ufs;
+ SD_DEVICE_PATH *Sd;
HARDDRIVE_DEVICE_PATH *HardDrive;
CDROM_DEVICE_PATH *CD;
@@ -1155,7 +1306,7 @@ typedef union {
MEDIA_FW_VOL_DEVICE_PATH *FirmwareVolume;
MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FirmwareFile;
MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *Offset;
-
+ MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;
BBS_BBS_DEVICE_PATH *Bbs;
UINT8 *Raw;
} EFI_DEV_PATH_PTR;
diff --git a/src/include/ipxe/efi/Protocol/FormBrowser2.h b/src/include/ipxe/efi/Protocol/FormBrowser2.h
index 0c0f56d..8033a11 100644
--- a/src/include/ipxe/efi/Protocol/FormBrowser2.h
+++ b/src/include/ipxe/efi/Protocol/FormBrowser2.h
@@ -4,7 +4,7 @@
The EFI_FORM_BROWSER2_PROTOCOL is the interface to call for drivers to
leverage the EFI configuration driver interface.
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
@@ -65,6 +65,7 @@ typedef UINTN EFI_BROWSER_ACTION_REQUEST;
#define EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT 5
#define EFI_BROWSER_ACTION_REQUEST_FORM_APPLY 6
#define EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD 7
+#define EFI_BROWSER_ACTION_REQUEST_RECONNECT 8
/**
diff --git a/src/include/ipxe/efi/Protocol/SimpleTextOut.h b/src/include/ipxe/efi/Protocol/SimpleTextOut.h
index a79cf43..8aa36c3 100644
--- a/src/include/ipxe/efi/Protocol/SimpleTextOut.h
+++ b/src/include/ipxe/efi/Protocol/SimpleTextOut.h
@@ -6,7 +6,7 @@
a single hardware device or a virtual device that is an aggregation
of multiple physical devices.
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
@@ -117,7 +117,7 @@ typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE;
#define EFI_BROWN (EFI_GREEN | EFI_RED)
#define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED)
#define EFI_BRIGHT 0x08
-#define EFI_DARKGRAY (EFI_BRIGHT)
+#define EFI_DARKGRAY (EFI_BLACK | EFI_BRIGHT)
#define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT)
#define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT)
#define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT)
@@ -126,7 +126,18 @@ typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE;
#define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT)
#define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
-#define EFI_TEXT_ATTR(f, b) ((f) | ((b) << 4))
+//
+// Macro to accept color values in their raw form to create
+// a value that represents both a foreground and background
+// color in a single byte.
+// For Foreground, and EFI_* value is valid from EFI_BLACK(0x00) to
+// EFI_WHITE (0x0F).
+// For Background, only EFI_BLACK, EFI_BLUE, EFI_GREEN, EFI_CYAN,
+// EFI_RED, EFI_MAGENTA, EFI_BROWN, and EFI_LIGHTGRAY are acceptable
+//
+// Do not use EFI_BACKGROUND_xxx values with this macro.
+//
+#define EFI_TEXT_ATTR(Foreground,Background) ((Foreground) | ((Background) << 4))
#define EFI_BACKGROUND_BLACK 0x00
#define EFI_BACKGROUND_BLUE 0x10
diff --git a/src/include/ipxe/efi/Protocol/TcgService.h b/src/include/ipxe/efi/Protocol/TcgService.h
index 1068448..86c69a8 100644
--- a/src/include/ipxe/efi/Protocol/TcgService.h
+++ b/src/include/ipxe/efi/Protocol/TcgService.h
@@ -1,8 +1,8 @@
/** @file
- TCG Service Protocol as defined in TCG_EFI_Protocol_1_20_Final
+ TCG Service Protocol as defined in TCG_EFI_Protocol_1_22_Final
See http://trustedcomputinggroup.org for the latest specification
-Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
@@ -44,12 +44,6 @@ typedef struct _TCG_EFI_BOOT_SERVICE_CAPABILITY {
typedef UINT32 TCG_ALGORITHM_ID;
-///
-/// Note:
-/// Status codes returned for functions of EFI_TCG_PROTOCOL do not exactly match
-/// those defined in the TCG EFI Protocol 1.20 Final Specification.
-///
-
/**
This service provides EFI protocol capability information, state information
about the TPM, and Event Log state information.
diff --git a/src/include/ipxe/efi/Protocol/Usb2HostController.h b/src/include/ipxe/efi/Protocol/Usb2HostController.h
index 01f6170..8308e8f 100644
--- a/src/include/ipxe/efi/Protocol/Usb2HostController.h
+++ b/src/include/ipxe/efi/Protocol/Usb2HostController.h
@@ -4,7 +4,7 @@
running in the EFI boot services environment, to perform data transactions over
a USB bus. In addition, it provides an abstraction for the root hub of the USB bus.
- Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -415,11 +415,42 @@ EFI_STATUS
/**
Submits isochronous transfer to an isochronous endpoint of a USB device.
+ This function is used to submit isochronous transfer to a target endpoint of a USB device.
+ The target endpoint is specified by DeviceAddressand EndpointAddress. Isochronous transfers are
+ used when working with isochronous date. It provides periodic, continuous communication between
+ the host and a device. Isochronous transfers can beused only by full-speed, high-speed, and
+ super-speed devices.
+
+ High-speed isochronous transfers can be performed using multiple data buffers. The number of
+ buffers that are actually prepared for the transfer is specified by DataBuffersNumber. For
+ full-speed isochronous transfers this value is ignored.
+
+ Data represents a list of pointers to the data buffers. For full-speed isochronous transfers
+ only the data pointed by Data[0]shall be used. For high-speed isochronous transfers and for
+ the split transactions depending on DataLengththere several data buffers canbe used. For the
+ high-speed isochronous transfers the total number of buffers must not exceed EFI_USB_MAX_ISO_BUFFER_NUM.
+
+ For split transactions performed on full-speed device by high-speed host controller the total
+ number of buffers is limited to EFI_USB_MAX_ISO_BUFFER_NUM1.
+ If the isochronous transfer is successful, then EFI_SUCCESSis returned. The isochronous transfer
+ is designed to be completed within one USB frame time, if it cannot be completed, EFI_TIMEOUT
+ is returned. If an error other than timeout occurs during the USB transfer, then EFI_DEVICE_ERROR
+ is returned and the detailed status code will be returned in TransferResult.
+
+ EFI_INVALID_PARAMETERis returned if one of the following conditionsis satisfied:
+ - Data is NULL.
+ - DataLength is 0.
+ - DeviceSpeed is not one of the supported values listed above.
+ - MaximumPacketLength is invalid. MaximumPacketLength must be 1023 or less for full-speed devices,
+ and 1024 or less for high-speed and super-speed devices.
+ - TransferResult is NULL.
+
@param This A pointer to the EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Represents the address of the target device on the USB.
@param EndPointAddress The combination of an endpoint number and an endpoint direction of the
target USB device.
- @param DeviceSpeed Indicates device speed.
+ @param DeviceSpeed Indicates device speed. The supported values are EFI_USB_SPEED_FULL,
+ EFI_USB_SPEED_HIGH, or EFI_USB_SPEED_SUPER.
@param MaximumPacketLength Indicates the maximum packet size the target endpoint is capable of
sending or receiving.
@param DataBuffersNumber Number of data buffers prepared for the transfer.
@@ -456,11 +487,43 @@ EFI_STATUS
/**
Submits nonblocking isochronous transfer to an isochronous endpoint of a USB device.
+ This is an asynchronous type of USB isochronous transfer. If the caller submits a USB
+ isochronous transfer request through this function, this function will return immediately.
+
+ When the isochronous transfer completes, the IsochronousCallbackfunction will be triggered,
+ the caller can know the transfer results. If the transfer is successful, the caller can get
+ the data received or sent in this callback function.
+
+ The target endpoint is specified by DeviceAddressand EndpointAddress. Isochronous transfers
+ are used when working with isochronous date. It provides periodic, continuous communication
+ between the host and a device. Isochronous transfers can be used only by full-speed, high-speed,
+ and super-speed devices.
+
+ High-speed isochronous transfers can be performed using multiple data buffers. The number of
+ buffers that are actually prepared for the transfer is specified by DataBuffersNumber. For
+ full-speed isochronous transfers this value is ignored.
+
+ Data represents a list of pointers to the data buffers. For full-speed isochronous transfers
+ only the data pointed by Data[0] shall be used. For high-speed isochronous transfers and for
+ the split transactions depending on DataLength there several data buffers can be used. For
+ the high-speed isochronous transfers the total number of buffers must not exceed EFI_USB_MAX_ISO_BUFFER_NUM.
+
+ For split transactions performed on full-speed device by high-speed host controller the total
+ number of buffers is limited to EFI_USB_MAX_ISO_BUFFER_NUM1.
+
+ EFI_INVALID_PARAMETER is returned if one of the following conditionsis satisfied:
+ - Data is NULL.
+ - DataLength is 0.
+ - DeviceSpeed is not one of the supported values listed above.
+ - MaximumPacketLength is invalid. MaximumPacketLength must be 1023 or less for full-speed
+ devices and 1024 or less for high-speed and super-speed devices.
+
@param This A pointer to the EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Represents the address of the target device on the USB.
@param EndPointAddress The combination of an endpoint number and an endpoint direction of the
target USB device.
- @param DeviceSpeed Indicates device speed.
+ @param DeviceSpeed Indicates device speed. The supported values are EFI_USB_SPEED_FULL,
+ EFI_USB_SPEED_HIGH, or EFI_USB_SPEED_SUPER.
@param MaximumPacketLength Indicates the maximum packet size the target endpoint is capable of
sending or receiving.
@param DataBuffersNumber Number of data buffers prepared for the transfer.