Skip to content

Commit 8ea9023

Browse files
superm1alexdeucher
authored andcommitted
drm/amd/display: Increase EDID read retries
[WHY] When monitor is still booting EDID read can fail while DPCD read is successful. In this case no EDID data will be returned, and this could happen for a while. [HOW] Increase number of attempts to read EDID in dm_helpers_read_local_edid() to 25. Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4672 Cc: Mario Limonciello <mario.limonciello@amd.com> Cc: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Alex Hung <alex.hung@amd.com> Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org> Signed-off-by: Alex Hung <alex.hung@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit a76d6f2) Cc: stable@vger.kernel.org
1 parent 81f4d4b commit 8ea9023

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -997,8 +997,8 @@ enum dc_edid_status dm_helpers_read_local_edid(
997997
struct amdgpu_dm_connector *aconnector = link->priv;
998998
struct drm_connector *connector = &aconnector->base;
999999
struct i2c_adapter *ddc;
1000-
int retry = 3;
1001-
enum dc_edid_status edid_status;
1000+
int retry = 25;
1001+
enum dc_edid_status edid_status = EDID_NO_RESPONSE;
10021002
const struct drm_edid *drm_edid;
10031003
const struct edid *edid;
10041004

@@ -1028,7 +1028,7 @@ enum dc_edid_status dm_helpers_read_local_edid(
10281028
}
10291029

10301030
if (!drm_edid)
1031-
return EDID_NO_RESPONSE;
1031+
continue;
10321032

10331033
edid = drm_edid_raw(drm_edid); // FIXME: Get rid of drm_edid_raw()
10341034
if (!edid ||
@@ -1046,7 +1046,7 @@ enum dc_edid_status dm_helpers_read_local_edid(
10461046
&sink->dc_edid,
10471047
&sink->edid_caps);
10481048

1049-
} while (edid_status == EDID_BAD_CHECKSUM && --retry > 0);
1049+
} while ((edid_status == EDID_BAD_CHECKSUM || edid_status == EDID_NO_RESPONSE) && --retry > 0);
10501050

10511051
if (edid_status != EDID_OK)
10521052
DRM_ERROR("EDID err: %d, on connector: %s",

0 commit comments

Comments
 (0)