9
0
Fork 0

efi: bus: add firmware vendor and resision and tables info

This alllow us to known where we boot from

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Jean-Christophe PLAGNIOL-VILLARD 2017-02-15 20:34:17 +01:00 committed by Sascha Hauer
parent 7e3fcac20a
commit 83c9ce1dbc
2 changed files with 29 additions and 1 deletions

View File

@ -341,10 +341,33 @@ struct bus_type efi_bus = {
.remove = efi_bus_remove,
};
static void efi_businfo(struct device_d *dev)
{
int i;
printf("Tables:\n");
for (i = 0; i < efi_sys_table->nr_tables; i++) {
efi_config_table_t *t = &efi_sys_table->tables[i];
printf(" %d: %pUl: %s\n", i, &t->guid,
efi_guid_string(&t->guid));
}
}
static int efi_init_devices(void)
{
char *fw_vendor = NULL;
bus_register(&efi_bus);
fw_vendor = strdup_wchar_to_char((const wchar_t *)efi_sys_table->fw_vendor);
dev_add_param_fixed(efi_bus.dev, "fw_vendor", fw_vendor);
free(fw_vendor);
dev_add_param_int_ro(efi_bus.dev, "fw_revision", efi_sys_table->fw_revision, "%u");
efi_bus.dev->info = efi_businfo;
efi_register_devices();
return 0;

View File

@ -488,6 +488,11 @@ extern efi_guid_t efi_block_io_protocol_guid;
extern efi_guid_t efi_barebox_vendor_guid;
extern efi_guid_t efi_systemd_vendor_guid;
typedef struct {
efi_guid_t guid;
unsigned long table;
} efi_config_table_t;
#define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL)
#define EFI_2_30_SYSTEM_TABLE_REVISION ((2 << 16) | (30))
@ -510,7 +515,7 @@ typedef struct {
efi_runtime_services_t *runtime;
efi_boot_services_t *boottime;
unsigned long nr_tables;
unsigned long tables;
efi_config_table_t *tables;
} efi_system_table_t;
typedef struct {