summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/tegra/dc/nvhdcp.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/video/tegra/dc/nvhdcp.c b/drivers/video/tegra/dc/nvhdcp.c
index 215f44538dcc..657f621f0c23 100644
--- a/drivers/video/tegra/dc/nvhdcp.c
+++ b/drivers/video/tegra/dc/nvhdcp.c
@@ -980,12 +980,12 @@ static void nvhdcp_downstream_worker(struct work_struct *work)
nvhdcp_info("link verified!\n");
while (1) {
- if (nvhdcp->state != STATE_LINK_VERIFY)
- goto failure;
-
if (!nvhdcp_is_plugged(nvhdcp))
goto lost_hdmi;
+ if (nvhdcp->state != STATE_LINK_VERIFY)
+ goto failure;
+
e = verify_link(nvhdcp, true);
if (e) {
nvhdcp_err("link verification failed err %d\n", e);
@@ -1003,7 +1003,9 @@ failure:
nvhdcp_err("nvhdcp failure - too many failures, giving up!\n");
} else {
nvhdcp_err("nvhdcp failure - renegotiating in 1.75 seconds\n");
+ mutex_unlock(&nvhdcp->lock);
msleep(1750);
+ mutex_lock(&nvhdcp->lock);
queue_work(nvhdcp->downstream_wq, &nvhdcp->work);
}