Commit a04139c4 authored by Imre Deak's avatar Imre Deak

drm/i915/bxt: Fix HDMI DPLL configuration

a277ca7d 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.

v2:
- Make bxt_ddi_hdmi_set_dpll_hw_state() static.

Cc: Manasi Navare <manasi.d.navare@intel.com>
Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Cc: Durgadoss R <durgadoss.r@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Fixes: a277ca7d ("drm/i915: Split bxt_ddi_pll_select()")
Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Reviewed-by: default avatarAnder Conselvan de Oliveira <conselvan2@gmail.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1474901671-22719-1-git-send-email-imre.deak@intel.com
parent 4fc7e845
...@@ -1694,21 +1694,32 @@ bool bxt_ddi_dp_set_dpll_hw_state(int clock, ...@@ -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); return bxt_ddi_set_dpll_hw_state(clock, &clk_div, dpll_hw_state);
} }
static 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 * static struct intel_shared_dpll *
bxt_get_dpll(struct intel_crtc *crtc, bxt_get_dpll(struct intel_crtc *crtc,
struct intel_crtc_state *crtc_state, struct intel_crtc_state *crtc_state,
struct intel_encoder *encoder) struct intel_encoder *encoder)
{ {
struct bxt_clk_div clk_div = {0}; struct intel_dpll_hw_state dpll_hw_state = { };
struct intel_dpll_hw_state dpll_hw_state = {0};
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
struct intel_digital_port *intel_dig_port; struct intel_digital_port *intel_dig_port;
struct intel_shared_dpll *pll; struct intel_shared_dpll *pll;
int i, clock = crtc_state->port_clock; int i, clock = crtc_state->port_clock;
if (encoder->type == INTEL_OUTPUT_HDMI if (encoder->type == INTEL_OUTPUT_HDMI &&
&& !bxt_ddi_hdmi_pll_dividers(crtc, crtc_state, !bxt_ddi_hdmi_set_dpll_hw_state(crtc, crtc_state, clock,
clock, &clk_div)) &dpll_hw_state))
return NULL; return NULL;
if ((encoder->type == INTEL_OUTPUT_DP || if ((encoder->type == INTEL_OUTPUT_DP ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment