summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAlexandre Courbot <acourbot@nvidia.com>2013-04-04 11:37:16 -0700
committerSimone Willett <swillett@nvidia.com>2013-04-25 17:46:22 -0700
commit65e0b90df3d17ae6d97234f61d1a4b4624d88feb (patch)
tree5a31f010675120be54c2df553c6e91732867d1d5 /drivers
parent9973e69039d39114d35823495a587ff93056cc20 (diff)
tegra: dc: don't call tegra_dc_hpd in atomic context
tegra_dc_hpd(), which uses gpio_get_value_cansleep(), is called from tegra_dc_hdmi_resume() in atomic context. Move this call outside of the atomic context to avoid potential lockup. Change-Id: I983e58724727803c67a4145e11630746aff86a52 Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Reviewed-on: http://git-master/r/216593 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tegra/dc/hdmi.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/video/tegra/dc/hdmi.c b/drivers/video/tegra/dc/hdmi.c
index 98ee16c170a4..07b2296682e9 100644
--- a/drivers/video/tegra/dc/hdmi.c
+++ b/drivers/video/tegra/dc/hdmi.c
@@ -973,17 +973,14 @@ static void tegra_dc_hdmi_suspend(struct tegra_dc *dc)
static void tegra_dc_hdmi_resume(struct tegra_dc *dc)
{
struct tegra_dc_hdmi_data *hdmi = tegra_dc_get_outdata(dc);
+ bool hpd = tegra_dc_hdmi_hpd(dc);
unsigned long flags;
spin_lock_irqsave(&hdmi->suspend_lock, flags);
hdmi->suspended = false;
- if (tegra_dc_hdmi_hpd(dc))
- queue_delayed_work(system_nrt_wq, &hdmi->work,
- msecs_to_jiffies(100));
- else
- queue_delayed_work(system_nrt_wq, &hdmi->work,
- msecs_to_jiffies(30));
+ queue_delayed_work(system_nrt_wq, &hdmi->work,
+ msecs_to_jiffies(hpd ? 100 : 30));
spin_unlock_irqrestore(&hdmi->suspend_lock, flags);
tegra_nvhdcp_resume(hdmi->nvhdcp);