|
@@ -119,6 +119,7 @@ ssize_t edp_aux_transfer(struct drm_dp_aux *drm_aux, struct drm_dp_aux_msg *msg)
|
|
|
{
|
|
|
struct edp_aux *aux = to_edp_aux(drm_aux);
|
|
|
ssize_t ret;
|
|
|
+ unsigned long time_left;
|
|
|
bool native = msg->request & (DP_AUX_NATIVE_WRITE & DP_AUX_NATIVE_READ);
|
|
|
bool read = msg->request & (DP_AUX_I2C_READ & DP_AUX_NATIVE_READ);
|
|
|
|
|
@@ -147,15 +148,16 @@ ssize_t edp_aux_transfer(struct drm_dp_aux *drm_aux, struct drm_dp_aux_msg *msg)
|
|
|
goto unlock_exit;
|
|
|
|
|
|
DBG("wait_for_completion");
|
|
|
- ret = wait_for_completion_timeout(&aux->msg_comp, 300);
|
|
|
- if (ret <= 0) {
|
|
|
+ time_left = wait_for_completion_timeout(&aux->msg_comp, 300);
|
|
|
+ if (!time_left) {
|
|
|
/*
|
|
|
* Clear GO and reset AUX channel
|
|
|
* to cancel the current transaction.
|
|
|
*/
|
|
|
edp_write(aux->base + REG_EDP_AUX_TRANS_CTRL, 0);
|
|
|
msm_edp_aux_ctrl(aux, 1);
|
|
|
- pr_err("%s: aux timeout, %zd\n", __func__, ret);
|
|
|
+ pr_err("%s: aux timeout, %lu\n", __func__, time_left);
|
|
|
+ ret = -ETIMEDOUT;
|
|
|
goto unlock_exit;
|
|
|
}
|
|
|
DBG("completion");
|