aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorDima Zavin <dima@android.com>2011-06-27 10:31:05 -0700
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-09-14 18:08:24 +0300
commit13eae1f98255bddcbfe27ae4bd58fe3dc374bc0b (patch)
tree8de52cd665e4c0658226305a38d6c66a3b82c40f /drivers/video
parentOMAP: DSS2: Don't allow moving managers away from enabled displays (diff)
downloadlinux-dev-13eae1f98255bddcbfe27ae4bd58fe3dc374bc0b.tar.xz
linux-dev-13eae1f98255bddcbfe27ae4bd58fe3dc374bc0b.zip
OMAP: DSS: dispc: enable/disable clocks in error handler
There's no guarantee that the error handler worker thread will run while the dispc clocks are on. Explicitly enable/disable them. Signed-off-by: Dima Zavin <dima@android.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/dispc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
index 0f3961a1ce26..1caea42fad8c 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -3306,6 +3306,8 @@ static void dispc_error_worker(struct work_struct *work)
dispc.error_irqs = 0;
spin_unlock_irqrestore(&dispc.irq_lock, flags);
+ dispc_runtime_get();
+
if (errors & DISPC_IRQ_GFX_FIFO_UNDERFLOW) {
DSSERR("GFX_FIFO_UNDERFLOW, disabling GFX\n");
for (i = 0; i < omap_dss_get_num_overlays(); ++i) {
@@ -3492,6 +3494,8 @@ static void dispc_error_worker(struct work_struct *work)
dispc.irq_error_mask |= errors;
_omap_dispc_set_irqs();
spin_unlock_irqrestore(&dispc.irq_lock, flags);
+
+ dispc_runtime_put();
}
int omap_dispc_wait_for_irq_timeout(u32 irqmask, unsigned long timeout)