Compute AS_SDP target_rr_divider based on actual CMRR request
requirement.

Signed-off-by: Mitul Golani <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index b2464a3dac05..ec5ec22f5173 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3073,6 +3073,7 @@ static void intel_dp_compute_as_sdp(struct intel_dp 
*intel_dp,
        struct drm_dp_as_sdp *as_sdp = &crtc_state->infoframes.as_sdp;
        const struct drm_display_mode *adjusted_mode =
                &crtc_state->hw.adjusted_mode;
+       struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 
        /*
         * #FIXME: SDP/infoframe updates aren’t truly atomic, and with the new
@@ -3093,7 +3094,11 @@ static void intel_dp_compute_as_sdp(struct intel_dp 
*intel_dp,
        if (crtc_state->cmrr.enable) {
                as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
                as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
-               as_sdp->target_rr_divider = true;
+
+               if (crtc->force_cmrr.denominator == 1001)
+                       as_sdp->target_rr_divider = true;
+               else
+                       as_sdp->target_rr_divider = false;
        } else if (crtc_state->vrr.enable) {
                as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
        } else {
-- 
2.48.1

Reply via email to