summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaurav Sarode <gsarode@nvidia.com>2011-07-12 17:21:10 +0530
committerNiket Sirsi <nsirsi@nvidia.com>2011-07-25 16:11:20 -0700
commitccf372807726b11ae47c0e9da780f0799701d50f (patch)
tree0c0d0d6bf03db9eeced99af347b6a1551ffb89e0
parent1f175000f1a2b00e8169205f3778717ca56bcb28 (diff)
video: tegra: dc: Fix no_vsync hang issue.
no_vsync was causing random hangs due to unwanted interrupts were enabled on default. Fix bug 801463 (cherry picked from commit ff97de537bb721a5692189eb6e13e6856a2c5605) Change-Id: Ief706bd90d0420db1fa39517c3eaba87adcdb246 Reviewed-on: http://git-master/r/42590 Reviewed-by: Niket Sirsi <nsirsi@nvidia.com> Tested-by: Niket Sirsi <nsirsi@nvidia.com>
-rw-r--r--drivers/video/tegra/dc/dc.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c
index 05760fe8d4ca..6129505523ea 100644
--- a/drivers/video/tegra/dc/dc.c
+++ b/drivers/video/tegra/dc/dc.c
@@ -835,12 +835,15 @@ int tegra_dc_update_windows(struct tegra_dc_win *windows[], int n)
if (!no_vsync) {
val = tegra_dc_readl(dc, DC_CMD_INT_ENABLE);
- val |= FRAME_END_INT;
+ val |= (FRAME_END_INT | V_BLANK_INT | WIN_A_UF_INT | \
+ WIN_B_UF_INT | WIN_C_UF_INT);
tegra_dc_writel(dc, val, DC_CMD_INT_ENABLE);
+ } else {
+ val = tegra_dc_readl(dc, DC_CMD_INT_ENABLE);
+ val &= ~(FRAME_END_INT | V_BLANK_INT | WIN_A_UF_INT | \
+ WIN_B_UF_INT | WIN_C_UF_INT);
- val = tegra_dc_readl(dc, DC_CMD_INT_MASK);
- val |= FRAME_END_INT;
- tegra_dc_writel(dc, val, DC_CMD_INT_MASK);
+ tegra_dc_writel(dc, val, DC_CMD_INT_ENABLE);
}
tegra_dc_writel(dc, update_mask, DC_CMD_STATE_CONTROL);