lib/coreboot_table: Show splashscreen in lb_table_init

Every vga init implementation needs to cache the framebuffer state
to be able to fill the lb_framebuffer struct later on in the
fill_lb_framebuffer call. Showing the bootsplash afterwards
guarantees to have the same interface into all the vga drivers.

This is by far from ideal, as it only allows for a single driver at
compile-time and should be adapted in the future.

It was tested on the wip razer blade stealth using vgabios @ 1280x1024
and also in Qemu @ 1280x1024.
By default the qemu framebuffer will be initialized in 800x600@32.
This can be overwriten by configuration by setting
CONFIG_DRIVERS_EMULATION_QEMU_BOCHS_{X,Y}RES .

Change-Id: I4bec06d22423627e8f429c4b47e0dc9920f1464e
Signed-off-by: Johanna Schander <coreboot@mimoja.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/34599
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
Johanna Schander
2019-07-28 09:28:33 +02:00
committed by Nico Huber
parent bfb0c2d543
commit c544a85d2a
5 changed files with 21 additions and 38 deletions

View File

@@ -21,22 +21,6 @@
#include "jpeg.h"
void set_vesa_bootsplash(void)
{
const vbe_mode_info_t *mode_info = vbe_mode_info();
if (mode_info != NULL) {
unsigned int x_resolution = le16_to_cpu(mode_info->vesa.x_resolution);
unsigned int y_resolution = le16_to_cpu(mode_info->vesa.y_resolution);
unsigned int fb_resolution = mode_info->vesa.bits_per_pixel;
unsigned char *framebuffer =
(unsigned char *)le32_to_cpu(mode_info->vesa.phys_base_ptr);
set_bootsplash(framebuffer, x_resolution, y_resolution, fb_resolution);
} else {
printk(BIOS_ERR, "VBE modeinfo invalid\n");
}
}
void set_bootsplash(unsigned char *framebuffer, unsigned int x_resolution,
unsigned int y_resolution, unsigned int fb_resolution)