diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-11-25 10:26:13 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-12-02 01:54:55 -0500 |
commit | 9f808956d3cd07c8dc69e213931b19bad56344fb (patch) | |
tree | d33508726c6532fbe00df6ef3fadb3c6a7f650c3 | |
parent | cc372d84e231ea9f574ef5de9a7ab39dee5a021d (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.c | 24 |
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 | } |