All of lore.kernel.org
 help / color / mirror / Atom feed
* Radeon regression fix
@ 2011-09-29 14:21 Brad Campbell
  2011-09-29 14:36 ` Alex Deucher
  0 siblings, 1 reply; 12+ messages in thread
From: Brad Campbell @ 2011-09-29 14:21 UTC (permalink / raw)
  To: alexdeucher; +Cc: airlied, dri-devel, linux-kernel

This patch fixes a regression introduced between 2.6.39 & 3.1-rc1 
whereby the displayport AUX channel stopped re-trying commands that 
elicited a DEFER response.

Signed-off-by: Brad Campbell <brad@fnarfbargle.com>

diff --git a/drivers/gpu/drm/radeon/atombios_dp.c 
b/drivers/gpu/drm/radeon/atombios_dp.c
index 7ad43c6..b8450f4 100644
--- a/drivers/gpu/drm/radeon/atombios_dp.c
+++ b/drivers/gpu/drm/radeon/atombios_dp.c
@@ -60,11 +60,13 @@ static int radeon_process_aux_ch(struct 
radeon_i2c_chan *chan,
  	int index = GetIndexIntoMasterTable(COMMAND, 
ProcessAuxChannelTransaction);
  	unsigned char *base;
  	int recv_bytes;
+	int retry_count = 0;

  	memset(&args, 0, sizeof(args));

  	base = (unsigned char *)rdev->mode_info.atom_context->scratch;

+retry:
  	memcpy(base, send, send_bytes);

  	args.v1.lpAuxRequest = 0;
@@ -79,6 +81,16 @@ static int radeon_process_aux_ch(struct 
radeon_i2c_chan *chan,

  	*ack = args.v1.ucReplyStatus;

+	/* defer */
+	if (args.v1.ucReplyStatus == 0x20){
+		DRM_DEBUG_KMS("dp_aux_ch defer\n");
+			/* 10 is an arbitrary value from the pre-regression patch
+			in practice I've never seen more than one */
+			if (retry_count++ < 10)
+				goto retry;
+		return -EBUSY;
+	}
+
  	/* timeout */
  	if (args.v1.ucReplyStatus == 1) {
  		DRM_DEBUG_KMS("dp_aux_ch timeout\n");

^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2011-10-03 13:14 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-29 14:21 Radeon regression fix Brad Campbell
2011-09-29 14:36 ` Alex Deucher
2011-09-29 15:10   ` Brad Campbell
2011-09-29 15:21   ` Brad Campbell
2011-09-30  0:23     ` Brad Campbell
2011-09-30  4:59       ` Alex Deucher
2011-09-30  5:14         ` Brad Campbell
2011-09-30  5:14           ` Brad Campbell
2011-09-30  5:39           ` Alex Deucher
2011-09-30  5:39             ` Alex Deucher
2011-10-03 13:13             ` [PATCH 1/2] drm/radeon/kms: fix regression in DP aux defer handling alexdeucher
2011-10-03 13:13             ` [PATCH 2/2] drm/radeon/kms: add retry limits for native DP aux defer alexdeucher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.