On Thu, Mar 12, 2015 at 09:35:33AM +0200, Ander Conselvan De Oliveira wrote: > (for the series) > Reviewed-by: Ander Conselvan de Oliveira <conselvan2@xxxxxxxxx> Both merged to dinq, thanks. -Daniel > > On Wed, 2015-03-11 at 18:52 +0200, ville.syrjala@xxxxxxxxxxxxxxx wrote: > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > > > Ignore the current state of the pipe and just check crtc_state->enable > > and the number of FDI lanes required. This means we don't accidentally > > mistake the FDI lanes as being available of one of the pipes just > > happens to be disabled at the time of the check. Also we no longer > > consider pipe C to require FDI lanes when it's driving the eDP > > transcoder. > > > > We also take the opportunity to make the code a bit nicer looking by > > hiding the ugly bits in the new pipe_required_fdi_lanes() function. > > > > Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@xxxxxxxxx> > > Cc: Daniel Vetter <daniel@xxxxxxxx> > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > --- > > drivers/gpu/drm/i915/intel_display.c | 29 +++++++++++++++-------------- > > 1 file changed, 15 insertions(+), 14 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > > index 242a8a7..72e9816 100644 > > --- a/drivers/gpu/drm/i915/intel_display.c > > +++ b/drivers/gpu/drm/i915/intel_display.c > > @@ -3152,12 +3152,6 @@ static void intel_fdi_normal_train(struct drm_crtc *crtc) > > FDI_FE_ERRC_ENABLE); > > } > > > > -static bool pipe_has_enabled_pch(struct intel_crtc *crtc) > > -{ > > - return crtc->base.state->enable && crtc->active && > > - crtc->config->has_pch_encoder; > > -} > > - > > /* The FDI link training functions for ILK/Ibexpeak. */ > > static void ironlake_fdi_link_train(struct drm_crtc *crtc) > > { > > @@ -5548,13 +5542,21 @@ bool intel_connector_get_hw_state(struct intel_connector *connector) > > return encoder->get_hw_state(encoder, &pipe); > > } > > > > +static int pipe_required_fdi_lanes(struct drm_device *dev, enum pipe pipe) > > +{ > > + struct intel_crtc *crtc = > > + to_intel_crtc(intel_get_crtc_for_pipe(dev, pipe)); > > + > > + if (crtc->base.state->enable && > > + crtc->config->has_pch_encoder) > > + return crtc->config->fdi_lanes; > > + > > + return 0; > > +} > > + > > static bool ironlake_check_fdi_lanes(struct drm_device *dev, enum pipe pipe, > > struct intel_crtc_state *pipe_config) > > { > > - struct drm_i915_private *dev_priv = dev->dev_private; > > - struct intel_crtc *pipe_B_crtc = > > - to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_B]); > > - > > DRM_DEBUG_KMS("checking fdi config on pipe %c, lanes %i\n", > > pipe_name(pipe), pipe_config->fdi_lanes); > > if (pipe_config->fdi_lanes > 4) { > > @@ -5581,8 +5583,8 @@ static bool ironlake_check_fdi_lanes(struct drm_device *dev, enum pipe pipe, > > case PIPE_A: > > return true; > > case PIPE_B: > > - if (dev_priv->pipe_to_crtc_mapping[PIPE_C]->enabled && > > - pipe_config->fdi_lanes > 2) { > > + if (pipe_config->fdi_lanes > 2 && > > + pipe_required_fdi_lanes(dev, PIPE_C) > 0) { > > DRM_DEBUG_KMS("invalid shared fdi lane config on pipe %c: %i lanes\n", > > pipe_name(pipe), pipe_config->fdi_lanes); > > return false; > > @@ -5594,8 +5596,7 @@ static bool ironlake_check_fdi_lanes(struct drm_device *dev, enum pipe pipe, > > pipe_name(pipe), pipe_config->fdi_lanes); > > return false; > > } > > - if (pipe_has_enabled_pch(pipe_B_crtc) && > > - pipe_B_crtc->config->fdi_lanes > 2) { > > + if (pipe_required_fdi_lanes(dev, PIPE_B) > 2) { > > DRM_DEBUG_KMS("fdi link B uses too many lanes to enable link C\n"); > > return false; > > } > > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx