|
@@ -405,6 +405,9 @@ void dss_mgr_start_update(struct omap_overlay_manager *mgr)
|
|
|
struct mgr_priv_data *mp = get_mgr_priv(mgr);
|
|
|
struct ovl_priv_data *op;
|
|
|
struct omap_overlay *ovl;
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&data_lock, flags);
|
|
|
|
|
|
mp->do_manual_update = true;
|
|
|
dss_write_regs();
|
|
@@ -418,6 +421,8 @@ void dss_mgr_start_update(struct omap_overlay_manager *mgr)
|
|
|
mp->shadow_dirty = false;
|
|
|
|
|
|
dispc_mgr_enable(mgr->id, true);
|
|
|
+
|
|
|
+ spin_unlock_irqrestore(&data_lock, flags);
|
|
|
}
|
|
|
|
|
|
static void dss_apply_irq_handler(void *data, u32 mask);
|
|
@@ -662,16 +667,28 @@ void dss_mgr_disable(struct omap_overlay_manager *mgr)
|
|
|
int dss_mgr_set_info(struct omap_overlay_manager *mgr,
|
|
|
struct omap_overlay_manager_info *info)
|
|
|
{
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&data_lock, flags);
|
|
|
+
|
|
|
mgr->info = *info;
|
|
|
mgr->info_dirty = true;
|
|
|
|
|
|
+ spin_unlock_irqrestore(&data_lock, flags);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
void dss_mgr_get_info(struct omap_overlay_manager *mgr,
|
|
|
struct omap_overlay_manager_info *info)
|
|
|
{
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&data_lock, flags);
|
|
|
+
|
|
|
*info = mgr->info;
|
|
|
+
|
|
|
+ spin_unlock_irqrestore(&data_lock, flags);
|
|
|
}
|
|
|
|
|
|
int dss_mgr_set_device(struct omap_overlay_manager *mgr,
|
|
@@ -745,16 +762,28 @@ err:
|
|
|
int dss_ovl_set_info(struct omap_overlay *ovl,
|
|
|
struct omap_overlay_info *info)
|
|
|
{
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&data_lock, flags);
|
|
|
+
|
|
|
ovl->info = *info;
|
|
|
ovl->info_dirty = true;
|
|
|
|
|
|
+ spin_unlock_irqrestore(&data_lock, flags);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
void dss_ovl_get_info(struct omap_overlay *ovl,
|
|
|
struct omap_overlay_info *info)
|
|
|
{
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&data_lock, flags);
|
|
|
+
|
|
|
*info = ovl->info;
|
|
|
+
|
|
|
+ spin_unlock_irqrestore(&data_lock, flags);
|
|
|
}
|
|
|
|
|
|
int dss_ovl_set_manager(struct omap_overlay *ovl,
|