Skip to content

Commit

Permalink
drm/i915/icl: Clear the shared port PLLs from the new crtc state
Browse files Browse the repository at this point in the history
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: Imre Deak <imre.deak@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190708140735.20198-2-imre.deak@intel.com
  • Loading branch information
Imre Deak committed Jul 9, 2019
1 parent 5c28e3a commit f7ddc80
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions drivers/gpu/drm/i915/display/intel_dpll_mgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -3028,15 +3028,17 @@ static void icl_put_dplls(struct intel_atomic_state *state,
new_crtc_state->shared_dpll = NULL;

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];
struct icl_port_dpll *new_port_dpll =
&new_crtc_state->icl_port_dplls[id];

if (!port_dpll->pll)
continue;
new_port_dpll->pll = NULL;

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);
}
}

Expand Down

0 comments on commit f7ddc80

Please sign in to comment.