aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/omap2/dss/apply.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c
index 267c3f40d6c3..b10b3bc1931e 100644
--- a/drivers/video/omap2/dss/apply.c
+++ b/drivers/video/omap2/dss/apply.c
@@ -685,6 +685,22 @@ static void dss_set_go_bits(void)
685 685
686} 686}
687 687
688static void mgr_clear_shadow_dirty(struct omap_overlay_manager *mgr)
689{
690 struct omap_overlay *ovl;
691 struct mgr_priv_data *mp;
692 struct ovl_priv_data *op;
693
694 mp = get_mgr_priv(mgr);
695 mp->shadow_info_dirty = false;
696
697 list_for_each_entry(ovl, &mgr->overlays, list) {
698 op = get_ovl_priv(ovl);
699 op->shadow_info_dirty = false;
700 op->shadow_extra_info_dirty = false;
701 }
702}
703
688void dss_mgr_start_update(struct omap_overlay_manager *mgr) 704void dss_mgr_start_update(struct omap_overlay_manager *mgr)
689{ 705{
690 struct mgr_priv_data *mp = get_mgr_priv(mgr); 706 struct mgr_priv_data *mp = get_mgr_priv(mgr);
@@ -713,6 +729,8 @@ void dss_mgr_start_update(struct omap_overlay_manager *mgr)
713 729
714 dispc_mgr_enable(mgr->id, true); 730 dispc_mgr_enable(mgr->id, true);
715 731
732 mgr_clear_shadow_dirty(mgr);
733
716 spin_unlock_irqrestore(&data_lock, flags); 734 spin_unlock_irqrestore(&data_lock, flags);
717} 735}
718 736
@@ -756,22 +774,6 @@ static void dss_unregister_vsync_isr(void)
756 dss_data.irq_enabled = false; 774 dss_data.irq_enabled = false;
757} 775}
758 776
759static void mgr_clear_shadow_dirty(struct omap_overlay_manager *mgr)
760{
761 struct omap_overlay *ovl;
762 struct mgr_priv_data *mp;
763 struct ovl_priv_data *op;
764
765 mp = get_mgr_priv(mgr);
766 mp->shadow_info_dirty = false;
767
768 list_for_each_entry(ovl, &mgr->overlays, list) {
769 op = get_ovl_priv(ovl);
770 op->shadow_info_dirty = false;
771 op->shadow_extra_info_dirty = false;
772 }
773}
774
775static void dss_apply_irq_handler(void *data, u32 mask) 777static void dss_apply_irq_handler(void *data, u32 mask)
776{ 778{
777 const int num_mgrs = dss_feat_get_num_mgrs(); 779 const int num_mgrs = dss_feat_get_num_mgrs();
@@ -801,9 +803,6 @@ static void dss_apply_irq_handler(void *data, u32 mask)
801 803
802 if (was_busy && !mp->busy) 804 if (was_busy && !mp->busy)
803 mgr_clear_shadow_dirty(mgr); 805 mgr_clear_shadow_dirty(mgr);
804 } else {
805 if (was_updating && !mp->updating)
806 mgr_clear_shadow_dirty(mgr);
807 } 806 }
808 } 807 }
809 808