Commit 8ea90236 authored by Mario Limonciello (AMD)'s avatar Mario Limonciello (AMD) Committed by Alex Deucher
Browse files

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: default avatarAlex Hung <alex.hung@amd.com>
Signed-off-by: default avatarMario Limonciello (AMD) <superm1@kernel.org>
Signed-off-by: default avatarAlex Hung <alex.hung@amd.com>
Tested-by: default avatarDan Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
(cherry picked from commit a76d6f2c)
Cc: stable@vger.kernel.org
parent 81f4d4ba
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -997,8 +997,8 @@ enum dc_edid_status dm_helpers_read_local_edid(
	struct amdgpu_dm_connector *aconnector = link->priv;
	struct drm_connector *connector = &aconnector->base;
	struct i2c_adapter *ddc;
	int retry = 3;
	enum dc_edid_status edid_status;
	int retry = 25;
	enum dc_edid_status edid_status = EDID_NO_RESPONSE;
	const struct drm_edid *drm_edid;
	const struct edid *edid;

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

		if (!drm_edid)
			return EDID_NO_RESPONSE;
			continue;

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

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

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