diff options
author | Dima Zavin <dima@android.com> | 2011-06-27 13:31:05 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-09-14 11:08:24 -0400 |
commit | 13eae1f98255bddcbfe27ae4bd58fe3dc374bc0b (patch) | |
tree | 8de52cd665e4c0658226305a38d6c66a3b82c40f /drivers/video/omap2/dss/dispc.c | |
parent | 0f770b4765846846cc531f6828fb8402f92e2649 (diff) |
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 0f3961a1ce2..1caea42fad8 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) | |||
3306 | dispc.error_irqs = 0; | 3306 | dispc.error_irqs = 0; |
3307 | spin_unlock_irqrestore(&dispc.irq_lock, flags); | 3307 | spin_unlock_irqrestore(&dispc.irq_lock, flags); |
3308 | 3308 | ||
3309 | dispc_runtime_get(); | ||
3310 | |||
3309 | if (errors & DISPC_IRQ_GFX_FIFO_UNDERFLOW) { | 3311 | if (errors & DISPC_IRQ_GFX_FIFO_UNDERFLOW) { |
3310 | DSSERR("GFX_FIFO_UNDERFLOW, disabling GFX\n"); | 3312 | DSSERR("GFX_FIFO_UNDERFLOW, disabling GFX\n"); |
3311 | for (i = 0; i < omap_dss_get_num_overlays(); ++i) { | 3313 | for (i = 0; i < omap_dss_get_num_overlays(); ++i) { |
@@ -3492,6 +3494,8 @@ static void dispc_error_worker(struct work_struct *work) | |||
3492 | dispc.irq_error_mask |= errors; | 3494 | dispc.irq_error_mask |= errors; |
3493 | _omap_dispc_set_irqs(); | 3495 | _omap_dispc_set_irqs(); |
3494 | spin_unlock_irqrestore(&dispc.irq_lock, flags); | 3496 | spin_unlock_irqrestore(&dispc.irq_lock, flags); |
3497 | |||
3498 | dispc_runtime_put(); | ||
3495 | } | 3499 | } |
3496 | 3500 | ||
3497 | int omap_dispc_wait_for_irq_timeout(u32 irqmask, unsigned long timeout) | 3501 | int omap_dispc_wait_for_irq_timeout(u32 irqmask, unsigned long timeout) |