summaryrefslogtreecommitdiff
path: root/src/commonlib/include/commonlib/coreboot_tables.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/commonlib/include/commonlib/coreboot_tables.h')
-rw-r--r--src/commonlib/include/commonlib/coreboot_tables.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/commonlib/include/commonlib/coreboot_tables.h b/src/commonlib/include/commonlib/coreboot_tables.h
index 94985b1567..a9e14c7bff 100644
--- a/src/commonlib/include/commonlib/coreboot_tables.h
+++ b/src/commonlib/include/commonlib/coreboot_tables.h
@@ -87,6 +87,7 @@ enum {
LB_TAG_TYPE_C_INFO = 0x0042,
LB_TAG_ACPI_RSDP = 0x0043,
LB_TAG_PCIE = 0x0044,
+ LB_TAG_EFI_FW_INFO = 0x0045,
/* The following options are CMOS-related */
LB_TAG_CMOS_OPTION_TABLE = 0x00c8,
LB_TAG_OPTION = 0x00c9,
@@ -578,4 +579,23 @@ struct lb_acpi_rsdp {
lb_uint64_t rsdp_pointer; /* Address of the ACPI RSDP */
};
+/*
+ * Machine-friendly version of a system firmware component. A component is
+ * identified by a GUID. coreboot is an obvious main component but there could
+ * be others (like EC) which should get their own instances of the tag.
+ *
+ * The main consumer of this information is UEFI firmware but something else
+ * could reuse it too.
+ *
+ * Larger number in a version field corresponds to a more recent version.
+ */
+struct lb_efi_fw_info {
+ uint32_t tag;
+ uint32_t size;
+ uint8_t guid[16]; /* Called "firmware class" in UEFI */
+ uint32_t version; /* Current version */
+ uint32_t lowest_supported_version; /* Lowest allowed version for downgrades */
+ uint32_t fw_size; /* Size of firmware in bytes */
+} __packed;
+
#endif