[Intel-gfx] [PATCH] drm/i915/bxt: Fix HDMI DPLL configuration

Jani Nikula jani.nikula at linux.intel.com
Mon Sep 26 15:02:20 UTC 2016


On Mon, 26 Sep 2016, Imre Deak <imre.deak at intel.com> 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.deak at intel.com>

Cc: Manasi Navare <manasi.d.navare at intel.com>
Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
Cc: Durgadoss R <durgadoss.r at intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi at 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))
>  		return NULL;
>  
>  	if ((encoder->type == INTEL_OUTPUT_DP ||

-- 
Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list