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>
This commit is contained in:
Родитель
cc372d84e2
Коммит
9f808956d3
|
@ -358,16 +358,38 @@ static bool need_isr(void)
|
|||
if (mp->info_dirty)
|
||||
return true;
|
||||
|
||||
/* to set GO bit */
|
||||
if (mp->shadow_info_dirty)
|
||||
return true;
|
||||
|
||||
list_for_each_entry(ovl, &mgr->overlays, list) {
|
||||
struct ovl_priv_data *op;
|
||||
|
||||
op = get_ovl_priv(ovl);
|
||||
|
||||
/*
|
||||
* NOTE: we check extra_info flags even for
|
||||
* disabled overlays, as extra_infos need to be
|
||||
* always written.
|
||||
*/
|
||||
|
||||
/* to write new values to registers */
|
||||
if (op->extra_info_dirty)
|
||||
return true;
|
||||
|
||||
/* to set GO bit */
|
||||
if (op->shadow_extra_info_dirty)
|
||||
return true;
|
||||
|
||||
if (!op->enabled)
|
||||
continue;
|
||||
|
||||
/* to write new values to registers */
|
||||
if (op->info_dirty || op->extra_info_dirty)
|
||||
if (op->info_dirty)
|
||||
return true;
|
||||
|
||||
/* to set GO bit */
|
||||
if (op->shadow_info_dirty)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче