Explorar o código

disp: msm: dp: add timeout state for simulated AUX transfers

Add a new state to indicate timeout failures in simulation mode.
This can be used by test scripts to trigger a retry of the
session.

Change-Id: I9e250ba7d42fcb318698d8456b3acc5b55081abc
Signed-off-by: Tatenda Chipeperekwa <[email protected]>
Tatenda Chipeperekwa %!s(int64=6) %!d(string=hai) anos
pai
achega
d532f14537
Modificáronse 2 ficheiros con 5 adicións e 2 borrados
  1. 4 2
      msm/dp/dp_aux.c
  2. 1 0
      msm/dp/dp_aux.h

+ 4 - 2
msm/dp/dp_aux.c

@@ -505,7 +505,7 @@ static ssize_t dp_aux_transfer_debug(struct drm_dp_aux *drm_aux,
 		if (aux->read) {
 			timeout = wait_for_completion_timeout(&aux->comp, HZ);
 			if (!timeout) {
-				pr_err("aux timeout for 0x%x\n", msg->address);
+				pr_err("read timeout: 0x%x\n", msg->address);
 				atomic_set(&aux->aborted, 1);
 				ret = -ETIMEDOUT;
 				goto end;
@@ -519,7 +519,7 @@ static ssize_t dp_aux_transfer_debug(struct drm_dp_aux *drm_aux,
 
 			timeout = wait_for_completion_timeout(&aux->comp, HZ);
 			if (!timeout) {
-				pr_err("aux timeout for 0x%x\n", msg->address);
+				pr_err("write timeout: 0x%x\n", msg->address);
 				atomic_set(&aux->aborted, 1);
 				ret = -ETIMEDOUT;
 				goto end;
@@ -556,6 +556,8 @@ address_error:
 	memset(msg->buffer, 0, msg->size);
 	ret = msg->size;
 end:
+	if (ret == -ETIMEDOUT)
+		aux->dp_aux.state |= DP_STATE_AUX_TIMEOUT;
 	aux->dp_aux.reg = 0xFFFF;
 	aux->dp_aux.read = true;
 	aux->dp_aux.size = 0;

+ 1 - 0
msm/dp/dp_aux.h

@@ -21,6 +21,7 @@
 #define DP_STATE_LINK_MAINTENANCE_STARTED   BIT(9)
 #define DP_STATE_LINK_MAINTENANCE_COMPLETED BIT(10)
 #define DP_STATE_LINK_MAINTENANCE_FAILED    BIT(11)
+#define DP_STATE_AUX_TIMEOUT                BIT(12)
 
 enum dp_aux_error {
 	DP_AUX_ERR_NONE	= 0,