x86: Tidy up VESA mode numbers
authorSimon Glass <sjg@chromium.org>
Thu, 1 Jan 2015 23:18:04 +0000 (16:18 -0700)
committerSimon Glass <sjg@chromium.org>
Tue, 13 Jan 2015 15:24:59 +0000 (07:24 -0800)
There are some bits which should be ignored when displaying the mode number.
Make sure that they are not included in the mode that is displayed.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/x86/lib/bios.c

index 42853489fb5ab76d4efbdd670a75c299ddb6727c..1d75cfc263c383eb64a98d4d9b894ff031dd8736 100644 (file)
@@ -207,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);
+       video_mode |= (1 << 14);
        /* don't clear the framebuffer, we do that later */
-       mi->video_mode |= (1 << 15);
-       realmode_interrupt(0x10, VESA_SET_MODE, mi->video_mode,
+       video_mode |= (1 << 15);
+       realmode_interrupt(0x10, VESA_SET_MODE, video_mode,
                           0x0000, 0x0000, 0x0000, 0x0000);
 
        return 0;
@@ -236,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);
 }