diff options
Diffstat (limited to 'drivers/video/omap2/dss/overlay.c')
-rw-r--r-- | drivers/video/omap2/dss/overlay.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/video/omap2/dss/overlay.c b/drivers/video/omap2/dss/overlay.c index 41a29024a8d..456efef03c2 100644 --- a/drivers/video/omap2/dss/overlay.c +++ b/drivers/video/omap2/dss/overlay.c | |||
@@ -664,12 +664,22 @@ void dss_recheck_connections(struct omap_dss_device *dssdev, bool force) | |||
664 | int i; | 664 | int i; |
665 | struct omap_overlay_manager *lcd_mgr; | 665 | struct omap_overlay_manager *lcd_mgr; |
666 | struct omap_overlay_manager *tv_mgr; | 666 | struct omap_overlay_manager *tv_mgr; |
667 | struct omap_overlay_manager *lcd2_mgr = NULL; | ||
667 | struct omap_overlay_manager *mgr = NULL; | 668 | struct omap_overlay_manager *mgr = NULL; |
668 | 669 | ||
669 | lcd_mgr = omap_dss_get_overlay_manager(OMAP_DSS_OVL_MGR_LCD); | 670 | lcd_mgr = omap_dss_get_overlay_manager(OMAP_DSS_OVL_MGR_LCD); |
670 | tv_mgr = omap_dss_get_overlay_manager(OMAP_DSS_OVL_MGR_TV); | 671 | tv_mgr = omap_dss_get_overlay_manager(OMAP_DSS_OVL_MGR_TV); |
671 | 672 | if (dss_has_feature(FEAT_MGR_LCD2)) | |
672 | if (dssdev->type != OMAP_DISPLAY_TYPE_VENC) { | 673 | lcd2_mgr = omap_dss_get_overlay_manager(OMAP_DSS_OVL_MGR_LCD2); |
674 | |||
675 | if (dssdev->channel == OMAP_DSS_CHANNEL_LCD2) { | ||
676 | if (!lcd2_mgr->device || force) { | ||
677 | if (lcd2_mgr->device) | ||
678 | lcd2_mgr->unset_device(lcd2_mgr); | ||
679 | lcd2_mgr->set_device(lcd2_mgr, dssdev); | ||
680 | mgr = lcd2_mgr; | ||
681 | } | ||
682 | } else if (dssdev->type != OMAP_DISPLAY_TYPE_VENC) { | ||
673 | if (!lcd_mgr->device || force) { | 683 | if (!lcd_mgr->device || force) { |
674 | if (lcd_mgr->device) | 684 | if (lcd_mgr->device) |
675 | lcd_mgr->unset_device(lcd_mgr); | 685 | lcd_mgr->unset_device(lcd_mgr); |