Commit c39c9357 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Split intel_update_crtc() into two parts

Split intel_update_crtc() into two parts such that the first
part performs all the non-vblank evasion preparatory stuff,
and the second part just does the vblank evasion stuff.

For now we just call these back to back so that there is
no funcitonal change.
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230907122541.32261-3-ville.syrjala@linux.intel.comReviewed-by: default avatarStanislav Lisovskiy <stanislav.lisovskiy@intel.com>
parent d08361e1
...@@ -6760,7 +6760,7 @@ static void intel_enable_crtc(struct intel_atomic_state *state, ...@@ -6760,7 +6760,7 @@ static void intel_enable_crtc(struct intel_atomic_state *state,
intel_crtc_enable_pipe_crc(crtc); intel_crtc_enable_pipe_crc(crtc);
} }
static void intel_update_crtc(struct intel_atomic_state *state, static void intel_pre_update_crtc(struct intel_atomic_state *state,
struct intel_crtc *crtc) struct intel_crtc *crtc)
{ {
struct drm_i915_private *i915 = to_i915(state->base.dev); struct drm_i915_private *i915 = to_i915(state->base.dev);
...@@ -6803,6 +6803,15 @@ static void intel_update_crtc(struct intel_atomic_state *state, ...@@ -6803,6 +6803,15 @@ static void intel_update_crtc(struct intel_atomic_state *state,
intel_color_commit_noarm(new_crtc_state); intel_color_commit_noarm(new_crtc_state);
intel_crtc_planes_update_noarm(state, crtc); intel_crtc_planes_update_noarm(state, crtc);
}
static void intel_update_crtc(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
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);
/* Perform vblank evasion around commit operation */ /* Perform vblank evasion around commit operation */
intel_pipe_update_start(state, crtc); intel_pipe_update_start(state, crtc);
...@@ -6926,6 +6935,7 @@ static void intel_commit_modeset_enables(struct intel_atomic_state *state) ...@@ -6926,6 +6935,7 @@ static void intel_commit_modeset_enables(struct intel_atomic_state *state)
continue; continue;
intel_enable_crtc(state, crtc); intel_enable_crtc(state, crtc);
intel_pre_update_crtc(state, crtc);
intel_update_crtc(state, crtc); intel_update_crtc(state, crtc);
} }
} }
...@@ -6978,6 +6988,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state) ...@@ -6978,6 +6988,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
entries[pipe] = new_crtc_state->wm.skl.ddb; entries[pipe] = new_crtc_state->wm.skl.ddb;
update_pipes &= ~BIT(pipe); update_pipes &= ~BIT(pipe);
intel_pre_update_crtc(state, crtc);
intel_update_crtc(state, crtc); intel_update_crtc(state, crtc);
/* /*
...@@ -7045,6 +7056,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state) ...@@ -7045,6 +7056,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
entries[pipe] = new_crtc_state->wm.skl.ddb; entries[pipe] = new_crtc_state->wm.skl.ddb;
update_pipes &= ~BIT(pipe); update_pipes &= ~BIT(pipe);
intel_pre_update_crtc(state, crtc);
intel_update_crtc(state, crtc); intel_update_crtc(state, crtc);
} }
......
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