Re: [PATCH v6 4/9] drm/i915/vrr: Update AS_SDP target_rr_divider based on CMRR config request

"Borah, Chaitanya Kumar" <[email protected]> Thu, 23 Jul 2026 21:47:26 +0530
Newsgroups org.freedesktop.lists.intel-gfx,org.freedesktop.lists.intel-xe
Message-ID <[email protected]>

On 7/22/2026 10:09 AM, Mitul Golani wrote:
> 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 1915d376b943..23e169d8db7b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -3111,6 +3111,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
> @@ -3131,7 +3132,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;

This should eventually move to state tracking. But for now works.

One fragility is that we use den == 1001 here and den != 1000 in compute 
config. Not a blocker though.

Reviewed-by: Chaitanya Kumar Borah <[email protected]>

>   	} else if (crtc_state->vrr.enable) {
>   		as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
>   	} else {