diff options
author | Gaurav Sarode <gsarode@nvidia.com> | 2011-07-12 17:21:10 +0530 |
---|---|---|
committer | Niket Sirsi <nsirsi@nvidia.com> | 2011-07-25 16:11:20 -0700 |
commit | ccf372807726b11ae47c0e9da780f0799701d50f (patch) | |
tree | 0c0d0d6bf03db9eeced99af347b6a1551ffb89e0 | |
parent | 1f175000f1a2b00e8169205f3778717ca56bcb28 (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.c | 11 |
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); |