diff options
author | Alexandre Courbot <acourbot@nvidia.com> | 2013-04-04 11:37:16 -0700 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2013-04-25 17:46:22 -0700 |
commit | 65e0b90df3d17ae6d97234f61d1a4b4624d88feb (patch) | |
tree | 5a31f010675120be54c2df553c6e91732867d1d5 /drivers | |
parent | 9973e69039d39114d35823495a587ff93056cc20 (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.c | 9 |
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); |