Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f28d128 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/radeon: retry dcpd fetch

Retry the dpcd fetch several times.  Some eDP panels
fail several times before the fetch is successful.

bug:
https://bugs.freedesktop.org/show_bug.cgi?id=73530



Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
parent 755c814a
Loading
Loading
Loading
Loading
+11 −9
Original line number Original line Diff line number Diff line
@@ -421,11 +421,12 @@ bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector)
{
{
	struct radeon_connector_atom_dig *dig_connector = radeon_connector->con_priv;
	struct radeon_connector_atom_dig *dig_connector = radeon_connector->con_priv;
	u8 msg[DP_DPCD_SIZE];
	u8 msg[DP_DPCD_SIZE];
	int ret;
	int ret, i;


	for (i = 0; i < 7; i++) {
		ret = drm_dp_dpcd_read(&radeon_connector->ddc_bus->aux, DP_DPCD_REV, msg,
		ret = drm_dp_dpcd_read(&radeon_connector->ddc_bus->aux, DP_DPCD_REV, msg,
				       DP_DPCD_SIZE);
				       DP_DPCD_SIZE);
	if (ret > 0) {
		if (ret == DP_DPCD_SIZE) {
			memcpy(dig_connector->dpcd, msg, DP_DPCD_SIZE);
			memcpy(dig_connector->dpcd, msg, DP_DPCD_SIZE);


			DRM_DEBUG_KMS("DPCD: %*ph\n", (int)sizeof(dig_connector->dpcd),
			DRM_DEBUG_KMS("DPCD: %*ph\n", (int)sizeof(dig_connector->dpcd),
@@ -435,6 +436,7 @@ bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector)


			return true;
			return true;
		}
		}
	}
	dig_connector->dpcd[0] = 0;
	dig_connector->dpcd[0] = 0;
	return false;
	return false;
}
}