summaryrefslogtreecommitdiffstats
path: root/src/interface
diff options
context:
space:
mode:
authorMichael Brown2015-08-30 19:42:03 +0200
committerMichael Brown2015-09-01 02:34:58 +0200
commitbd96c6fffd278b70158334056c714b286296edb6 (patch)
treeed8e5ab9aaf40062a058b9c327e20791267c64fd /src/interface
parent[pxe] Construct all fake DHCP packets before starting PXE NBP (diff)
downloadipxe-bd96c6fffd278b70158334056c714b286296edb6.tar.gz
ipxe-bd96c6fffd278b70158334056c714b286296edb6.tar.xz
ipxe-bd96c6fffd278b70158334056c714b286296edb6.zip
[efi] Add definitions of GUIDs observed when booting wdsmgfw.efi
Add definitions of protocols observed to be used by wdsmgfw.efi, and add a handle name type for ConIn, ConOut, and StdErr. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface')
-rw-r--r--src/interface/efi/efi_debug.c54
-rw-r--r--src/interface/efi/efi_guid.c34
2 files changed, 88 insertions, 0 deletions
diff --git a/src/interface/efi/efi_debug.c b/src/interface/efi/efi_debug.c
index bcf45cff..97f37c6d 100644
--- a/src/interface/efi/efi_debug.c
+++ b/src/interface/efi/efi_debug.c
@@ -69,6 +69,8 @@ struct efi_well_known_guid {
/** Well-known GUIDs */
static struct efi_well_known_guid efi_well_known_guids[] = {
+ { &efi_absolute_pointer_protocol_guid,
+ "AbsolutePointer" },
{ &efi_arp_protocol_guid,
"Arp" },
{ &efi_arp_service_binding_protocol_guid,
@@ -137,12 +139,22 @@ static struct efi_well_known_guid efi_well_known_guids[] = {
"SimpleFileSystem" },
{ &efi_simple_network_protocol_guid,
"SimpleNetwork" },
+ { &efi_simple_pointer_protocol_guid,
+ "SimplePointer" },
+ { &efi_simple_text_input_protocol_guid,
+ "SimpleTextInput" },
+ { &efi_simple_text_input_ex_protocol_guid,
+ "SimpleTextInputEx" },
+ { &efi_simple_text_output_protocol_guid,
+ "SimpleTextOutput" },
{ &efi_tcg_protocol_guid,
"Tcg" },
{ &efi_tcp4_protocol_guid,
"Tcp4" },
{ &efi_tcp4_service_binding_protocol_guid,
"Tcp4Sb" },
+ { &efi_tree_protocol_guid,
+ "TrEE" },
{ &efi_udp4_protocol_guid,
"Udp4" },
{ &efi_udp4_service_binding_protocol_guid,
@@ -595,6 +607,42 @@ efi_loaded_image_filepath_name ( EFI_LOADED_IMAGE_PROTOCOL *loaded ) {
return efi_devpath_text ( loaded->FilePath );
}
+/**
+ * Get console input handle name
+ *
+ * @v input Simple text input protocol
+ * @ret name Console input handle name, or NULL
+ */
+static const char *
+efi_conin_name ( EFI_SIMPLE_TEXT_INPUT_PROTOCOL *input ) {
+
+ /* Check for match against ConIn */
+ if ( input == efi_systab->ConIn )
+ return "ConIn";
+
+ return NULL;
+}
+
+/**
+ * Get console output handle name
+ *
+ * @v output Simple text output protocol
+ * @ret name Console output handle name, or NULL
+ */
+static const char *
+efi_conout_name ( EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *output ) {
+
+ /* Check for match against ConOut */
+ if ( output == efi_systab->ConOut )
+ return "ConOut";
+
+ /* Check for match against StdErr (if different from ConOut) */
+ if ( output == efi_systab->StdErr )
+ return "StdErr";
+
+ return NULL;
+}
+
/** An EFI handle name type */
struct efi_handle_name_type {
/** Protocol */
@@ -643,6 +691,12 @@ static struct efi_handle_name_type efi_handle_name_types[] = {
/* Handle's loaded image file path (for image handles) */
EFI_HANDLE_NAME_TYPE ( &efi_loaded_image_protocol_guid,
efi_loaded_image_filepath_name ),
+ /* Our standard input file handle */
+ EFI_HANDLE_NAME_TYPE ( &efi_simple_text_input_protocol_guid,
+ efi_conin_name ),
+ /* Our standard output and standard error file handles */
+ EFI_HANDLE_NAME_TYPE ( &efi_simple_text_output_protocol_guid,
+ efi_conout_name ),
};
/**
diff --git a/src/interface/efi/efi_guid.c b/src/interface/efi/efi_guid.c
index 1025621e..0a841225 100644
--- a/src/interface/efi/efi_guid.c
+++ b/src/interface/efi/efi_guid.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/efi/efi.h>
+#include <ipxe/efi/Protocol/AbsolutePointer.h>
#include <ipxe/efi/Protocol/Arp.h>
#include <ipxe/efi/Protocol/BlockIo.h>
#include <ipxe/efi/Protocol/BusSpecificDriverOverride.h>
@@ -51,6 +52,10 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/efi/Protocol/SerialIo.h>
#include <ipxe/efi/Protocol/SimpleFileSystem.h>
#include <ipxe/efi/Protocol/SimpleNetwork.h>
+#include <ipxe/efi/Protocol/SimplePointer.h>
+#include <ipxe/efi/Protocol/SimpleTextIn.h>
+#include <ipxe/efi/Protocol/SimpleTextInEx.h>
+#include <ipxe/efi/Protocol/SimpleTextOut.h>
#include <ipxe/efi/Protocol/TcgService.h>
#include <ipxe/efi/Protocol/Tcp4.h>
#include <ipxe/efi/Protocol/Udp4.h>
@@ -64,6 +69,15 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*
*/
+/* TrEE protocol GUID definition in EDK2 headers is broken (missing braces) */
+#define EFI_TREE_PROTOCOL_GUID \
+ { 0x607f766c, 0x7455, 0x42be, \
+ { 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f } }
+
+/** Absolute pointer protocol GUID */
+EFI_GUID efi_absolute_pointer_protocol_guid
+ = EFI_ABSOLUTE_POINTER_PROTOCOL_GUID;
+
/** ARP protocol GUID */
EFI_GUID efi_arp_protocol_guid
= EFI_ARP_PROTOCOL_GUID;
@@ -196,6 +210,22 @@ EFI_GUID efi_simple_file_system_protocol_guid
EFI_GUID efi_simple_network_protocol_guid
= EFI_SIMPLE_NETWORK_PROTOCOL_GUID;
+/** Simple pointer protocol GUID */
+EFI_GUID efi_simple_pointer_protocol_guid
+ = EFI_SIMPLE_POINTER_PROTOCOL_GUID;
+
+/** Simple text input protocol GUID */
+EFI_GUID efi_simple_text_input_protocol_guid
+ = EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID;
+
+/** Simple text input extension protocol GUID */
+EFI_GUID efi_simple_text_input_ex_protocol_guid
+ = EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID;
+
+/** Simple text output protocol GUID */
+EFI_GUID efi_simple_text_output_protocol_guid
+ = EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID;
+
/** TCG protocol GUID */
EFI_GUID efi_tcg_protocol_guid
= EFI_TCG_PROTOCOL_GUID;
@@ -208,6 +238,10 @@ EFI_GUID efi_tcp4_protocol_guid
EFI_GUID efi_tcp4_service_binding_protocol_guid
= EFI_TCP4_SERVICE_BINDING_PROTOCOL_GUID;
+/** TrEE protocol GUID */
+EFI_GUID efi_tree_protocol_guid
+ = EFI_TREE_PROTOCOL_GUID;
+
/** UDPv4 protocol GUID */
EFI_GUID efi_udp4_protocol_guid
= EFI_UDP4_PROTOCOL_GUID;