[Intel-gfx] [PATCH 2/2] drm/i915: Rewrite IVB FDI bifurcation conflict checks

Daniel Vetter daniel at ffwll.ch
Thu Mar 12 02:51:26 PDT 2015


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 at gmail.com>

Both merged to dinq, thanks.
-Daniel

> 
> On Wed, 2015-03-11 at 18:52 +0200, ville.syrjala at linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > 
> > 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 at intel.com>
> > Cc: Daniel Vetter <daniel at ffwll.ch>
> > Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > ---
> >  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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch


More information about the Intel-gfx mailing list