From 917cdcf19b3a368a0390a20da66f176797eda064 Mon Sep 17 00:00:00 2001 From: Jon Mayo Date: Wed, 31 Aug 2011 18:01:45 -0700 Subject: video: tegra: dc: disable windows on dc disable When disabling a display, also disable its windows. This forces applications to resend windows on hotplug and resume or they will see a blank screen. Bug 871107 Reviewed-on: http://git-master/r/50204 (cherry picked from commit 969fe6f1a6b5e28cf6de75937fd100c73e6a99b4) Change-Id: I7c1fc3f45fab3d839794b7955409af8ca04bef2d Reviewed-on: http://git-master/r/56504 Reviewed-by: Varun Colbert Tested-by: Varun Colbert Rebase-Id: Rcea75fc63222079f7db4cae95b4952aaee9a2d0d --- drivers/video/tegra/dc/dc.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'drivers/video') diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c index e2daa826e..41413d613 100644 --- a/drivers/video/tegra/dc/dc.c +++ b/drivers/video/tegra/dc/dc.c @@ -2349,17 +2349,20 @@ static void _tegra_dc_controller_disable(struct tegra_dc *dc) clk_disable(dc->clk); tegra_dvfs_set_rate(dc->clk, 0); - for (i = 0; i < DC_N_WINDOWS; i++) { + if (dc->out && dc->out->disable) + dc->out->disable(); + + for (i = 0; i < dc->n_windows; i++) { struct tegra_dc_win *w = &dc->windows[i]; + + /* reset window bandwidth */ w->bandwidth = 0; w->new_bandwidth = 0; - } - if (dc->out && dc->out->disable) - dc->out->disable(); + /* disable windows */ + w->flags &= ~TEGRA_WIN_FLAG_ENABLED; - /* flush any pending syncpt waits */ - for (i = 0; i < dc->n_windows; i++) { + /* flush any pending syncpt waits */ while (dc->syncpt[i].min < dc->syncpt[i].max) { dc->syncpt[i].min++; nvhost_syncpt_cpu_incr(&dc->ndev->host->syncpt, -- cgit v1.2.2