On Fri, 2014-01-17 at 15:59 +0200, ville.syrjala@xxxxxxxxxxxxxxx wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > I forgot to set new_config and new_enabled appropriately in the load > detect code. Fix it up. > > v2: Handle the other error path in intel_get_load_detect_pipe() too (Imre) > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Reviewed-by: Imre Deak <imre.deak@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_display.c | 20 ++++++++++++++++---- > 1 file changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index dde98020..15f55e8 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -7825,6 +7825,8 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector, > to_intel_connector(connector)->new_encoder = intel_encoder; > > intel_crtc = to_intel_crtc(crtc); > + intel_crtc->new_enabled = true; > + intel_crtc->new_config = &intel_crtc->config; > old->dpms_mode = connector->dpms; > old->load_detect_temp = true; > old->release_fb = NULL; > @@ -7848,21 +7850,28 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector, > DRM_DEBUG_KMS("reusing fbdev for load-detection framebuffer\n"); > if (IS_ERR(fb)) { > DRM_DEBUG_KMS("failed to allocate framebuffer for load-detection\n"); > - mutex_unlock(&crtc->mutex); > - return false; > + goto fail; > } > > if (intel_set_mode(crtc, mode, 0, 0, fb)) { > DRM_DEBUG_KMS("failed to set mode on load-detect pipe\n"); > if (old->release_fb) > old->release_fb->funcs->destroy(old->release_fb); > - mutex_unlock(&crtc->mutex); > - return false; > + goto fail; > } > > /* let the connector get through one full cycle before testing */ > intel_wait_for_vblank(dev, intel_crtc->pipe); > return true; > + > + fail: > + intel_crtc->new_enabled = crtc->enabled; > + if (intel_crtc->new_enabled) > + intel_crtc->new_config = &intel_crtc->config; > + else > + intel_crtc->new_config = NULL; > + mutex_unlock(&crtc->mutex); > + return false; > } > > void intel_release_load_detect_pipe(struct drm_connector *connector, > @@ -7872,6 +7881,7 @@ void intel_release_load_detect_pipe(struct drm_connector *connector, > intel_attached_encoder(connector); > struct drm_encoder *encoder = &intel_encoder->base; > struct drm_crtc *crtc = encoder->crtc; > + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); > > DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n", > connector->base.id, drm_get_connector_name(connector), > @@ -7880,6 +7890,8 @@ void intel_release_load_detect_pipe(struct drm_connector *connector, > if (old->load_detect_temp) { > to_intel_connector(connector)->new_encoder = NULL; > intel_encoder->new_crtc = NULL; > + intel_crtc->new_enabled = false; > + intel_crtc->new_config = NULL; > intel_set_mode(crtc, NULL, 0, 0, NULL); > > if (old->release_fb) {
Attachment:
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx