diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2012-01-21 11:26:37 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2012-02-01 20:35:48 -0500 |
commit | e6bc4c1c5817e9c2d1f55b5c0ad5167e93aed418 (patch) | |
tree | 000d400718d26759e7b48f915a622ade7bb3d42a /vgasrc/vbe.c | |
parent | 4a73f933968e5cf6f2a6ce1ad87448dd6b136e48 (diff) | |
download | seabios-e6bc4c1c5817e9c2d1f55b5c0ad5167e93aed418.tar.gz |
vgabios: Move BDA setting from driver code to common code.
Always setup the BDA on a mode switch. Call that BDA setup code
unconditionally.
Also, always set vbe_mode and use that for finding the current mode
and for reporting the mode to vbe callers.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'vgasrc/vbe.c')
-rw-r--r-- | vgasrc/vbe.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/vgasrc/vbe.c b/vgasrc/vbe.c index caf856d7..b6ffb979 100644 --- a/vgasrc/vbe.c +++ b/vgasrc/vbe.c @@ -184,9 +184,9 @@ vbe_104f02(struct bregs *regs) { dprintf(1, "VBE mode set: %x\n", regs->bx); - int mode = regs->bx & 0x1ff; - int flags = regs->bx & (MF_CUSTOMCRTC|MF_LINEARFB|MF_NOCLEARMEM); - int ret = vgahw_set_mode(mode, flags); + int mode = regs->bx & ~MF_VBEFLAGS; + int flags = regs->bx & MF_VBEFLAGS; + int ret = vga_set_mode(mode, flags); regs->ah = ret; regs->al = 0x4f; @@ -195,12 +195,8 @@ vbe_104f02(struct bregs *regs) static void vbe_104f03(struct bregs *regs) { - u16 mode = GET_BDA(vbe_mode); - if (!mode) - regs->bx = GET_BDA(video_mode); - + regs->bx = GET_BDA(vbe_mode); dprintf(1, "VBE current mode=%x\n", regs->bx); - regs->ax = 0x004f; } |