diff options
-rw-r--r-- | arch/arm/mach-tegra/include/mach/dc.h | 2 | ||||
-rw-r--r-- | drivers/video/tegra/dc/dc.c | 15 | ||||
-rw-r--r-- | drivers/video/tegra/fb.c | 6 |
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; |