};
 
 struct mgr_priv_data {
+
+       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 (mgr->device_changed) {
                mgr->device_changed = false;
-               mgr->info_dirty  = true;
+               mp->user_info_dirty  = true;
        }
 
-       if (!mgr->info_dirty)
+       if (!mp->user_info_dirty)
                return;
 
-       mgr->info_dirty = false;
+       mp->user_info_dirty = false;
        mp->dirty = true;
-       mp->info = mgr->info;
+       mp->info = mp->user_info;
 }
 
 static void omap_dss_mgr_apply_ovl_fifos(struct omap_overlay *ovl)
 int dss_mgr_set_info(struct omap_overlay_manager *mgr,
                struct omap_overlay_manager_info *info)
 {
+       struct mgr_priv_data *mp = get_mgr_priv(mgr);
        unsigned long flags;
 
        spin_lock_irqsave(&data_lock, flags);
 
-       mgr->info = *info;
-       mgr->info_dirty = true;
+       mp->user_info = *info;
+       mp->user_info_dirty = true;
 
        spin_unlock_irqrestore(&data_lock, flags);
 
 void dss_mgr_get_info(struct omap_overlay_manager *mgr,
                struct omap_overlay_manager_info *info)
 {
+       struct mgr_priv_data *mp = get_mgr_priv(mgr);
        unsigned long flags;
 
        spin_lock_irqsave(&data_lock, flags);
 
-       *info = mgr->info;
+       *info = mp->user_info;
 
        spin_unlock_irqrestore(&data_lock, flags);
 }
 
 static ssize_t manager_default_color_show(struct omap_overlay_manager *mgr,
                                          char *buf)
 {
-       return snprintf(buf, PAGE_SIZE, "%#x\n", mgr->info.default_color);
+       struct omap_overlay_manager_info info;
+
+       mgr->get_manager_info(mgr, &info);
+
+       return snprintf(buf, PAGE_SIZE, "%#x\n", info.default_color);
 }
 
 static ssize_t manager_default_color_store(struct omap_overlay_manager *mgr,
                                           char *buf)
 {
        enum omap_dss_trans_key_type key_type;
+       struct omap_overlay_manager_info info;
+
+       mgr->get_manager_info(mgr, &info);
 
-       key_type = mgr->info.trans_key_type;
+       key_type = info.trans_key_type;
        BUG_ON(key_type >= ARRAY_SIZE(trans_key_type_str));
 
        return snprintf(buf, PAGE_SIZE, "%s\n", trans_key_type_str[key_type]);
 static ssize_t manager_trans_key_value_show(struct omap_overlay_manager *mgr,
                                            char *buf)
 {
-       return snprintf(buf, PAGE_SIZE, "%#x\n", mgr->info.trans_key);
+       struct omap_overlay_manager_info info;
+
+       mgr->get_manager_info(mgr, &info);
+
+       return snprintf(buf, PAGE_SIZE, "%#x\n", info.trans_key);
 }
 
 static ssize_t manager_trans_key_value_store(struct omap_overlay_manager *mgr,
 static ssize_t manager_trans_key_enabled_show(struct omap_overlay_manager *mgr,
                                              char *buf)
 {
-       return snprintf(buf, PAGE_SIZE, "%d\n", mgr->info.trans_enabled);
+       struct omap_overlay_manager_info info;
+
+       mgr->get_manager_info(mgr, &info);
+
+       return snprintf(buf, PAGE_SIZE, "%d\n", info.trans_enabled);
 }
 
 static ssize_t manager_trans_key_enabled_store(struct omap_overlay_manager *mgr,
 static ssize_t manager_alpha_blending_enabled_show(
                struct omap_overlay_manager *mgr, char *buf)
 {
+       struct omap_overlay_manager_info info;
+
+       mgr->get_manager_info(mgr, &info);
+
        WARN_ON(!dss_has_feature(FEAT_ALPHA_FIXED_ZORDER));
 
        return snprintf(buf, PAGE_SIZE, "%d\n",
-               mgr->info.partial_alpha_enabled);
+               info.partial_alpha_enabled);
 }
 
 static ssize_t manager_alpha_blending_enabled_store(
 static ssize_t manager_cpr_enable_show(struct omap_overlay_manager *mgr,
                char *buf)
 {
-       return snprintf(buf, PAGE_SIZE, "%d\n", mgr->info.cpr_enable);
+       struct omap_overlay_manager_info info;
+
+       mgr->get_manager_info(mgr, &info);
+
+       return snprintf(buf, PAGE_SIZE, "%d\n", info.cpr_enable);
 }
 
 static ssize_t manager_cpr_enable_store(struct omap_overlay_manager *mgr,