summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tegra/dc/nvhdcp.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/video/tegra/dc/nvhdcp.c b/drivers/video/tegra/dc/nvhdcp.c
index 8f134e953425..c17b8f4d32c8 100644
--- a/drivers/video/tegra/dc/nvhdcp.c
+++ b/drivers/video/tegra/dc/nvhdcp.c
@@ -998,8 +998,8 @@ static void nvhdcp_downstream_worker(struct work_struct *work)
goto failure;
}
mutex_unlock(&nvhdcp->lock);
- wait_event_interruptible_timeout(wq_worker, 0,
- msecs_to_jiffies(1500));
+ wait_event_interruptible_timeout(wq_worker,
+ !nvhdcp_is_plugged(nvhdcp), msecs_to_jiffies(1500));
mutex_lock(&nvhdcp->lock);
}
@@ -1011,8 +1011,11 @@ failure:
} else {
nvhdcp_err("nvhdcp failure - renegotiating in 1.75 seconds\n");
mutex_unlock(&nvhdcp->lock);
- msleep(1750);
+ wait_event_interruptible_timeout(wq_worker,
+ !nvhdcp_is_plugged(nvhdcp), msecs_to_jiffies(1750));
mutex_lock(&nvhdcp->lock);
+ if (!nvhdcp_is_plugged(nvhdcp))
+ goto lost_hdmi;
queue_work(nvhdcp->downstream_wq, &nvhdcp->work);
}