mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
drm/i915/display: Drop intel_vrr_vblank_delay and use set_context_latency
The helper intel_vrr_vblank_delay() was used to keep track of the SCL lines + the extra vblank delay required for ICL/TGL. This was used to wait for sufficient lines for: -push send bit to clear for VRR case -evasion to delay the commit. For first case we are using safe window scanline wait and with that we just need to wait for SCL lines, we do not need to wait for the extra vblank delay required for ICL/TGL. For the second case, we actually do not need to wait for extra lines before the undelayed vblank, if we are already in the safe window. To sum up, SCL lines is sufficient for both cases. So drop the helper intel_vrr_vblank_delay and just use crtc_state->set_context_latency instead. Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://lore.kernel.org/r/20250924141542.3122126-10-ankit.k.nautiyal@intel.com
This commit is contained in:
@@ -128,7 +128,7 @@ static int dsb_vblank_delay(struct intel_atomic_state *state,
|
||||
* scanline until the delayed vblank occurs after
|
||||
* TRANS_PUSH has been written.
|
||||
*/
|
||||
return intel_vrr_vblank_delay(crtc_state) + 1;
|
||||
return crtc_state->set_context_latency + 1;
|
||||
else
|
||||
return intel_mode_vblank_delay(&crtc_state->hw.adjusted_mode);
|
||||
}
|
||||
@@ -723,7 +723,7 @@ void intel_dsb_vblank_evade(struct intel_atomic_state *state,
|
||||
intel_dsb_emit_wait_dsl(dsb, DSB_OPCODE_WAIT_DSL_OUT, 0, 0);
|
||||
|
||||
if (pre_commit_is_vrr_active(state, crtc)) {
|
||||
int vblank_delay = intel_vrr_vblank_delay(crtc_state);
|
||||
int vblank_delay = crtc_state->set_context_latency;
|
||||
|
||||
end = intel_vrr_vmin_vblank_start(crtc_state);
|
||||
start = end - vblank_delay - latency;
|
||||
|
||||
@@ -681,7 +681,7 @@ void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
|
||||
else
|
||||
evade->vblank_start = intel_vrr_vmax_vblank_start(crtc_state);
|
||||
|
||||
vblank_delay = intel_vrr_vblank_delay(crtc_state);
|
||||
vblank_delay = crtc_state->set_context_latency;
|
||||
} else {
|
||||
evade->vblank_start = intel_mode_vblank_start(adjusted_mode);
|
||||
|
||||
|
||||
@@ -92,14 +92,6 @@ static int intel_vrr_extra_vblank_delay(struct intel_display *display)
|
||||
return DISPLAY_VER(display) < 13 ? 1 : 0;
|
||||
}
|
||||
|
||||
int intel_vrr_vblank_delay(const struct intel_crtc_state *crtc_state)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(crtc_state);
|
||||
|
||||
return crtc_state->set_context_latency +
|
||||
intel_vrr_extra_vblank_delay(display);
|
||||
}
|
||||
|
||||
static int intel_vrr_vmin_flipline_offset(struct intel_display *display)
|
||||
{
|
||||
/*
|
||||
|
||||
@@ -35,7 +35,6 @@ int intel_vrr_vmax_vtotal(const struct intel_crtc_state *crtc_state);
|
||||
int intel_vrr_vmin_vtotal(const struct intel_crtc_state *crtc_state);
|
||||
int intel_vrr_vmax_vblank_start(const struct intel_crtc_state *crtc_state);
|
||||
int intel_vrr_vmin_vblank_start(const struct intel_crtc_state *crtc_state);
|
||||
int intel_vrr_vblank_delay(const struct intel_crtc_state *crtc_state);
|
||||
bool intel_vrr_is_fixed_rr(const struct intel_crtc_state *crtc_state);
|
||||
void intel_vrr_transcoder_enable(const struct intel_crtc_state *crtc_state);
|
||||
void intel_vrr_transcoder_disable(const struct intel_crtc_state *crtc_state);
|
||||
|
||||
Reference in New Issue
Block a user