efi: stub: Pass EFI GOP information to U-Boot payload
[oweals/u-boot.git] / lib / efi / efi_stub.c
index 9deffe220febbc371641a9b13016be2c4c076803..262fc56562f331584c2f0c07a746817f9e13eac3 100644 (file)
@@ -275,6 +275,9 @@ efi_status_t EFIAPI efi_main(efi_handle_t image,
        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;
@@ -313,6 +316,18 @@ efi_status_t EFIAPI efi_main(efi_handle_t image,
        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);