diff options
author | Tom Rini <trini@konsulko.com> | 2018-06-18 12:59:46 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-06-18 12:59:46 -0400 |
commit | 378b29cbc6607ad8246b1381bc74ec62bdb19105 (patch) | |
tree | 18232d99d78af022062bdbe36f8253e41d017d4a /lib/efi/efi_stub.c | |
parent | 103c45fb0daab924308046454b4aaad4a09237c4 (diff) | |
parent | 0102023966558075e52758bd22ffd8f96b093a7e (diff) |
Merge git://git.denx.de/u-boot-x86
Diffstat (limited to 'lib/efi/efi_stub.c')
-rw-r--r-- | lib/efi/efi_stub.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/efi/efi_stub.c b/lib/efi/efi_stub.c index 09023a2f67..262fc56562 100644 --- a/lib/efi/efi_stub.c +++ b/lib/efi/efi_stub.c @@ -268,12 +268,16 @@ static void add_entry_addr(struct efi_priv *priv, enum efi_entry_t type, * This function is called by our EFI start-up code. It handles running * U-Boot. If it returns, EFI will continue. */ -efi_status_t efi_main(efi_handle_t image, struct efi_system_table *sys_table) +efi_status_t EFIAPI efi_main(efi_handle_t image, + struct efi_system_table *sys_table) { struct efi_priv local_priv, *priv = &local_priv; struct efi_boot_services *boot = sys_table->boottime; struct efi_mem_desc *desc; struct efi_entry_memmap map; + struct efi_gop *gop; + struct efi_entry_gopmode mode; + efi_guid_t efi_gop_guid = EFI_GOP_GUID; efi_uintn_t key, desc_size, size; efi_status_t ret; u32 version; @@ -312,6 +316,18 @@ efi_status_t efi_main(efi_handle_t image, struct efi_system_table *sys_table) if (ret) return ret; + ret = boot->locate_protocol(&efi_gop_guid, NULL, (void **)&gop); + if (ret) { + puts(" GOP unavailable\n"); + } else { + mode.fb_base = gop->mode->fb_base; + mode.fb_size = gop->mode->fb_size; + mode.info_size = gop->mode->info_size; + add_entry_addr(priv, EFIET_GOP_MODE, &mode, sizeof(mode), + gop->mode->info, + sizeof(struct efi_gop_mode_info)); + } + ret = boot->get_memory_map(&size, desc, &key, &desc_size, &version); if (ret) { printhex2(ret); |