Author: jcrouse Date: 2008-08-11 19:19:10 +0200 (Mon, 11 Aug 2008) New Revision: 3498
Modified: trunk/payloads/libpayload/drivers/video/vga.c Log: Make cursor positioning work by using both halves of the VGA cursor position register.
Have vga_scroll_up() and vga_clear_line() present row/column arguments to the VIDEO() macro in the right order.
Signed-off-by: Jonathan A. Kollasch jakllsch@kollasch.net Acked-by: Jordan Crouse jordan.crouse@amd.com
Modified: trunk/payloads/libpayload/drivers/video/vga.c =================================================================== --- trunk/payloads/libpayload/drivers/video/vga.c 2008-08-11 17:10:58 UTC (rev 3497) +++ trunk/payloads/libpayload/drivers/video/vga.c 2008-08-11 17:19:10 UTC (rev 3498) @@ -54,7 +54,7 @@ { unsigned int addr; addr = ((unsigned int) crtc_read(0x0E)) << 8; - addr += crtc_read(0x0E); + addr += crtc_read(0x0F);
*x = addr % VIDEO_COLS; *y = addr / VIDEO_COLS; @@ -68,7 +68,7 @@
addr = x + (VIDEO_COLS * y); crtc_write(addr >> 8, 0x0E); - crtc_write(addr, 0x0E); + crtc_write(addr, 0x0F); }
static void vga_enable_cursor(int state) @@ -87,7 +87,7 @@ static void vga_clear_line(u8 row, u8 ch, u8 attr) { int col; - u16 *ptr = VIDEO(0, row); + u16 *ptr = VIDEO(row, 0);
for(col = 0; col < VIDEO_COLS; col++) ptr[col] = ((attr & 0xFF) << 8) | (ch & 0xFF); @@ -95,7 +95,7 @@
static void vga_scroll_up(void) { - u16 *src = VIDEO(0,1); + u16 *src = VIDEO(1,0); u16 *dst = VIDEO(0,0); int i;