efi_loader: define UpdateCapsule api
In this commit, skeleton functions for capsule-related API's are added under CONFIG_EFI_UPDATE_CAPSULE configuration. Detailed implementation for a specific capsule type will be added in the succeeding patches. Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
This commit is contained in:
committed by
Heinrich Schuchardt
parent
96ec4b1a18
commit
2bc27ca8a0
@@ -217,6 +217,10 @@ enum efi_reset_type {
|
||||
#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
|
||||
#define CAPSULE_FLAGS_INITIATE_RESET 0x00040000
|
||||
|
||||
#define EFI_CAPSULE_REPORT_GUID \
|
||||
EFI_GUID(0x39b68c46, 0xf7fb, 0x441b, 0xb6, 0xec, \
|
||||
0x16, 0xb0, 0xf6, 0x98, 0x21, 0xf3)
|
||||
|
||||
struct efi_capsule_header {
|
||||
efi_guid_t capsule_guid;
|
||||
u32 header_size;
|
||||
@@ -224,6 +228,14 @@ struct efi_capsule_header {
|
||||
u32 capsule_image_size;
|
||||
} __packed;
|
||||
|
||||
struct efi_capsule_result_variable_header {
|
||||
u32 variable_total_size;
|
||||
u32 reserved;
|
||||
efi_guid_t capsule_guid;
|
||||
struct efi_time capsule_processed;
|
||||
efi_status_t capsule_status;
|
||||
} __packed;
|
||||
|
||||
#define EFI_RT_SUPPORTED_GET_TIME 0x0001
|
||||
#define EFI_RT_SUPPORTED_SET_TIME 0x0002
|
||||
#define EFI_RT_SUPPORTED_GET_WAKEUP_TIME 0x0004
|
||||
|
||||
@@ -210,6 +210,8 @@ extern const efi_guid_t efi_guid_cert_type_pkcs7;
|
||||
|
||||
/* GUID of RNG protocol */
|
||||
extern const efi_guid_t efi_guid_rng_protocol;
|
||||
/* GUID of capsule update result */
|
||||
extern const efi_guid_t efi_guid_capsule_report;
|
||||
|
||||
extern unsigned int __efi_runtime_start, __efi_runtime_stop;
|
||||
extern unsigned int __efi_runtime_rel_start, __efi_runtime_rel_stop;
|
||||
@@ -812,6 +814,17 @@ void efi_memcpy_runtime(void *dest, const void *src, size_t n);
|
||||
/* commonly used helper function */
|
||||
u16 *efi_create_indexed_name(u16 *buffer, const char *name, unsigned int index);
|
||||
|
||||
/* Capsule update */
|
||||
efi_status_t EFIAPI efi_update_capsule(
|
||||
struct efi_capsule_header **capsule_header_array,
|
||||
efi_uintn_t capsule_count,
|
||||
u64 scatter_gather_list);
|
||||
efi_status_t EFIAPI efi_query_capsule_caps(
|
||||
struct efi_capsule_header **capsule_header_array,
|
||||
efi_uintn_t capsule_count,
|
||||
u64 *maximum_capsule_size,
|
||||
u32 *reset_type);
|
||||
|
||||
#else /* CONFIG_IS_ENABLED(EFI_LOADER) */
|
||||
|
||||
/* Without CONFIG_EFI_LOADER we don't have a runtime section, stub it out */
|
||||
|
||||
Reference in New Issue
Block a user