AS SDP for Panel Replay with AUX-less ALPM and the related DP_FIXED_VTOTAL_AS_SDP_EN_IN_PR_ACTIVE setting are limited to eDP by intel_psr_needs_alpm_aux_less(). DP Panel Replay can now use AUX-less ALPM as well, so base these on the ALPM state instead.
has_alpm is decided only in the late compute config, after AS SDP has been computed. Use alpm_state.aux_less_possible to decide whether AS SDP is needed, and has_alpm for the link training DPCD setting, which happens with the final state. intel_psr_needs_alpm_aux_less() is now used only within intel_psr.c, so make it static. Cc: Jouni Högander <[email protected]> Signed-off-by: Animesh Manna <[email protected]> --- drivers/gpu/drm/i915/display/intel_dp.c | 4 +++- drivers/gpu/drm/i915/display/intel_dp_link_training.c | 2 +- drivers/gpu/drm/i915/display/intel_psr.c | 4 ++-- drivers/gpu/drm/i915/display/intel_psr.h | 2 -- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 43b17d2ed93f..02ea3f2b00ac 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -3274,7 +3274,9 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp, if (drm_dp_is_branch(intel_dp->dpcd)) return false; - if (intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) && + /* has_alpm is not final yet, so check if AUX-less ALPM is possible */ + if (crtc_state->has_panel_replay && + crtc_state->alpm_state.aux_less_possible && !intel_psr_pr_async_video_timing_supported(intel_dp)) return true; diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c index 0dbc6174c402..c7a3cfd29e37 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c @@ -1124,7 +1124,7 @@ static bool intel_dp_pr_with_as_sdp_enabled(struct intel_dp *intel_dp, const struct intel_crtc_state *crtc_state) { - return intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) && + return crtc_state->has_panel_replay && crtc_state->has_alpm && (crtc_state->infoframes.enable & intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC)); } diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c index 4c429a14b50e..0875de33f0da 100644 --- a/drivers/gpu/drm/i915/display/intel_psr.c +++ b/drivers/gpu/drm/i915/display/intel_psr.c @@ -4566,8 +4566,8 @@ static bool intel_psr_needs_alpm(struct intel_dp *intel_dp, crtc_state->has_panel_replay); } -bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp, - const struct intel_crtc_state *crtc_state) +static bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp, + const struct intel_crtc_state *crtc_state) { return intel_dp_is_edp(intel_dp) && crtc_state->has_panel_replay; } diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h index 2557776a402b..8adb27c21408 100644 --- a/drivers/gpu/drm/i915/display/intel_psr.h +++ b/drivers/gpu/drm/i915/display/intel_psr.h @@ -79,8 +79,6 @@ void intel_psr_trigger_frame_change_event(struct intel_dsb *dsb, int intel_psr_min_set_context_latency(const struct intel_crtc_state *crtc_state); void intel_psr_connector_debugfs_add(struct intel_connector *connector); void intel_psr_debugfs_register(struct intel_display *display); -bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp, - const struct intel_crtc_state *crtc_state); bool intel_psr_wake_lines_fit_into_vblank(const struct intel_crtc_state *crtc_state, int wake_lines); void intel_psr_compute_config_late(struct intel_dp *intel_dp, -- 2.43.0
