aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2023-03-19 16:18:08 +0100
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2023-03-25 10:43:50 +0100
commit3f26bca262dcc5f50577981a66a08d80864de6a0 (patch)
treed65d52d27621e13876d5430e3f179806a6efe349
parent78f67f11a9920ef988cbff5341616695c3e87ebd (diff)
downloadu-boot-3f26bca262dcc5f50577981a66a08d80864de6a0.zip
u-boot-3f26bca262dcc5f50577981a66a08d80864de6a0.tar.gz
u-boot-3f26bca262dcc5f50577981a66a08d80864de6a0.tar.bz2
efi_loader: support for Ctrl() device path node
* Add the definitions for Ctrl() device path nodes. * Implement Ctrl() nodes in the device path to text protocol. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
-rw-r--r--include/efi_api.h6
-rw-r--r--lib/efi_loader/efi_device_path_to_text.c7
2 files changed, 13 insertions, 0 deletions
diff --git a/include/efi_api.h b/include/efi_api.h
index 2d18d25..c57868a 100644
--- a/include/efi_api.h
+++ b/include/efi_api.h
@@ -570,6 +570,7 @@ struct efi_mac_addr {
#define DEVICE_PATH_TYPE_HARDWARE_DEVICE 0x01
# define DEVICE_PATH_SUB_TYPE_MEMORY 0x03
# define DEVICE_PATH_SUB_TYPE_VENDOR 0x04
+# define DEVICE_PATH_SUB_TYPE_CONTROLLER 0x05
struct efi_device_path_memory {
struct efi_device_path dp;
@@ -584,6 +585,11 @@ struct efi_device_path_vendor {
u8 vendor_data[];
} __packed;
+struct efi_device_path_controller {
+ struct efi_device_path dp;
+ u32 controller_number;
+} __packed;
+
#define DEVICE_PATH_TYPE_ACPI_DEVICE 0x02
# define DEVICE_PATH_SUB_TYPE_ACPI_DEVICE 0x01
diff --git a/lib/efi_loader/efi_device_path_to_text.c b/lib/efi_loader/efi_device_path_to_text.c
index 9062058..4b2ade3 100644
--- a/lib/efi_loader/efi_device_path_to_text.c
+++ b/lib/efi_loader/efi_device_path_to_text.c
@@ -77,6 +77,13 @@ static char *dp_hardware(char *s, struct efi_device_path *dp)
s += sprintf(s, ")");
break;
}
+ case DEVICE_PATH_SUB_TYPE_CONTROLLER: {
+ struct efi_device_path_controller *cdp =
+ (struct efi_device_path_controller *)dp;
+
+ s += sprintf(s, "Ctrl(0x%0x)", cdp->controller_number);
+ break;
+ }
default:
s = dp_unknown(s, dp);
break;