summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-tegra/include/mach/dc.h2
-rw-r--r--drivers/video/tegra/dc/dc.c15
-rw-r--r--drivers/video/tegra/fb.c6
3 files changed, 22 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/include/mach/dc.h b/arch/arm/mach-tegra/include/mach/dc.h
index 11c206bfed57..1ac66a6f96b1 100644
--- a/arch/arm/mach-tegra/include/mach/dc.h
+++ b/arch/arm/mach-tegra/include/mach/dc.h
@@ -475,6 +475,8 @@ struct tegra_dc *tegra_dc_get_dc(unsigned idx);
struct tegra_dc_win *tegra_dc_get_window(struct tegra_dc *dc, unsigned win);
bool tegra_dc_get_connected(struct tegra_dc *);
+void tegra_dc_blank(struct tegra_dc *dc);
+
void tegra_dc_enable(struct tegra_dc *dc);
void tegra_dc_disable(struct tegra_dc *dc);
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c
index 4b3bacc7be60..3e5e0b386918 100644
--- a/drivers/video/tegra/dc/dc.c
+++ b/drivers/video/tegra/dc/dc.c
@@ -2376,6 +2376,21 @@ bool tegra_dc_stats_get(struct tegra_dc *dc)
return true;
}
+/* make the screen blank by disabling all windows */
+void tegra_dc_blank(struct tegra_dc *dc)
+{
+ struct tegra_dc_win *dcwins[DC_N_WINDOWS];
+ unsigned i;
+
+ for (i = 0; i < DC_N_WINDOWS; i++) {
+ dcwins[i] = tegra_dc_get_window(dc, i);
+ dcwins[i]->flags &= ~TEGRA_WIN_FLAG_ENABLED;
+ }
+
+ tegra_dc_update_windows(dcwins, DC_N_WINDOWS);
+ tegra_dc_sync_windows(dcwins, DC_N_WINDOWS);
+}
+
static void _tegra_dc_disable(struct tegra_dc *dc)
{
_tegra_dc_controller_disable(dc);
diff --git a/drivers/video/tegra/fb.c b/drivers/video/tegra/fb.c
index b170bcdcba2c..72176b7e99a5 100644
--- a/drivers/video/tegra/fb.c
+++ b/drivers/video/tegra/fb.c
@@ -182,10 +182,14 @@ static int tegra_fb_blank(int blank, struct fb_info *info)
return 0;
case FB_BLANK_NORMAL:
+ dev_dbg(&tegra_fb->ndev->dev, "blank - normal\n");
+ tegra_dc_blank(tegra_fb->win->dc);
+ return 0;
+
case FB_BLANK_VSYNC_SUSPEND:
case FB_BLANK_HSYNC_SUSPEND:
case FB_BLANK_POWERDOWN:
- dev_dbg(&tegra_fb->ndev->dev, "blank\n");
+ dev_dbg(&tegra_fb->ndev->dev, "blank - powerdown\n");
tegra_dc_disable(tegra_fb->win->dc);
return 0;