aboutsummaryrefslogtreecommitdiff
path: root/src/device
diff options
context:
space:
mode:
Diffstat (limited to 'src/device')
-rw-r--r--src/device/oprom/realmode/x86.c25
-rw-r--r--src/device/oprom/yabel/vbe.c43
-rw-r--r--src/device/pci_device.c7
3 files changed, 24 insertions, 51 deletions
diff --git a/src/device/oprom/realmode/x86.c b/src/device/oprom/realmode/x86.c
index 67e550cd5e..1a80a000e2 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 @@ static void setup_realmode_idt(void)
}
#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 @@ static int vbe_mode_info_valid(void)
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 @@ void vbe_set_graphics(void)
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 @@ void vbe_set_graphics(void)
}
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)
diff --git a/src/device/oprom/yabel/vbe.c b/src/device/oprom/yabel/vbe.c
index 8116c6b3ed..9a7fa045c7 100644
--- a/src/device/oprom/yabel/vbe.c
+++ b/src/device/oprom/yabel/vbe.c
@@ -34,9 +34,6 @@
#include <string.h>
#include <types.h>
-#if CONFIG(FRAMEBUFFER_SET_VESA_MODE)
-#include <boot/coreboot_tables.h>
-#endif
#include <endian.h>
@@ -52,10 +49,7 @@
#include "interrupt.h"
#include "device.h"
-#include <cbfs.h>
-
#include <delay.h>
-#include "../../src/lib/jpeg.h"
#include <vbe.h>
@@ -717,7 +711,14 @@ vbe_get_info(void)
}
#endif
-vbe_mode_info_t mode_info;
+static vbe_mode_info_t mode_info;
+
+const vbe_mode_info_t *vbe_mode_info(void)
+{
+ if (!mode_info_valid || !mode_info.vesa.phys_base_ptr)
+ return NULL;
+ return &mode_info;
+}
void vbe_set_graphics(void)
{
@@ -745,34 +746,6 @@ void vbe_set_graphics(void)
mode_info.video_mode = (1 << 14) | CONFIG_FRAMEBUFFER_VESA_MODE;
vbe_get_mode_info(&mode_info);
vbe_set_mode(&mode_info);
-
-#if CONFIG(BOOTSPLASH)
- unsigned char *framebuffer =
- (unsigned char *) le32_to_cpu(mode_info.vesa.phys_base_ptr);
- DEBUG_PRINTF_VBE("FRAMEBUFFER: 0x%p\n", framebuffer);
-
- struct jpeg_decdata *decdata;
-
- /* Switching Intel IGD to 1MB video memory will break this. Who
- * cares. */
- // int imagesize = 1024*768*2;
-
- unsigned char *jpeg = cbfs_boot_map_with_leak("bootsplash.jpg",
- CBFS_TYPE_BOOTSPLASH,
- NULL);
- if (!jpeg) {
- DEBUG_PRINTF_VBE("Could not find bootsplash.jpg\n");
- return;
- }
- DEBUG_PRINTF_VBE("Splash at %p ...\n", jpeg);
- dump(jpeg, 64);
-
- decdata = malloc(sizeof(*decdata));
- int ret = 0;
- DEBUG_PRINTF_VBE("Decompressing boot splash screen...\n");
- ret = jpeg_decode(jpeg, framebuffer, 1024, 768, 16, decdata);
- DEBUG_PRINTF_VBE("returns %x\n", ret);
-#endif
}
int fill_lb_framebuffer(struct lb_framebuffer *framebuffer)
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index 9c47085152..7786043a6c 100644
--- a/src/device/pci_device.c
+++ b/src/device/pci_device.c
@@ -34,6 +34,7 @@
#include <arch/acpi.h>
#include <device/pci_ops.h>
#include <bootmode.h>
+#include <bootsplash.h>
#include <console/console.h>
#include <stdlib.h>
#include <stdint.h>
@@ -49,6 +50,8 @@
#include <pc80/i8259.h>
#include <security/vboot/vbnv.h>
#include <timestamp.h>
+#include <types.h>
+
u8 pci_moving_config8(struct device *dev, unsigned int reg)
{
@@ -764,9 +767,13 @@ void pci_dev_init(struct device *dev)
return;
run_bios(dev, (unsigned long)ram);
+
gfx_set_init_done(1);
printk(BIOS_DEBUG, "VGA Option ROM was run\n");
timestamp_add_now(TS_OPROM_END);
+
+ if (CONFIG(BOOTSPLASH))
+ set_vesa_bootsplash();
}
/** Default device operation for PCI devices */