diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/omap2/dss/apply.c | 37 |
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 | ||
688 | static 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 | |||
688 | void dss_mgr_start_update(struct omap_overlay_manager *mgr) | 704 | void 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 | ||
759 | static 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 | |||
775 | static void dss_apply_irq_handler(void *data, u32 mask) | 777 | static 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 | ||