* We have 4 levels of cache for the dispc settings. First two are in SW and
* the latter two in HW.
*
+ * set_info()
+ * v
* +--------------------+
- * |overlay/manager_info|
+ * | user_info |
* +--------------------+
* v
* apply()
bool user_info_dirty;
struct omap_overlay_info user_info;
- /* If true, cache changed, but not written to shadow registers. Set
- * in apply(), cleared when registers written. */
- bool dirty;
- /* If true, shadow registers contain changed values not yet in real
- * registers. Set when writing to shadow registers, cleared at
- * VSYNC/EVSYNC */
- bool shadow_dirty;
-
+ bool info_dirty;
struct omap_overlay_info info;
+ bool shadow_info_dirty;
+
bool extra_info_dirty;
bool shadow_extra_info_dirty;
bool user_info_dirty;
struct omap_overlay_manager_info user_info;
- /* If true, cache changed, but not written to shadow registers. Set
- * in apply(), cleared when registers written. */
- bool dirty;
- /* If true, shadow registers contain changed values not yet in real
- * registers. Set when writing to shadow registers, cleared at
- * VSYNC/EVSYNC */
- bool shadow_dirty;
-
+ bool info_dirty;
struct omap_overlay_manager_info info;
+ bool shadow_info_dirty;
+
/* If true, GO bit is up and shadow registers cannot be written.
* Never true for manual update displays */
bool busy;
return true;
/* to write new values to registers */
- if (mp->dirty)
+ if (mp->info_dirty)
return true;
list_for_each_entry(ovl, &mgr->overlays, list) {
continue;
/* to write new values to registers */
- if (op->dirty || op->extra_info_dirty)
+ if (op->info_dirty || op->extra_info_dirty)
return true;
}
}
mp = get_mgr_priv(mgr);
- if (mp->shadow_dirty)
+ if (mp->shadow_info_dirty)
return true;
list_for_each_entry(ovl, &mgr->overlays, list) {
op = get_ovl_priv(ovl);
- if (op->shadow_dirty || op->shadow_extra_info_dirty)
+ if (op->shadow_info_dirty || op->shadow_extra_info_dirty)
return true;
}
bool shadow_dirty, dirty;
spin_lock_irqsave(&data_lock, flags);
- dirty = mp->dirty;
- shadow_dirty = mp->shadow_dirty;
+ dirty = mp->info_dirty;
+ shadow_dirty = mp->shadow_info_dirty;
spin_unlock_irqrestore(&data_lock, flags);
if (!dirty && !shadow_dirty) {
bool shadow_dirty, dirty;
spin_lock_irqsave(&data_lock, flags);
- dirty = op->dirty;
- shadow_dirty = op->shadow_dirty;
+ dirty = op->info_dirty;
+ shadow_dirty = op->shadow_info_dirty;
spin_unlock_irqrestore(&data_lock, flags);
if (!dirty && !shadow_dirty) {
DSSDBGF("%d", ovl->id);
- if (!op->enabled || !op->dirty)
+ if (!op->enabled || !op->info_dirty)
return;
oi = &op->info;
mp = get_mgr_priv(ovl->manager);
- op->dirty = false;
+ op->info_dirty = false;
if (mp->updating)
- op->shadow_dirty = true;
+ op->shadow_info_dirty = true;
}
static void dss_ovl_write_regs_extra(struct omap_overlay *ovl)
dss_ovl_write_regs_extra(ovl);
}
- if (mp->dirty) {
+ if (mp->info_dirty) {
dispc_mgr_setup(mgr->id, &mp->info);
- mp->dirty = false;
+ mp->info_dirty = false;
if (mp->updating)
- mp->shadow_dirty = true;
+ mp->shadow_info_dirty = true;
}
}
struct ovl_priv_data *op;
mp = get_mgr_priv(mgr);
- mp->shadow_dirty = false;
+ mp->shadow_info_dirty = false;
list_for_each_entry(ovl, &mgr->overlays, list) {
op = get_ovl_priv(ovl);
- op->shadow_dirty = false;
+ op->shadow_info_dirty = false;
op->shadow_extra_info_dirty = false;
}
}
return;
op->user_info_dirty = false;
- op->dirty = true;
+ op->info_dirty = true;
op->info = op->user_info;
}
return;
mp->user_info_dirty = false;
- mp->dirty = true;
+ mp->info_dirty = true;
mp->info = mp->user_info;
}