Skip to content

Commit

Permalink
OMAPFB: connect ovl managers to all dssdevs
Browse files Browse the repository at this point in the history
Commit 5d89bcc (OMAPDSS: remove initial
display code from omapdss) moved setting up the initial overlay, overlay
manager, output and display connections from omapdss to omapfb.

However, currently omapfb only handles the connection related to the
default display, which means that no overlay managers are connected to
other displays.

This patch changes omapfb to go through all dssdevs, and connect an
overlay manager to them.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Tomi Valkeinen committed Dec 7, 2012
1 parent 486c0e1 commit 6b6f1ed
Showing 1 changed file with 24 additions and 14 deletions.
38 changes: 24 additions & 14 deletions drivers/video/omap2/omapfb/omapfb-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2349,27 +2349,37 @@ static int omapfb_init_display(struct omapfb2_device *fbdev,
}

static int omapfb_init_connections(struct omapfb2_device *fbdev,
struct omap_dss_device *dssdev)
struct omap_dss_device *def_dssdev)
{
int i, r;
struct omap_overlay_manager *mgr = NULL;
struct omap_overlay_manager *mgr;

for (i = 0; i < fbdev->num_managers; i++) {
mgr = fbdev->managers[i];

if (dssdev->channel == mgr->id)
break;
if (!def_dssdev->output) {
dev_err(fbdev->dev, "no output for the default display\n");
return -EINVAL;
}

if (i == fbdev->num_managers)
return -ENODEV;
for (i = 0; i < fbdev->num_displays; ++i) {
struct omap_dss_device *dssdev = fbdev->displays[i].dssdev;
struct omap_dss_output *out = dssdev->output;

if (mgr->output)
mgr->unset_output(mgr);
mgr = omap_dss_get_overlay_manager(dssdev->channel);

r = mgr->set_output(mgr, dssdev->output);
if (r)
return r;
if (!mgr || !out)
continue;

if (mgr->output)
mgr->unset_output(mgr);

mgr->set_output(mgr, out);
}

mgr = def_dssdev->output->manager;

if (!mgr) {
dev_err(fbdev->dev, "no ovl manager for the default display\n");
return -EINVAL;
}

for (i = 0; i < fbdev->num_overlays; i++) {
struct omap_overlay *ovl = fbdev->overlays[i];
Expand Down

0 comments on commit 6b6f1ed

Please sign in to comment.