[SeaBIOS] [PATCH 08/15] Fix finding VESA mode

Kevin O'Connor kevin at koconnor.net
Mon Sep 3 17:38:51 CEST 2012


On Sat, Sep 01, 2012 at 05:12:59PM +0200, Christian Gmeiner wrote:
> With the current code the following happens:
> 
> VBE mode info request: 4101
> VBE mode 4101 not found
> get_mode failed.
> 
> Looking at the provided mode (cx register) only bits 8-0
> define the video mode number. I am not sure if the current
> code ever worked.
> 
> Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
> ---
>  vgasrc/vbe.c | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/vgasrc/vbe.c b/vgasrc/vbe.c
> index 227a244..af72324 100644
> --- a/vgasrc/vbe.c
> +++ b/vgasrc/vbe.c
> @@ -72,9 +72,24 @@ vbe_104f01(struct bregs *regs)
>      struct vbe_mode_info *info = (void*)(regs->di+0);
>      u16 mode = regs->cx;
>  
> +    /*
> +     * Bitfields for VESA/VBE video mode number:
> +     *
> +     * Bit(s)  Description     (Table 04082)
> +     * 15     preserve display memory on mode change
> +     * 14     (VBE v2.0+) use linear (flat) frame buffer
> +     * 13     (VBE/AF 1.0P) VBE/AF initializes accelerator hardware
> +     * 12     reserved for VBE/AF
> +     * 11     (VBE v3.0) user user-specified CRTC refresh rate values
> +     * 10-9   reserved for future expansion
> +     * 8-0    video mode number (0xxh are non-VESA modes, 1xxh are VESA-defined)
> +     *
> +     * see http://www.ctyme.com/intr/rb-0274.htm
> +     */

This is true for the call to set mode (vbe_104f02), but the spec does
not say this for the get mode info call (104f01).  It would be odd to
pass in these additional bits when the caller just wants to get info
on the given mode.

-Kevin



More information about the SeaBIOS mailing list