]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Move sleep into each retry for retrieve_link_cap()
authorMario Limonciello (AMD) <superm1@kernel.org>
Mon, 3 Nov 2025 17:17:44 +0000 (11:17 -0600)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 18 Nov 2025 15:50:28 +0000 (10:50 -0500)
[Why]
When a monitor is booting it's possible that it isn't ready to retrieve
link caps and this can lead to an EDID read failure:

```
[drm:retrieve_link_cap [amdgpu]] *ERROR* retrieve_link_cap: Read receiver caps dpcd data failed.
amdgpu 0000:c5:00.0: [drm] *ERROR* No EDID read.
```

[How]
Rather than msleep once and try a few times, msleep each time.  Should
be no changes for existing working monitors, but should correct reading
caps on a monitor that is slow to boot.

Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4672
Reviewed-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
Tested-by: Dan Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c

index 168c59bf1f169f42f2389eec1389e811d89ff2f0..a3f64509b1313920c1aa6b3e30f79a9841c46d42 100644 (file)
@@ -1756,12 +1756,13 @@ static bool retrieve_link_cap(struct dc_link *link)
        }
 
        dpcd_set_source_specific_data(link);
-       /* Sink may need to configure internals based on vendor, so allow some
-        * time before proceeding with possibly vendor specific transactions
-        */
-       msleep(post_oui_delay);
 
        for (i = 0; i < read_dpcd_retry_cnt; i++) {
+               /*
+                * Sink may need to configure internals based on vendor, so allow some
+                * time before proceeding with possibly vendor specific transactions
+                */
+               msleep(post_oui_delay);
                status = core_link_read_dpcd(
                                link,
                                DP_DPCD_REV,