From 390426653550474a432a051a81441678c4ef6eaa Mon Sep 17 00:00:00 2001 From: Andrei Warkentin Date: Tue, 19 Apr 2011 14:20:48 -0500 Subject: 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 Signed-off-by: Erik Gilling --- drivers/video/tegra/dc/dc.c | 8 +++++++- drivers/video/tegra/dc/dc_priv.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) 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; -- cgit v1.2.3