From: Krzysztof H. <krz...@po...> - 2009-05-17 06:11:54
|
From: Krzysztof Helt <krz...@wp...> The intelfb driver sets color map depending on currently active pipe. However, if an LVDS display is attached (like in laptop) the active pipe variable is never set. The default value is PIPE_A and can be wrong. Set up the pipe variable during driver initialization after hardware state was read. I also found by experiment that if both pipes were enabled, the PIPE_B is used (active). The problem is visible in the 8 bpp mode if colors above 15 are used. The first 16 color entries are displayed correctly. Signed-off-by: Krzysztof Helt <krz...@wp...> --- This is not a regression. I have reproduced it in the 2.6.28 easily. Dean, please test the patch. diff --git a/drivers/video/intelfb/intelfbdrv.c b/drivers/video/intelfb/intelfbdrv.c index ace14fe..b47f6dd 100644 --- a/drivers/video/intelfb/intelfbdrv.c +++ b/drivers/video/intelfb/intelfbdrv.c @@ -871,6 +871,12 @@ static int __devinit intelfb_pci_register(struct pci_dev *pdev, intelfbhw_print_hw_state(dinfo, &dinfo->save_state); + /* Check whether pipe A or pipe B is enabled. */ + if (dinfo->save_state.pipe_a_conf & PIPECONF_ENABLE) + dinfo->pipe = PIPE_A; + if (dinfo->save_state.pipe_b_conf & PIPECONF_ENABLE) + dinfo->pipe = PIPE_B; + if (bailearly == 18) bailout(dinfo); ---------------------------------------------------------------------- Dzwonki na komorkê! Sprawdz >> http://link.interia.pl/f2161 |