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