diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2006-01-08 04:02:34 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-08 23:13:51 -0500 |
commit | 954de9141e75cf2f1ce69ccdbedc83ec827a01ec (patch) | |
tree | 05682a83cafc8784d8e60f0d9e98694ad4a932d2 | |
parent | b8b0af24353eafadf58a0889999700e43f135aad (diff) |
[PATCH] vgacon: fix doublescan mode
When doublescan mode is in use, scanlines must be doubled.
Thanks to Jason Dravet <dravet@hotmail.com> for reporting and testing.
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/video/console/vgacon.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index 167de397e4b4..f4e1c4b4191e 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c | |||
@@ -503,10 +503,16 @@ static int vgacon_doresize(struct vc_data *c, | |||
503 | { | 503 | { |
504 | unsigned long flags; | 504 | unsigned long flags; |
505 | unsigned int scanlines = height * c->vc_font.height; | 505 | unsigned int scanlines = height * c->vc_font.height; |
506 | u8 scanlines_lo, r7, vsync_end, mode; | 506 | u8 scanlines_lo, r7, vsync_end, mode, max_scan; |
507 | 507 | ||
508 | spin_lock_irqsave(&vga_lock, flags); | 508 | spin_lock_irqsave(&vga_lock, flags); |
509 | 509 | ||
510 | outb_p(VGA_CRTC_MAX_SCAN, vga_video_port_reg); | ||
511 | max_scan = inb_p(vga_video_port_val); | ||
512 | |||
513 | if (max_scan & 0x80) | ||
514 | scanlines <<= 1; | ||
515 | |||
510 | outb_p(VGA_CRTC_MODE, vga_video_port_reg); | 516 | outb_p(VGA_CRTC_MODE, vga_video_port_reg); |
511 | mode = inb_p(vga_video_port_val); | 517 | mode = inb_p(vga_video_port_val); |
512 | 518 | ||