From 360f46b91cccddfd0744426f3eb65d54383b777e Mon Sep 17 00:00:00 2001 From: Erik Gilling Date: Wed, 1 Dec 2010 17:55:06 -0800 Subject: [PATCH] video: tegra: fix vblank detection Change-Id: Ib74cbbb0d703c782f64f93930cd234359107021c Signed-off-by: Erik Gilling --- drivers/video/tegra/dc/dc.c | 4 ++-- drivers/video/tegra/dc/dc_reg.h | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c index 2427f6098ae2..5c65e3c1a61a 100644 --- a/drivers/video/tegra/dc/dc.c +++ b/drivers/video/tegra/dc/dc.c @@ -490,7 +490,7 @@ int tegra_dc_update_windows(struct tegra_dc_win *windows[], int n) if (no_vsync) tegra_dc_writel(dc, WRITE_MUX_ACTIVE | READ_MUX_ACTIVE, DC_CMD_STATE_ACCESS); else - tegra_dc_writel(dc, WRITE_MUX_ASSEMBLY | WRITE_MUX_ASSEMBLY, DC_CMD_STATE_ACCESS); + tegra_dc_writel(dc, WRITE_MUX_ASSEMBLY | READ_MUX_ASSEMBLY, DC_CMD_STATE_ACCESS); for (i = 0; i < n; i++) { struct tegra_dc_win *win = windows[i]; @@ -823,7 +823,7 @@ static irqreturn_t tegra_dc_irq(int irq, void *ptr) val = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); for (i = 0; i < DC_N_WINDOWS; i++) { - if (!(val & (WIN_A_ACT_REQ << i))) { + if (!(val & (WIN_A_UPDATE << i))) { dc->windows[i].dirty = 0; completed = 1; } else { diff --git a/drivers/video/tegra/dc/dc_reg.h b/drivers/video/tegra/dc/dc_reg.h index 5ae3cc4c1dec..9c83f9ebf9a2 100644 --- a/drivers/video/tegra/dc/dc_reg.h +++ b/drivers/video/tegra/dc/dc_reg.h @@ -89,6 +89,10 @@ #define WIN_A_ACT_REQ (1 << 1) #define WIN_B_ACT_REQ (1 << 2) #define WIN_C_ACT_REQ (1 << 3) +#define GENERAL_UPDATE (1 << 0) +#define WIN_A_UPDATE (1 << 1) +#define WIN_B_UPDATE (1 << 2) +#define WIN_C_UPDATE (1 << 3) #define DC_CMD_DISPLAY_WINDOW_HEADER 0x042 #define WINDOW_A_SELECT (1 << 4) -- 2.34.1