aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-11-25 10:26:13 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-12-02 01:54:55 -0500
commit9f808956d3cd07c8dc69e213931b19bad56344fb (patch)
treed33508726c6532fbe00df6ef3fadb3c6a7f650c3
parentcc372d84e231ea9f574ef5de9a7ab39dee5a021d (diff)
OMAPDSS: APPLY: fix need_isr
need_isr() should return true whenever there's work that needs to be handled in the VSYNC/FRAMEDONE irq handler. However, need_isr() is missing some cases where we need the irq handler. This patch adds checks for shadow dirty flags, so that the irq handler is started/kept running while shadow dirty flags are set. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r--drivers/video/omap2/dss/apply.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c
index 5d205ada30de..98fef08da3ba 100644
--- a/drivers/video/omap2/dss/apply.c
+++ b/drivers/video/omap2/dss/apply.c
@@ -358,16 +358,38 @@ static bool need_isr(void)
358 if (mp->info_dirty) 358 if (mp->info_dirty)
359 return true; 359 return true;
360 360
361 /* to set GO bit */
362 if (mp->shadow_info_dirty)
363 return true;
364
361 list_for_each_entry(ovl, &mgr->overlays, list) { 365 list_for_each_entry(ovl, &mgr->overlays, list) {
362 struct ovl_priv_data *op; 366 struct ovl_priv_data *op;
363 367
364 op = get_ovl_priv(ovl); 368 op = get_ovl_priv(ovl);
365 369
370 /*
371 * NOTE: we check extra_info flags even for
372 * disabled overlays, as extra_infos need to be
373 * always written.
374 */
375
376 /* to write new values to registers */
377 if (op->extra_info_dirty)
378 return true;
379
380 /* to set GO bit */
381 if (op->shadow_extra_info_dirty)
382 return true;
383
366 if (!op->enabled) 384 if (!op->enabled)
367 continue; 385 continue;
368 386
369 /* to write new values to registers */ 387 /* to write new values to registers */
370 if (op->info_dirty || op->extra_info_dirty) 388 if (op->info_dirty)
389 return true;
390
391 /* to set GO bit */
392 if (op->shadow_info_dirty)
371 return true; 393 return true;
372 } 394 }
373 } 395 }