aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss/dispc.c
diff options
context:
space:
mode:
authorDima Zavin <dima@android.com>2011-06-27 13:31:05 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-09-14 11:08:24 -0400
commit13eae1f98255bddcbfe27ae4bd58fe3dc374bc0b (patch)
tree8de52cd665e4c0658226305a38d6c66a3b82c40f /drivers/video/omap2/dss/dispc.c
parent0f770b4765846846cc531f6828fb8402f92e2649 (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.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 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
3497int omap_dispc_wait_for_irq_timeout(u32 irqmask, unsigned long timeout) 3501int omap_dispc_wait_for_irq_timeout(u32 irqmask, unsigned long timeout)