On ti, 2016-09-27 at 11:03 +0300, Ander Conselvan De Oliveira wrote:
> On Mon, 2016-09-26 at 17:54 +0300, Imre Deak wrote:
> > a277ca7dc01d should've been a no-functional-change commit, but it
> > removed the initialization of the dpll_hw_state for HDMI outputs,
> > resulting in state mismatches and a failed modeset with blank
> > screen. Fix this by reinstating the dpll_hw_state initialization.
> > 
> > Fixes: a277ca7dc01d ("drm/i915: Split bxt_ddi_pll_select()")
> > Signed-off-by: Imre Deak <imre.d...@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_dpll_mgr.c | 21 ++++++++++++++++-----
> >  1 file changed, 16 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_dpll_mgr.c
> > b/drivers/gpu/drm/i915/intel_dpll_mgr.c
> > index c26d18a..e8bf838 100644
> > --- a/drivers/gpu/drm/i915/intel_dpll_mgr.c
> > +++ b/drivers/gpu/drm/i915/intel_dpll_mgr.c
> > @@ -1694,21 +1694,32 @@ bool bxt_ddi_dp_set_dpll_hw_state(int
> > clock,
> >     return bxt_ddi_set_dpll_hw_state(clock, &clk_div,
> > dpll_hw_state);
> >  }
> >  
> > +bool bxt_ddi_hdmi_set_dpll_hw_state(struct intel_crtc *intel_crtc,
> > +                               struct intel_crtc_state
> > *crtc_state,
> > +                               int clock,
> > +                               struct intel_dpll_hw_state
> > *dpll_hw_state)
> > +{
> > +   struct bxt_clk_div clk_div = { };
> > +
> > +   bxt_ddi_hdmi_pll_dividers(intel_crtc, crtc_state, clock,
> > &clk_div);
> > +
> > +   return bxt_ddi_set_dpll_hw_state(clock, &clk_div,
> > dpll_hw_state);
> > +}
> > +
> >  static struct intel_shared_dpll *
> >  bxt_get_dpll(struct intel_crtc *crtc,
> >             struct intel_crtc_state *crtc_state,
> >             struct intel_encoder *encoder)
> >  {
> > -   struct bxt_clk_div clk_div = {0};
> > -   struct intel_dpll_hw_state dpll_hw_state = {0};
> > +   struct intel_dpll_hw_state dpll_hw_state = { };
> >     struct drm_i915_private *dev_priv = to_i915(crtc-
> > >base.dev);
> >     struct intel_digital_port *intel_dig_port;
> >     struct intel_shared_dpll *pll;
> >     int i, clock = crtc_state->port_clock;
> >  
> > -   if (encoder->type == INTEL_OUTPUT_HDMI
> > -       && !bxt_ddi_hdmi_pll_dividers(crtc, crtc_state,
> > -                                     clock, &clk_div))
> > +   if (encoder->type == INTEL_OUTPUT_HDMI &&
> > +       !bxt_ddi_hdmi_set_dpll_hw_state(crtc, crtc_state,
> > clock,
> > +                                       &dpll_hw_state))
> 
> In my original patch there was just a straight call
> to bxt_ddi_set_dpll_hw_state() after this and the DP if condition
> (which also only calculated dividers).

That would require exporting bxt_ddi_dp_pll_dividers(), so I just left
it as-is. I forgot to make bxt_ddi_hdmi_set_dpll_hw_state() static, I
fixed that up while applying.

Pushed to -dinq, thanks for the review.

> But whatever fixes the issue:
> Reviewed-by: Ander Conselvan de Oliveira <conselv...@gmail.com>
> 
> 
> >             return NULL;
> >  
> >     if ((encoder->type == INTEL_OUTPUT_DP ||
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to