[1/2] drm/i915: Clear the shared PLL from the put_dplls() hook

Submitted by Imre Deak on July 5, 2019, 2:04 p.m.

Details

Message ID 20190705140423.28404-1-imre.deak@intel.com
State New
Headers show
Series "Series without cover letter" ( rev: 1 ) in Intel GFX

Not browsing as part of any series.

Commit Message

Imre Deak July 5, 2019, 2:04 p.m.
For symmetry with the get_dplls() hook which sets the shared_dpll
pointer clear the same pointer from the put_dplls() hook.

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c  |  2 --
 drivers/gpu/drm/i915/display/intel_dpll_mgr.c | 18 +++++++++++++-----
 2 files changed, 13 insertions(+), 7 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 919f5ac844c8..280e0f1b7005 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -13285,8 +13285,6 @@  static void intel_modeset_clear_plls(struct intel_atomic_state *state)
 		if (!needs_modeset(new_crtc_state))
 			continue;
 
-		new_crtc_state->shared_dpll = NULL;
-
 		intel_release_shared_dplls(state, crtc);
 	}
 }
diff --git a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
index f953971e7c3b..722b1deca999 100644
--- a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
+++ b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
@@ -323,13 +323,17 @@  static void intel_unreference_shared_dpll(struct intel_atomic_state *state,
 static void intel_put_dpll(struct intel_atomic_state *state,
 			   struct intel_crtc *crtc)
 {
-	struct intel_crtc_state *crtc_state =
+	struct intel_crtc_state *old_crtc_state =
 		intel_atomic_get_old_crtc_state(state, crtc);
+	struct intel_crtc_state *new_crtc_state =
+		intel_atomic_get_new_crtc_state(state, crtc);
+
+	new_crtc_state->shared_dpll = NULL;
 
-	if (!crtc_state->shared_dpll)
+	if (!old_crtc_state->shared_dpll)
 		return;
 
-	intel_unreference_shared_dpll(state, crtc, crtc_state->shared_dpll);
+	intel_unreference_shared_dpll(state, crtc, old_crtc_state->shared_dpll);
 }
 
 /**
@@ -3008,13 +3012,17 @@  static bool icl_get_dplls(struct intel_atomic_state *state,
 static void icl_put_dplls(struct intel_atomic_state *state,
 			  struct intel_crtc *crtc)
 {
-	struct intel_crtc_state *crtc_state =
+	struct intel_crtc_state *old_crtc_state =
 		intel_atomic_get_old_crtc_state(state, crtc);
+	struct intel_crtc_state *new_crtc_state =
+		intel_atomic_get_new_crtc_state(state, crtc);
 	enum icl_port_dpll_id id;
 
+	new_crtc_state->shared_dpll = NULL;
+
 	for (id = ICL_PORT_DPLL_DEFAULT; id < ICL_PORT_DPLL_COUNT; id++) {
 		struct icl_port_dpll *port_dpll =
-			&crtc_state->icl_port_dplls[id];
+			&old_crtc_state->icl_port_dplls[id];
 
 		if (!port_dpll->pll)
 			continue;