Commit c3b32658 authored by Maarten Lankhorst's avatar Maarten Lankhorst

drm/i915: Update atomic modeset state synchronously, v2.

All of this state should be updated as soon as possible. It shouldn't be
done later because then future updates may not depend on it.

Changes since v1:
- Move the modeset update to before drm_atomic_state_get. (Ville)
Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1478609742-13603-10-git-send-email-maarten.lankhorst@linux.intel.comReviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
parent 1f4faefe
...@@ -14369,14 +14369,8 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state) ...@@ -14369,14 +14369,8 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
drm_atomic_helper_wait_for_dependencies(state); drm_atomic_helper_wait_for_dependencies(state);
if (intel_state->modeset) { if (intel_state->modeset)
memcpy(dev_priv->min_pixclk, intel_state->min_pixclk,
sizeof(intel_state->min_pixclk));
dev_priv->active_crtcs = intel_state->active_crtcs;
dev_priv->atomic_cdclk_freq = intel_state->cdclk;
intel_display_power_get(dev_priv, POWER_DOMAIN_MODESET); intel_display_power_get(dev_priv, POWER_DOMAIN_MODESET);
}
for_each_crtc_in_state(state, crtc, old_crtc_state, i) { for_each_crtc_in_state(state, crtc, old_crtc_state, i) {
struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
...@@ -14609,6 +14603,13 @@ static int intel_atomic_commit(struct drm_device *dev, ...@@ -14609,6 +14603,13 @@ static int intel_atomic_commit(struct drm_device *dev,
intel_shared_dpll_commit(state); intel_shared_dpll_commit(state);
intel_atomic_track_fbs(state); intel_atomic_track_fbs(state);
if (intel_state->modeset) {
memcpy(dev_priv->min_pixclk, intel_state->min_pixclk,
sizeof(intel_state->min_pixclk));
dev_priv->active_crtcs = intel_state->active_crtcs;
dev_priv->atomic_cdclk_freq = intel_state->cdclk;
}
drm_atomic_state_get(state); drm_atomic_state_get(state);
INIT_WORK(&state->commit_work, INIT_WORK(&state->commit_work,
nonblock ? intel_atomic_commit_work : NULL); nonblock ? intel_atomic_commit_work : NULL);
......
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