diff options
author | Dima Zavin <dima@android.com> | 2011-06-27 10:31:05 -0700 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-09-14 18:08:24 +0300 |
commit | 13eae1f98255bddcbfe27ae4bd58fe3dc374bc0b (patch) | |
tree | 8de52cd665e4c0658226305a38d6c66a3b82c40f /drivers/video/omap2/dss/dispc.c | |
parent | 0f770b4765846846cc531f6828fb8402f92e2649 (diff) | |
download | talos-op-linux-13eae1f98255bddcbfe27ae4bd58fe3dc374bc0b.tar.gz talos-op-linux-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/omap2/dss/dispc.c')
-rw-r--r-- | drivers/video/omap2/dss/dispc.c | 4 |
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) |