]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/dp: Add a helper to decide if AS SDP can be used
authorAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Fri, 24 Apr 2026 09:09:41 +0000 (14:39 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Tue, 28 Apr 2026 10:47:00 +0000 (16:17 +0530)
Add a helper that determines whether AS SDP can be used for the
current DP configuration. For now this is true only when the sink
supports AS SDP and VRR is enabled, but more conditions may be added
later.

v2:
 - Rename to intel_dp_needs_as_sdp(). (Ville)
 - Add a #FIXME documenting non-atomic of DP SDP updates. (Ville)

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20260424090942.3060291-3-ankit.k.nautiyal@intel.com
drivers/gpu/drm/i915/display/intel_dp.c

index 8631df908b07f071997b86826f7963a1dcfe363c..8f2cd603f52aaaef8ea0dad5b50fb1ac261f7c3b 100644 (file)
@@ -3168,6 +3168,15 @@ static void intel_dp_compute_vsc_colorimetry(const struct intel_crtc_state *crtc
        vsc->content_type = DP_CONTENT_TYPE_NOT_DEFINED;
 }
 
+static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
+                                 struct intel_crtc_state *crtc_state)
+{
+       if (!intel_dp->as_sdp_supported)
+               return false;
+
+       return crtc_state->vrr.enable;
+}
+
 static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
                                    struct intel_crtc_state *crtc_state)
 {
@@ -3175,7 +3184,12 @@ 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)
+       /*
+        * #FIXME: SDP/infoframe updates aren’t truly atomic, and with the new
+        * cdclk->tc clock crossing we may transiently send a corrupted packet
+        * if the update lands mid‑transmission.
+        */
+       if (!intel_dp_needs_as_sdp(intel_dp, crtc_state))
                return;
 
        crtc_state->infoframes.enable |= intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC);