]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/dp: Require a HDMI sink for YCbCr output via PCON
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 9 Apr 2026 10:15:36 +0000 (13:15 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 13 Apr 2026 18:15:20 +0000 (21:15 +0300)
DVI sinks can't deal with YCbCr. Make sure we have a HDMI sink connected
after the PCON before doing YCbCr 4:2:0 output.

Cc: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20260409101539.22032-7-ville.syrjala@linux.intel.com
Tested-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
drivers/gpu/drm/i915/display/intel_dp.c

index 99672341f43e2a91bd761b45b6ac4f1e45123a58..e806828345300add100ca1c5325edcdb5c87eadc 100644 (file)
@@ -1349,10 +1349,15 @@ intel_dp_sink_format_valid(struct intel_connector *connector,
                           const struct drm_display_mode *mode,
                           enum intel_output_format sink_format)
 {
+       struct intel_dp *intel_dp = intel_attached_dp(connector);
        const struct drm_display_info *info = &connector->base.display_info;
 
        switch (sink_format) {
        case INTEL_OUTPUT_FORMAT_YCBCR420:
+               if (intel_dp->dfp.min_tmds_clock &&
+                   !intel_dp_has_hdmi_sink(intel_dp))
+                       return MODE_NO_420;
+
                if (!connector->base.ycbcr_420_allowed ||
                    !drm_mode_is_420(info, mode))
                        return MODE_NO_420;