Adaptive Sync SDP is required when Panel replay is active and for
supporting VRR on PCON.

Since VRR on PCON still needs some effort, enable adaptive sync SDP only
when Panel replay with ALPM-Auxless is supported.

Set the AS_SDP mode for Fixed Vtotal mode for fixed refresh rate case.

Signed-off-by: Ankit Nautiyal <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index ee113e118fed..8583cab37123 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2934,7 +2934,15 @@ static void intel_dp_compute_as_sdp(struct intel_dp 
*intel_dp,
        const struct drm_display_mode *adjusted_mode =
                &crtc_state->hw.adjusted_mode;
 
-       if (!crtc_state->vrr.enable || !intel_dp->as_sdp_supported)
+       if (!intel_dp->as_sdp_supported)
+               return;
+
+       /*
+        * Support Adaptive-Sync SDP only for PR+AUX-less ALPM for now.
+        * It can be enabled for PCON + VRR, but that is currently not 
supported.
+        */
+       if (!CAN_PANEL_REPLAY(intel_dp) ||
+           !intel_alpm_aux_less_wake_supported(intel_dp))
                return;
 
        crtc_state->infoframes.enable |= 
intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC);
@@ -2948,9 +2956,12 @@ static void intel_dp_compute_as_sdp(struct intel_dp 
*intel_dp,
                as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
                as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
                as_sdp->target_rr_divider = true;
-       } else {
+       } else if (crtc_state->vrr.enable) {
                as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
                as_sdp->target_rr = 0;
+       } else {
+               as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
+               as_sdp->target_rr = 0;
        }
 }
 
-- 
2.45.2

Reply via email to