summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAndrei Warkentin <andreiw@motorola.com>2011-04-19 14:20:48 -0500
committerErik Gilling <konkers@android.com>2011-04-19 13:33:33 -0700
commit390426653550474a432a051a81441678c4ef6eaa (patch)
treeb2974e4b271aa6af6e17622ea464c181934447ef /drivers
parent780073d7c4c001f78a5b3cd2d464ddd2f15c44e0 (diff)
video: tegra: prevent double disable in suspend
Prevents HDMI detect worker from re-disabling DC during suspend (after tegra_dc_suspend has disabled DC itself)/ Change-Id: I90016fb709934ab8fb5135443980898069f8071f Signed-off-by: Andrei Warkentin <andreiw@motorola.com> Signed-off-by: Erik Gilling <konkers@android.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tegra/dc/dc.c8
-rw-r--r--drivers/video/tegra/dc/dc_priv.h1
2 files changed, 8 insertions, 1 deletions
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c
index 43d31840fd34..a61e86fb5dd7 100644
--- a/drivers/video/tegra/dc/dc.c
+++ b/drivers/video/tegra/dc/dc.c
@@ -1103,7 +1103,9 @@ void tegra_dc_disable(struct tegra_dc *dc)
if (dc->enabled) {
dc->enabled = false;
- _tegra_dc_disable(dc);
+
+ if (!dc->suspended)
+ _tegra_dc_disable(dc);
}
mutex_unlock(&dc->lock);
@@ -1335,6 +1337,8 @@ static int tegra_dc_suspend(struct nvhost_device *ndev, pm_message_t state)
if (dc->enabled) {
tegra_fb_suspend(dc->fb);
_tegra_dc_disable(dc);
+
+ dc->suspended = true;
}
mutex_unlock(&dc->lock);
@@ -1348,6 +1352,8 @@ static int tegra_dc_resume(struct nvhost_device *ndev)
dev_info(&ndev->dev, "resume\n");
mutex_lock(&dc->lock);
+ dc->suspended = false;
+
if (dc->enabled)
_tegra_dc_enable(dc);
diff --git a/drivers/video/tegra/dc/dc_priv.h b/drivers/video/tegra/dc/dc_priv.h
index 3f7fdbff023b..c8476f8b5ffc 100644
--- a/drivers/video/tegra/dc/dc_priv.h
+++ b/drivers/video/tegra/dc/dc_priv.h
@@ -63,6 +63,7 @@ struct tegra_dc {
struct clk *emc_clk;
bool enabled;
+ bool suspended;
struct tegra_dc_out *out;
struct tegra_dc_out_ops *out_ops;