drm/amd/display: Rework HDMI data channel reads
authorRelja Vojvodic <rvojvodi@amd.com>
Wed, 24 Sep 2025 13:33:35 +0000 (09:33 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 20 Oct 2025 22:20:48 +0000 (18:20 -0400)
Fix the HDMI data channel reads to respect scdc_present field
to pass compliance test.

Reviewed-by: Wenjing Liu <wenjing.liu@amd.com>
Signed-off-by: Relja Vojvodic <rvojvodi@amd.com>
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dc_types.h
drivers/gpu/drm/amd/display/dc/link/link_detection.c
drivers/gpu/drm/amd/display/dc/link/protocols/link_ddc.c

index b5aa03a..8f8ccde 100644 (file)
@@ -212,6 +212,7 @@ struct dc_edid_caps {
        bool edid_hdmi;
        bool hdr_supported;
        bool rr_capable;
+       bool scdc_present;
 
        struct dc_panel_patch panel_patch;
 };
index 8530316..82a9e52 100644 (file)
@@ -270,6 +270,10 @@ static void read_scdc_caps(struct ddc_service *ddc_service,
        uint8_t slave_address = HDMI_SCDC_ADDRESS;
        uint8_t offset = HDMI_SCDC_MANUFACTURER_OUI;
 
+       if (ddc_service->link->local_sink &&
+               !ddc_service->link->local_sink->edid_caps.scdc_present)
+               return;
+
        link_query_ddc_data(ddc_service, slave_address, &offset,
                        sizeof(offset), sink->scdc_caps.manufacturer_OUI.byte,
                        sizeof(sink->scdc_caps.manufacturer_OUI.byte));
index 267180e..5d2bcce 100644 (file)
@@ -549,7 +549,8 @@ void write_scdc_data(struct ddc_service *ddc_service,
        /*Lower than 340 Scramble bit from SCDC caps*/
 
        if (ddc_service->link->local_sink &&
-               ddc_service->link->local_sink->edid_caps.panel_patch.skip_scdc_overwrite)
+               (ddc_service->link->local_sink->edid_caps.panel_patch.skip_scdc_overwrite ||
+               !ddc_service->link->local_sink->edid_caps.scdc_present))
                return;
 
        link_query_ddc_data(ddc_service, slave_address, &offset,