On Thu, Oct 16, 2014 at 09:29:59PM +0300, ville.syrjala@xxxxxxxxxxxxxxx wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > In case we fumble something and end up picking an already used power > seqeuencer in vlv_power_sequencer_pipe() at least try to steal it > gracefully. In theory this should never happen though. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Just an aside: I'm not terribly in favour of code "just in case" - it tends to bitrot even faster than the code we actually use. But this doesn't look too onerous, so I've merged it. -Daniel > --- > drivers/gpu/drm/i915/intel_dp.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 74a6514..b58c94f 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -114,6 +114,8 @@ static void intel_dp_link_down(struct intel_dp *intel_dp); > static bool edp_panel_vdd_on(struct intel_dp *intel_dp); > static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); > static void vlv_init_panel_power_sequencer(struct intel_dp *intel_dp); > +static void vlv_steal_power_sequencer(struct drm_device *dev, > + enum pipe pipe); > > int > intel_dp_max_link_bw(struct intel_dp *intel_dp) > @@ -412,9 +414,13 @@ vlv_power_sequencer_pipe(struct intel_dp *intel_dp) > struct drm_i915_private *dev_priv = dev->dev_private; > struct intel_encoder *encoder; > unsigned int pipes = (1 << PIPE_A) | (1 << PIPE_B); > + enum pipe pipe; > > lockdep_assert_held(&dev_priv->pps_mutex); > > + /* We should never land here with regular DP ports */ > + WARN_ON(!is_edp(intel_dp)); > + > if (intel_dp->pps_pipe != INVALID_PIPE) > return intel_dp->pps_pipe; > > @@ -440,9 +446,12 @@ vlv_power_sequencer_pipe(struct intel_dp *intel_dp) > * are two power sequencers and up to two eDP ports. > */ > if (WARN_ON(pipes == 0)) > - return PIPE_A; > + pipe = PIPE_A; > + else > + pipe = ffs(pipes) - 1; > > - intel_dp->pps_pipe = ffs(pipes) - 1; > + vlv_steal_power_sequencer(dev, pipe); > + intel_dp->pps_pipe = pipe; > > DRM_DEBUG_KMS("picked pipe %c power sequencer for port %c\n", > pipe_name(intel_dp->pps_pipe), > -- > 2.0.4 > > _______________________________________________ > 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