Commit b5866401 authored by Paul Menzel's avatar Paul Menzel Committed by Linus Torvalds

intelfb: fix a bug when changing video timing

When changing video timing dynamically via fbset the screen sporadically
is rendered black.

With the attached fix which disables VCO prior to timing register change
the problem disappears.

I had a look at the Xserver register setup code. Here the VCO is
disabled in the same way [1].

This patch is taken from vga-sync-field version 0.0.11 [2][3].

[1] http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/src/i830_=
driver.c
[2] http://lowbyte.de/vga-sync-fields/vga-sync-fields-0.0.11.tgz
[3] http://easy-vdr.de/git?p=frc.git/.git;a=commit;h=dcc3b863e5a663652587619c357bd20075af6896
2587619c357bd20075af6896
Signed-off-by: default avatarThomas Hilber <sparkie@lowbyte.de>
Signed-off-by: default avatarPaul Menzel <paulepanter@users.sourceforge.net>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 491bcc9b
...@@ -1365,6 +1365,11 @@ static int intelfb_set_par(struct fb_info *info) ...@@ -1365,6 +1365,11 @@ static int intelfb_set_par(struct fb_info *info)
DBG_MSG("intelfb_set_par (%dx%d-%d)\n", info->var.xres, DBG_MSG("intelfb_set_par (%dx%d-%d)\n", info->var.xres,
info->var.yres, info->var.bits_per_pixel); info->var.yres, info->var.bits_per_pixel);
/*
* Disable VCO prior to timing register change.
*/
OUTREG(DPLL_A, INREG(DPLL_A) & ~DPLL_VCO_ENABLE);
intelfb_blank(FB_BLANK_POWERDOWN, info); intelfb_blank(FB_BLANK_POWERDOWN, info);
if (ACCEL(dinfo, info)) if (ACCEL(dinfo, info))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment