aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2006-01-14 22:15:28 -0800
committerChris Wright <chrisw@sous-sol.org>2006-01-14 22:15:28 -0800
commit2d7fc97cea8a45158bc6428a3f99782e41e6b5c3 (patch)
tree194c7a72a9eb7d6ee784a99a2d9373b19e327ecc
parenta2a1d0e361eda14153c26854230d92f77d77da44 (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: Chris Wright <chrisw@sous-sol.org>
-rw-r--r--drivers/video/console/vgacon.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c
index 167de397e4b..f4e1c4b4191 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,
{
unsigned long flags;
unsigned int scanlines = height * c->vc_font.height;
- u8 scanlines_lo, r7, vsync_end, mode;
+ u8 scanlines_lo, r7, vsync_end, mode, max_scan;
spin_lock_irqsave(&vga_lock, flags);
+ outb_p(VGA_CRTC_MAX_SCAN, vga_video_port_reg);
+ max_scan = inb_p(vga_video_port_val);
+
+ if (max_scan & 0x80)
+ scanlines <<= 1;
+
outb_p(VGA_CRTC_MODE, vga_video_port_reg);
mode = inb_p(vga_video_port_val);