summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMin-wuk Lee <mlee@nvidia.com>2013-05-30 19:12:56 +0900
committerRiham Haidar <rhaidar@nvidia.com>2013-05-31 18:01:59 -0700
commitd6f6d7291dde16f238dee903b1c97fdb80f9e3d8 (patch)
tree56a9c2621caa46e9d1aa81e817805cfcb19252ef /drivers
parent21694e460574c1228c01c4cae3a7071026020096 (diff)
video: tegra: dc: Set WIN_OPTIONS with valid phys addr
Do not set WIN_OPTIONS until window physical address is valid. After suspend, window handle becomes not valid, but UNBLANK in resume tries to set window enabled and update for Window A, before its new physical address is set. This makes DECERR_EMEM error and glitches in resume. Bug 1294791 Change-Id: I22aedd5e33056d4c0ec9fcd84f28597ec6164889 Signed-off-by: Min-wuk Lee <mlee@nvidia.com> Reviewed-on: http://git-master/r/234087 Reviewed-by: Riham Haidar <rhaidar@nvidia.com> Tested-by: Riham Haidar <rhaidar@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tegra/dc/dc.c3
-rw-r--r--drivers/video/tegra/dc/window.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c
index 4590a3416491..17263a35ad31 100644
--- a/drivers/video/tegra/dc/dc.c
+++ b/drivers/video/tegra/dc/dc.c
@@ -2037,6 +2037,9 @@ static void _tegra_dc_controller_disable(struct tegra_dc *dc)
/* disable windows */
w->flags &= ~TEGRA_WIN_FLAG_ENABLED;
+ /* set window physical address to invalid*/
+ w->phys_addr = 0;
+
/* flush any pending syncpt waits */
while (dc->syncpt[i].min < dc->syncpt[i].max) {
trace_display_syncpt_flush(dc, dc->syncpt[i].id,
diff --git a/drivers/video/tegra/dc/window.c b/drivers/video/tegra/dc/window.c
index 0f9a5fc45001..e9b72cb6147b 100644
--- a/drivers/video/tegra/dc/window.c
+++ b/drivers/video/tegra/dc/window.c
@@ -389,7 +389,7 @@ int tegra_dc_update_windows(struct tegra_dc_win *windows[], int n)
if (!no_vsync)
update_mask |= WIN_A_ACT_REQ << win->idx;
- if (!WIN_IS_ENABLED(win)) {
+ if (!WIN_IS_ENABLED(win) || !win->phys_addr) {
dc_win->dirty = no_vsync ? 0 : 1;
tegra_dc_writel(dc, 0, DC_WIN_WIN_OPTIONS);
continue;