[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