From: Andrew M. <ak...@li...> - 2009-05-17 06:19:38
|
On Sun, 17 May 2009 08:17:43 +0200 Krzysztof Helt <krz...@po...> wrote: > 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. hm, Dean's original report had This does not occur in kernel 2.6.29 -- I can see the Tasmanian devil in a penguin mask (Tuz) just fine and can view images, etc on the framebuffer. > Dean, please test the patch. Yes please. > 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); |