On Fri, Jun 19, 2015 at 03:19:47AM +0530, Gaurav K Singh wrote: > vblank interrupt should be disabled before starting the disable > sequence for MIPI command mode. Otherwise when pipe is disabled > TE interurpt will be still handled and one memory write command > will be sent with pipe disabled. This makes the pipe hw to get > stuck and it doesn't recover in the next enable sequence causing > display blank out. > > v2: Use drm_blank_off instead of platform specific disable vblank functions (Daniel) > > Signed-off-by: Yogesh Mohan Marimuthu <yogesh.mohan.marimuthu@xxxxxxxxx> > Signed-off-by: Gaurav K Singh <gaurav.k.singh@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dsi.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c > index d378246..7021591 100644 > --- a/drivers/gpu/drm/i915/intel_dsi.c > +++ b/drivers/gpu/drm/i915/intel_dsi.c > @@ -513,11 +513,25 @@ static void intel_dsi_enable_nop(struct intel_encoder *encoder) > > static void intel_dsi_pre_disable(struct intel_encoder *encoder) > { > + struct drm_device *dev = encoder->base.dev; > struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); > + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); > + int pipe = intel_crtc->pipe; > enum port port; > > DRM_DEBUG_KMS("\n"); > > + if (is_cmd_mode(intel_dsi)) { > + drm_vblank_off(dev, pipe); Now you'll have 2 drm_vblank_off in the crtc disable path, which should result in some pretty loud warning. If it doesn't we need to fix up drm_vblank_off to WARN, and you also need to move around the existing drm_vblank_off in the vlv/chv code into encoder callbacks for _all_ encoders. Hm, looking at drm_irq.c we indeed seem to be missing these crucial WARN_ONs. I'll float a patch to address this asap. -Daniel > + > + /* > + * Make sure that the last frame is sent otherwise pipe can get > + * stuck. Currently providing delay time for ~2 vblanks > + * assuming 60fps. > + */ > + mdelay(40); > + } > + > if (is_vid_mode(intel_dsi)) { > /* Send Shutdown command to the panel in LP mode */ > for_each_dsi_port(port, intel_dsi->ports) > -- > 1.7.9.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx