Commit f7ddc80e authored by Imre Deak's avatar Imre Deak

drm/i915/icl: Clear the shared port PLLs from the new crtc state

For consistency clear the icl_port_dplls from the new crtc state, when
releasing the DPLLs from the old crtc state. Leaving them set could
result in releasing the same PLLs multiple times from the same CRTC
state incorrectly (if the same CRTC was first used for a TypeC port then
for a combo PHY port).

Leaving the stale pointers behind happens not to cause a problem atm
(since the incorrect releasing will be a NOP), but we need to fix that
for consistency.
Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190708140735.20198-2-imre.deak@intel.com
parent 5c28e3a5
...@@ -3028,15 +3028,17 @@ static void icl_put_dplls(struct intel_atomic_state *state, ...@@ -3028,15 +3028,17 @@ static void icl_put_dplls(struct intel_atomic_state *state,
new_crtc_state->shared_dpll = NULL; new_crtc_state->shared_dpll = NULL;
for (id = ICL_PORT_DPLL_DEFAULT; id < ICL_PORT_DPLL_COUNT; id++) { for (id = ICL_PORT_DPLL_DEFAULT; id < ICL_PORT_DPLL_COUNT; id++) {
const struct icl_port_dpll *port_dpll = const struct icl_port_dpll *old_port_dpll =
&old_crtc_state->icl_port_dplls[id]; &old_crtc_state->icl_port_dplls[id];
struct icl_port_dpll *new_port_dpll =
&new_crtc_state->icl_port_dplls[id];
if (!port_dpll->pll) new_port_dpll->pll = NULL;
continue;
intel_unreference_shared_dpll(state, crtc, port_dpll->pll); if (!old_port_dpll->pll)
continue;
/* FIXME: Clear the icl_port_dplls from the new crtc state */ intel_unreference_shared_dpll(state, crtc, old_port_dpll->pll);
} }
} }
......
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