]> git.sur5r.net Git - u-boot/blobdiff - arch/x86/lib/bios.c
x86: fsp: Set up init runtime buffer in update_fsp_configs()
[u-boot] / arch / x86 / lib / bios.c
index 298fca632c9e62ca080b0066b69f173765986e13..1d75cfc263c383eb64a98d4d9b894ff031dd8736 100644 (file)
@@ -9,6 +9,7 @@
 #include <common.h>
 #include <bios_emul.h>
 #include <vbe.h>
+#include <linux/linkage.h>
 #include <asm/cache.h>
 #include <asm/processor.h>
 #include <asm/i8259.h>
@@ -206,12 +207,14 @@ static u8 vbe_get_mode_info(struct vbe_mode_info *mi)
 
 static u8 vbe_set_mode(struct vbe_mode_info *mi)
 {
-       debug("VBE: Setting VESA mode %#04x\n", mi->video_mode);
+       int video_mode = mi->video_mode;
+
+       debug("VBE: Setting VESA mode %#04x\n", video_mode);
        /* request linear framebuffer mode */
-       mi->video_mode |= (1 << 14);
-       /* request clearing of framebuffer */
-       mi->video_mode &= ~(1 << 15);
-       realmode_interrupt(0x10, VESA_SET_MODE, mi->video_mode,
+       video_mode |= (1 << 14);
+       /* don't clear the framebuffer, we do that later */
+       video_mode |= (1 << 15);
+       realmode_interrupt(0x10, VESA_SET_MODE, video_mode,
                           0x0000, 0x0000, 0x0000, 0x0000);
 
        return 0;
@@ -235,6 +238,7 @@ static void vbe_set_graphics(int vesa_mode, struct vbe_mode_info *mode_info)
                return;
        }
 
+       mode_info->video_mode &= 0x3ff;
        vbe_set_mode(mode_info);
 }
 
@@ -261,7 +265,6 @@ void bios_run_on_x86(pci_dev_t pcidev, unsigned long addr, int vesa_mode,
        /* Make sure the code is placed. */
        setup_realmode_code();
 
-       disable_caches();
        debug("Calling Option ROM at %lx, pci device %#x...", addr, num_dev);
 
        /* Option ROM entry point is at OPROM start + 3 */