diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2010-07-30 18:53:10 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2010-07-30 18:53:10 -0400 |
commit | c8e4e88111fdc2682fd157a449234167faded976 (patch) | |
tree | dfb8fe5198357e90993d70614f9edab5b6f513c5 | |
parent | 597040dd3dba3471c9ed012a5056c42949f34962 (diff) | |
download | seabios-c8e4e88111fdc2682fd157a449234167faded976.tar.gz |
Allow qemu to use bootsplash code via fwcfg interface.
All the bootsplash code to pull the jpeg file from either cbfs (on
coreboot) or fwcfg (on qemu).
-rw-r--r-- | src/bootsplash.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/bootsplash.c b/src/bootsplash.c index 676ece3b..1dcd4020 100644 --- a/src/bootsplash.c +++ b/src/bootsplash.c @@ -11,14 +11,14 @@ #include "util.h" // dprintf #include "jpeg.h" // splash #include "biosvar.h" // SET_EBDA +#include "paravirt.h" // romfile_find /**************************************************************** * VESA structures ****************************************************************/ -struct vesa_info -{ +struct vesa_info { u32 vesa_signature; u16 vesa_version; struct segoff_s oem_string_ptr; @@ -36,8 +36,7 @@ struct vesa_info #define VESA_SIGNATURE 0x41534556 // VESA #define VBE2_SIGNATURE 0x32454256 // VBE2 -struct vesa_mode_info -{ +struct vesa_mode_info { u16 mode_attributes; u8 win_a_attributes; u8 win_b_attributes; @@ -73,6 +72,7 @@ struct vesa_mode_info u8 reserved[206]; } PACKED; + /**************************************************************** * Helper functions ****************************************************************/ @@ -92,7 +92,8 @@ call16_int10(struct bregs *br) * VGA text / graphics console ****************************************************************/ -static void enable_vga_text_console(void) +static void +enable_vga_text_console(void) { dprintf(1, "Turning on vga text mode console\n"); struct bregs br; @@ -140,20 +141,20 @@ find_videomode(struct vesa_info *vesa_info, struct vesa_mode_info *mode_info } } -void enable_vga_console(void) +void +enable_vga_console(void) { struct vesa_info *vesa_info = NULL; struct vesa_mode_info *mode_info = NULL; struct jpeg_decdata *jpeg = NULL; u8 *filedata = NULL, *picture = NULL; - /* Needs coreboot support for CBFS */ - if (!CONFIG_BOOTSPLASH || !CONFIG_COREBOOT) + if (!CONFIG_BOOTSPLASH) goto gotext; - struct cbfs_file *file = cbfs_finddatafile("bootsplash.jpg"); + u32 file = romfile_find("bootsplash.jpg"); if (!file) goto gotext; - int filesize = cbfs_datasize(file); + int filesize = romfile_size(file); filedata = malloc_tmphigh(filesize); vesa_info = malloc_tmplow(sizeof(*vesa_info)); @@ -186,7 +187,7 @@ void enable_vga_console(void) vendor, product); // Parse jpeg and get image size. - cbfs_copyfile(file, filedata, filesize); + romfile_copy(file, filedata, filesize); int ret = jpeg_decode(jpeg, filedata); if (ret) { dprintf(1, "jpeg_decode failed with return code %d...\n", ret); @@ -248,7 +249,7 @@ gotext: void disable_bootsplash(void) { - if (!CONFIG_BOOTSPLASH || !CONFIG_COREBOOT || !GET_EBDA(bootsplash_active)) + if (!CONFIG_BOOTSPLASH || !GET_EBDA(bootsplash_active)) return; SET_EBDA(bootsplash_active, 0); enable_vga_text_console(); |