aboutsummaryrefslogtreecommitdiff
path: root/vgasrc/vgafb.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2009-05-25 00:44:29 -0400
committerKevin O'Connor <kevin@koconnor.net>2009-05-25 00:44:29 -0400
commit124b6f7c9fd56c0f8884a26e3d99d5660a0fd2f3 (patch)
tree10a4adbc9a18d2713633b9e25fe395c81cb012ef /vgasrc/vgafb.c
parenta959aa16bede4af541d3f50416950170525e0c53 (diff)
downloadseabios-hppa-124b6f7c9fd56c0f8884a26e3d99d5660a0fd2f3.zip
seabios-hppa-124b6f7c9fd56c0f8884a26e3d99d5660a0fd2f3.tar.gz
seabios-hppa-124b6f7c9fd56c0f8884a26e3d99d5660a0fd2f3.tar.bz2
VGA: Factor out hardware accesses from biosfn_set_video_mode.
Create vgahw_set_mode() that handles low-level vga setup in vgaio.c. Move screen clearing to new function in vgafb.c.
Diffstat (limited to 'vgasrc/vgafb.c')
-rw-r--r--vgasrc/vgafb.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/vgasrc/vgafb.c b/vgasrc/vgafb.c
index a34b6c0..6e10702 100644
--- a/vgasrc/vgafb.c
+++ b/vgasrc/vgafb.c
@@ -79,6 +79,24 @@ vgamem_fill_cga(u8 xstart, u8 ystart, u8 cols, u8 nbcols, u8 cheight,
}
void
+clear_screen(struct vgamode_s *vmode_g)
+{
+ if (GET_GLOBAL(vmode_g->class) == TEXT) {
+ memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0720, 32*1024);
+ return;
+ }
+ if (GET_GLOBAL(vmode_g->svgamode) < 0x0d) {
+ memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0000, 32*1024);
+ return;
+ }
+ outb(0x02, VGAREG_SEQU_ADDRESS);
+ u8 mmask = inb(VGAREG_SEQU_DATA);
+ outb(0x0f, VGAREG_SEQU_DATA); // all planes
+ memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0000, 64*1024);
+ outb(mmask, VGAREG_SEQU_DATA);
+}
+
+void
biosfn_scroll(u8 nblines, u8 attr, u8 rul, u8 cul, u8 rlr, u8 clr, u8 page,
u8 dir)
{