summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2019-07-08 17:07:34 +0300
committerImre Deak <imre.deak@intel.com>2019-07-09 18:48:53 +0300
commit5c28e3a567fed9c22cb79f01294b1aaefee344fd (patch)
treee09c7e96d59ed6e27f619f07d234cfc4ef1a4acd /drivers/gpu/drm/i915/display/intel_dpll_mgr.c
parenta46f4e9e5ae99cc6da81d84b6eb4ec7c19a81a2f (diff)
drm/i915: Clear the shared PLL from the put_dplls() hook
For symmetry with the get_dplls() hook which sets the shared_dpll pointer clear the same pointer from the put_dplls() hook. While at it also constify the old crtc state. v2: - Constify the old crtc state. (Ville) 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-1-imre.deak@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_dpll_mgr.c')
-rw-r--r--drivers/gpu/drm/i915/display/intel_dpll_mgr.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
index 67cfe836286e..5c18f9012062 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 =
+ const 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);
}
/**
@@ -3015,13 +3019,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 =
+ const 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];
+ const struct icl_port_dpll *port_dpll =
+ &old_crtc_state->icl_port_dplls[id];
if (!port_dpll->pll)
continue;