Make cursor positioning work by using both halves of the
authorJonathan A. Kollasch <jakllsch@kollasch.net>
Sat, 22 Mar 2008 15:27:26 +0000 (15:27 +0000)
committerJordan Crouse <jordan.crouse@amd.com>
Sat, 22 Mar 2008 15:27:26 +0000 (15:27 +0000)
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>
-This line, and those below, will be ignored--

M    libpayload/drivers/vga.c

git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3186 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

payloads/libpayload/drivers/vga.c

index 1c1315935c864ea9a9db8f8afe6db58d87e7d3fd..db1cda170b586b13bdf1f919d5f5446f13cd2435 100644 (file)
@@ -64,7 +64,7 @@ static void vga_get_cursor_pos(void)
        unsigned int addr;
 
        addr = ((unsigned int)crtc_read(0x0E)) << 8;
-       addr += crtc_read(0x0E);
+       addr += crtc_read(0x0F);
 
        cursorx = addr % WIDTH;
        cursory = addr / WIDTH;
@@ -93,7 +93,7 @@ static void vga_fixup_cursor(void)
 
        addr = cursorx + (WIDTH * cursory);
        crtc_write(addr >> 8, 0x0E);
-       crtc_write(addr, 0x0E);
+       crtc_write(addr, 0x0F);
 }
 
 void vga_cursor_enable(int state)
@@ -115,7 +115,7 @@ void vga_cursor_enable(int state)
 void vga_clear_line(uint8_t row, uint8_t ch, uint8_t attr)
 {
        int col;
-       uint16_t *ptr = VIDEO(0, row);
+       uint16_t *ptr = VIDEO(row, 0);
 
        for (col = 0; col < WIDTH; col++)
                ptr[col] = ((attr & 0xFF) << 8) | (ch & 0xFF);
@@ -123,7 +123,7 @@ void vga_clear_line(uint8_t row, uint8_t ch, uint8_t attr)
 
 static void vga_scroll_up(void)
 {
-       uint16_t *src = VIDEO(0, 1);
+       uint16_t *src = VIDEO(1, 0);
        uint16_t *dst = VIDEO(0, 0);
        int i;