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> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3498 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
12e27266c3
commit
42a0c80b9b
|
@ -54,7 +54,7 @@ static void vga_get_cursor(unsigned int *x, unsigned int *y, unsigned int *en)
|
||||||
{
|
{
|
||||||
unsigned int addr;
|
unsigned int addr;
|
||||||
addr = ((unsigned int) crtc_read(0x0E)) << 8;
|
addr = ((unsigned int) crtc_read(0x0E)) << 8;
|
||||||
addr += crtc_read(0x0E);
|
addr += crtc_read(0x0F);
|
||||||
|
|
||||||
*x = addr % VIDEO_COLS;
|
*x = addr % VIDEO_COLS;
|
||||||
*y = addr / VIDEO_COLS;
|
*y = addr / VIDEO_COLS;
|
||||||
|
@ -68,7 +68,7 @@ static void vga_set_cursor(unsigned int x, unsigned int y)
|
||||||
|
|
||||||
addr = x + (VIDEO_COLS * y);
|
addr = x + (VIDEO_COLS * y);
|
||||||
crtc_write(addr >> 8, 0x0E);
|
crtc_write(addr >> 8, 0x0E);
|
||||||
crtc_write(addr, 0x0E);
|
crtc_write(addr, 0x0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vga_enable_cursor(int state)
|
static void vga_enable_cursor(int state)
|
||||||
|
@ -87,7 +87,7 @@ static void vga_enable_cursor(int state)
|
||||||
static void vga_clear_line(u8 row, u8 ch, u8 attr)
|
static void vga_clear_line(u8 row, u8 ch, u8 attr)
|
||||||
{
|
{
|
||||||
int col;
|
int col;
|
||||||
u16 *ptr = VIDEO(0, row);
|
u16 *ptr = VIDEO(row, 0);
|
||||||
|
|
||||||
for(col = 0; col < VIDEO_COLS; col++)
|
for(col = 0; col < VIDEO_COLS; col++)
|
||||||
ptr[col] = ((attr & 0xFF) << 8) | (ch & 0xFF);
|
ptr[col] = ((attr & 0xFF) << 8) | (ch & 0xFF);
|
||||||
|
@ -95,7 +95,7 @@ static void vga_clear_line(u8 row, u8 ch, u8 attr)
|
||||||
|
|
||||||
static void vga_scroll_up(void)
|
static void vga_scroll_up(void)
|
||||||
{
|
{
|
||||||
u16 *src = VIDEO(0,1);
|
u16 *src = VIDEO(1,0);
|
||||||
u16 *dst = VIDEO(0,0);
|
u16 *dst = VIDEO(0,0);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue