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>
This commit is contained in:
Heinrich Schuchardt 2023-03-19 16:18:08 +01:00
parent 78f67f11a9
commit 3f26bca262
2 changed files with 13 additions and 0 deletions

View file

@ -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

View file

@ -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;