On Thu, Jul 11, 2013 at 06:29:15PM +0200, Knut Petersen wrote: > On 11.07.2013 13:49, Chris Wilson wrote: > >On Thu, Jul 11, 2013 at 01:35:40PM +0200, Daniel Vetter wrote: > >>It's in the PFIT_CONTROL register, but very much associated with the > >>lvds encoder. So move the readout for it (in the case of an otherwise > >>disabled pfit) from the pipe to the lvds encoder's get_config > >>function. > >> > >>Otherwise we get a pipe state mismatch if we use pipe B for a non-lvds > >>output and we've left the dither bit enabled behind us. This can > >>happen if the BIOS has set the bit (some seem to unconditionally do > >>that, even in the complete absence of an lvds port), but not enabled > >>pipe B at boot-up. Then we won't clear the pfit control register since > >>we can only touch that if the pfit is associated with our pipe in the > >>crtc configuration - we could trample over the pfit state of the other > >>pipe otherwise since it's shared. Once pipe B is enabled we notice > >>that the 6to8 dither bit is set and complain about the mismatch. > >> > >>Note that testing indicates that we don't actually need to set this > >>bit when the pfit is disabled, dithering on 18bpp panels seems to work > >>regardless. But ripping that code out is not something for a bugfix > >>meant for -rc kernels. > >> > >>v2: While at it clarify the logic in i9xx_get_pfit_config, spurred by > >>comments from Chris on irc. > >> > >>v3: Use Chris suggestion to make the control flow in > >>i9xx_get_pfit_config easier to understand. > >> > >>v4: Kill the extra line, spotted by Chris. > >> > >>Reported-by: Knut Petersen <Knut_Petersen at t-online.de> > >>Cc: Knut Petersen <Knut_Petersen at t-online.de> > >>Cc: Chris Wilson <chris at chris-wilson.co.uk> > >>References: http://lists.freedesktop.org/archives/intel-gfx/2013-July/030092.html > >>Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch> > >Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk> > >-Chris > > > > Tested-by: Knut Petersen <Knut_Petersen at t-online.de> > > Thanks, that patch cures both inital boot and suspend/resume problems. > Attached find dmesg (inital boot) and dmesg2 (suspend/resume cycle). Thanks for testing and reporting this issue, patch is merged into my -fixes queue now. Thanks, Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch