From 0505340fd2b9897c52cd38f829624d3e6fc9c422 Mon Sep 17 00:00:00 2001 From: Sergiy Kibrik Date: Tue, 12 Feb 2013 15:01:55 +0200 Subject: [PATCH] OMAPDSS: OMAPFB: assign DSS managers to all framebuffers Currently all overlays set to mgr0 by default. This leaves only one display device to omapfb_fb_init() to work with, which causes all framebuffers to be of same resolution. Instead we assign each overlay a different manager, thus each framebuffer is linked to separate display. Change-Id: I8b185e294c35cb930c774bec9f9dba69ffed2403 Signed-off-by: Sergiy Kibrik --- drivers/video/omap2/omapfb/omapfb-main.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c index 19c030bb21f..90dc201a38f 100644 --- a/drivers/video/omap2/omapfb/omapfb-main.c +++ b/drivers/video/omap2/omapfb/omapfb-main.c @@ -2092,11 +2092,18 @@ static int omapfb_create_framebuffers(struct omapfb2_device *fbdev) DBG("fb_infos allocated\n"); /* assign overlays for the fbs */ - for (i = 0; i < min(fbdev->num_fbs, fbdev->num_overlays); i++) { + for (i = 0; i < min3(fbdev->num_fbs, fbdev->num_overlays, + fbdev->num_managers); i++) { struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); - + struct omap_overlay_manager *mgr = fbdev->managers[i]; ofbi->overlays[0] = fbdev->overlays[i]; ofbi->num_overlays = 1; + if (mgr->output) { + ofbi->overlays[0]->unset_manager(ofbi->overlays[0]); + ofbi->overlays[0]->set_manager(ofbi->overlays[0], mgr); + DBG("ofbi%d assigned dev %s", + ofbi->id, mgr->name); + } } /* allocate fb memories */ -- 2.39.2