Skip to content

Commit

Permalink
drm/i915: Clear shared dpll based on old state, v2.
Browse files Browse the repository at this point in the history
Atomic resume was preserving the dpll state because it was required
for clearing pll state correctly. If we look at the old_crtc_state
for pll to clear this is not needed and the hack can be removed.

Changes since v1:
- Rename dpll variable to old_dpll. (Ville)

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1455022343-15222-1-git-send-email-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
  • Loading branch information
Maarten Lankhorst committed Feb 15, 2016
1 parent 1ffedc0 commit fb1a38a
Showing 1 changed file with 8 additions and 13 deletions.
21 changes: 8 additions & 13 deletions drivers/gpu/drm/i915/intel_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -13098,8 +13098,6 @@ static void intel_modeset_clear_plls(struct drm_atomic_state *state)
struct drm_device *dev = state->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_shared_dpll_config *shared_dpll = NULL;
struct intel_crtc *intel_crtc;
struct intel_crtc_state *intel_crtc_state;
struct drm_crtc *crtc;
struct drm_crtc_state *crtc_state;
int i;
Expand All @@ -13108,21 +13106,21 @@ static void intel_modeset_clear_plls(struct drm_atomic_state *state)
return;

for_each_crtc_in_state(state, crtc, crtc_state, i) {
int dpll;

intel_crtc = to_intel_crtc(crtc);
intel_crtc_state = to_intel_crtc_state(crtc_state);
dpll = intel_crtc_state->shared_dpll;
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
int old_dpll = to_intel_crtc_state(crtc->state)->shared_dpll;

if (!needs_modeset(crtc_state) || dpll == DPLL_ID_PRIVATE)
if (!needs_modeset(crtc_state))
continue;

intel_crtc_state->shared_dpll = DPLL_ID_PRIVATE;
to_intel_crtc_state(crtc_state)->shared_dpll = DPLL_ID_PRIVATE;

if (old_dpll == DPLL_ID_PRIVATE)
continue;

if (!shared_dpll)
shared_dpll = intel_atomic_get_shared_dpll_state(state);

shared_dpll[dpll].crtc_mask &= ~(1 << intel_crtc->pipe);
shared_dpll[old_dpll].crtc_mask &= ~(1 << intel_crtc->pipe);
}
}

Expand Down Expand Up @@ -15927,9 +15925,6 @@ void intel_display_resume(struct drm_device *dev)

state->acquire_ctx = dev->mode_config.acquire_ctx;

/* preserve complete old state, including dpll */
intel_atomic_get_shared_dpll_state(state);

for_each_crtc(dev, crtc) {
struct drm_crtc_state *crtc_state =
drm_atomic_get_crtc_state(state, crtc);
Expand Down

0 comments on commit fb1a38a

Please sign in to comment.