aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss/apply.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/omap2/dss/apply.c')
-rw-r--r--drivers/video/omap2/dss/apply.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c
index 8b157b03d4b6..62319b8328da 100644
--- a/drivers/video/omap2/dss/apply.c
+++ b/drivers/video/omap2/dss/apply.c
@@ -78,6 +78,10 @@ struct ovl_priv_data {
78}; 78};
79 79
80struct mgr_priv_data { 80struct mgr_priv_data {
81
82 bool user_info_dirty;
83 struct omap_overlay_manager_info user_info;
84
81 /* If true, cache changed, but not written to shadow registers. Set 85 /* If true, cache changed, but not written to shadow registers. Set
82 * in apply(), cleared when registers written. */ 86 * in apply(), cleared when registers written. */
83 bool dirty; 87 bool dirty;
@@ -592,15 +596,15 @@ static void omap_dss_mgr_apply_mgr(struct omap_overlay_manager *mgr)
592 596
593 if (mgr->device_changed) { 597 if (mgr->device_changed) {
594 mgr->device_changed = false; 598 mgr->device_changed = false;
595 mgr->info_dirty = true; 599 mp->user_info_dirty = true;
596 } 600 }
597 601
598 if (!mgr->info_dirty) 602 if (!mp->user_info_dirty)
599 return; 603 return;
600 604
601 mgr->info_dirty = false; 605 mp->user_info_dirty = false;
602 mp->dirty = true; 606 mp->dirty = true;
603 mp->info = mgr->info; 607 mp->info = mp->user_info;
604} 608}
605 609
606static void omap_dss_mgr_apply_ovl_fifos(struct omap_overlay *ovl) 610static void omap_dss_mgr_apply_ovl_fifos(struct omap_overlay *ovl)
@@ -720,12 +724,13 @@ void dss_mgr_disable(struct omap_overlay_manager *mgr)
720int dss_mgr_set_info(struct omap_overlay_manager *mgr, 724int dss_mgr_set_info(struct omap_overlay_manager *mgr,
721 struct omap_overlay_manager_info *info) 725 struct omap_overlay_manager_info *info)
722{ 726{
727 struct mgr_priv_data *mp = get_mgr_priv(mgr);
723 unsigned long flags; 728 unsigned long flags;
724 729
725 spin_lock_irqsave(&data_lock, flags); 730 spin_lock_irqsave(&data_lock, flags);
726 731
727 mgr->info = *info; 732 mp->user_info = *info;
728 mgr->info_dirty = true; 733 mp->user_info_dirty = true;
729 734
730 spin_unlock_irqrestore(&data_lock, flags); 735 spin_unlock_irqrestore(&data_lock, flags);
731 736
@@ -735,11 +740,12 @@ int dss_mgr_set_info(struct omap_overlay_manager *mgr,
735void dss_mgr_get_info(struct omap_overlay_manager *mgr, 740void dss_mgr_get_info(struct omap_overlay_manager *mgr,
736 struct omap_overlay_manager_info *info) 741 struct omap_overlay_manager_info *info)
737{ 742{
743 struct mgr_priv_data *mp = get_mgr_priv(mgr);
738 unsigned long flags; 744 unsigned long flags;
739 745
740 spin_lock_irqsave(&data_lock, flags); 746 spin_lock_irqsave(&data_lock, flags);
741 747
742 *info = mgr->info; 748 *info = mp->user_info;
743 749
744 spin_unlock_irqrestore(&data_lock, flags); 750 spin_unlock_irqrestore(&data_lock, flags);
745} 751}