src/device/oprom: Fix bootsplash display code for optionroms

So far the bootsplash is only correctly rendered if the framebuffer is
set up as 1024x768@16.
Different resolutions did not show anything, differnent depth resulted
in the distorted images.

This commit removes this limit by using the actual framebuffer resolutions
and combines the code for x86 and yabel.

For the moment the bootsplash is still limited to VGA-OptionROM
framebuffer init.

It was tested in 1280x1024@32 on the wip razer blade stealth using the
intel vgabios.

Change-Id: I5ab7b8a0f28badaa16e25dbe807158870d06e26a
Signed-off-by: Johanna Schander <coreboot@mimoja.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/34537
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/device/oprom/realmode/x86.c b/src/device/oprom/realmode/x86.c
index 67e550c..1a80a00 100644
--- a/src/device/oprom/realmode/x86.c
+++ b/src/device/oprom/realmode/x86.c
@@ -18,14 +18,12 @@
 #include <arch/interrupt.h>
 #include <arch/registers.h>
 #include <boot/coreboot_tables.h>
-#include <cbfs.h>
 #include <console/console.h>
 #include <cpu/amd/lxdef.h>
 #include <cpu/amd/vr.h>
 #include <delay.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
-#include <lib/jpeg.h>
 #include <pc80/i8259.h>
 #include <pc80/i8254.h>
 #include <string.h>
@@ -223,7 +221,7 @@
 }
 
 #if CONFIG(FRAMEBUFFER_SET_VESA_MODE)
-vbe_mode_info_t mode_info;
+static vbe_mode_info_t mode_info;
 static int mode_info_valid;
 
 static int vbe_mode_info_valid(void)
@@ -231,6 +229,13 @@
 	return mode_info_valid;
 }
 
+const vbe_mode_info_t *vbe_mode_info(void)
+{
+	if (!mode_info_valid || !mode_info.vesa.phys_base_ptr)
+		return NULL;
+	return &mode_info;
+}
+
 static int vbe_check_for_failure(int ah);
 
 static void vbe_get_ctrl_info(vbe_info_block *info)
@@ -353,6 +358,7 @@
 		le16_to_cpu(mode_info.vesa.x_resolution),
 		le16_to_cpu(mode_info.vesa.y_resolution),
 		mode_info.vesa.bits_per_pixel);
+
 	printk(BIOS_DEBUG, "VBE: framebuffer: %p\n", framebuffer);
 	if (!framebuffer) {
 		printk(BIOS_DEBUG, "VBE: Mode does not support linear "
@@ -361,19 +367,6 @@
 	}
 
 	vbe_set_mode(&mode_info);
-#if CONFIG(BOOTSPLASH)
-	struct jpeg_decdata *decdata;
-	unsigned char *jpeg = cbfs_boot_map_with_leak("bootsplash.jpg",
-							CBFS_TYPE_BOOTSPLASH,
-							NULL);
-	if (!jpeg) {
-		printk(BIOS_DEBUG, "VBE: No bootsplash found.\n");
-		return;
-	}
-	decdata = malloc(sizeof(*decdata));
-	int ret = 0;
-	ret = jpeg_decode(jpeg, framebuffer, 1024, 768, 16, decdata);
-#endif
 }
 
 void vbe_textmode_console(void)