summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/dc/nvhdcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/tegra/dc/nvhdcp.c')
-rw-r--r--drivers/video/tegra/dc/nvhdcp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/video/tegra/dc/nvhdcp.c b/drivers/video/tegra/dc/nvhdcp.c
index 69b8161119de..49c5c9bea46e 100644
--- a/drivers/video/tegra/dc/nvhdcp.c
+++ b/drivers/video/tegra/dc/nvhdcp.c
@@ -36,6 +36,8 @@
#include "hdmi_reg.h"
#include "hdmi.h"
+DECLARE_WAIT_QUEUE_HEAD(wq_worker);
+
/* for 0x40 Bcaps */
#define BCAPS_REPEATER (1 << 6)
#define BCAPS_READY (1 << 5)
@@ -996,7 +998,8 @@ static void nvhdcp_downstream_worker(struct work_struct *work)
goto failure;
}
mutex_unlock(&nvhdcp->lock);
- msleep(1500);
+ wait_event_interruptible_timeout(wq_worker, 0,
+ msecs_to_jiffies(1500));
mutex_lock(&nvhdcp->lock);
}
@@ -1038,6 +1041,7 @@ static int tegra_nvhdcp_off(struct tegra_nvhdcp *nvhdcp)
nvhdcp->state = STATE_OFF;
nvhdcp_set_plugged(nvhdcp, false);
mutex_unlock(&nvhdcp->lock);
+ wake_up_interruptible(&wq_worker);
flush_workqueue(nvhdcp->downstream_wq);
return 0;
}