diff options
Diffstat (limited to 'drivers/video/omap2/dss/apply.c')
-rw-r--r-- | drivers/video/omap2/dss/apply.c | 20 |
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 | ||
80 | struct mgr_priv_data { | 80 | struct 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 | ||
606 | static void omap_dss_mgr_apply_ovl_fifos(struct omap_overlay *ovl) | 610 | static void omap_dss_mgr_apply_ovl_fifos(struct omap_overlay *ovl) |
@@ -720,12 +724,13 @@ void dss_mgr_disable(struct omap_overlay_manager *mgr) | |||
720 | int dss_mgr_set_info(struct omap_overlay_manager *mgr, | 724 | int 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, | |||
735 | void dss_mgr_get_info(struct omap_overlay_manager *mgr, | 740 | void 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 | } |