aboutsummaryrefslogtreecommitdiff
path: root/vgasrc/vbe.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2012-01-21 11:26:37 -0500
committerKevin O'Connor <kevin@koconnor.net>2012-02-01 20:35:48 -0500
commite6bc4c1c5817e9c2d1f55b5c0ad5167e93aed418 (patch)
tree000d400718d26759e7b48f915a622ade7bb3d42a /vgasrc/vbe.c
parent4a73f933968e5cf6f2a6ce1ad87448dd6b136e48 (diff)
downloadseabios-e6bc4c1c5817e9c2d1f55b5c0ad5167e93aed418.zip
seabios-e6bc4c1c5817e9c2d1f55b5c0ad5167e93aed418.tar.gz
seabios-e6bc4c1c5817e9c2d1f55b5c0ad5167e93aed418.tar.bz2
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.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/vgasrc/vbe.c b/vgasrc/vbe.c
index caf856d..b6ffb97 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;
}