diff options
Diffstat (limited to 'drivers/video/tegra/dc/nvhdcp.c')
-rw-r--r-- | drivers/video/tegra/dc/nvhdcp.c | 6 |
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; } |