Skip to content

Commit

Permalink
OMAPDSS: MANAGER: Update display sysfs store
Browse files Browse the repository at this point in the history
The display sysfs attribute's store function needs to be changed with the
introduction of outputs.

The DSS driver ensures that there is one display per output, and that a
registered omap_dss_device will have an output connected to it. The display
sysfs store function unsets the current output connected to the manager, and
sets it with the output connected to the new display. If the new display doesn't
have an output for some reason, we just bail out. The function doesn't set/unset
output->device links. These remain the same as when the omap_dss_device was
registered.

Signed-off-by: Archit Taneja <archit@ti.com>
  • Loading branch information
Archit Taneja authored and Tomi Valkeinen committed Sep 26, 2012
1 parent 952cbaa commit 947b225
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions drivers/video/omap2/dss/manager-sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,18 +69,29 @@ static ssize_t manager_display_store(struct omap_overlay_manager *mgr,
if (dssdev)
DSSDBG("display %s found\n", dssdev->name);

if (mgr->get_device(mgr)) {
r = mgr->unset_device(mgr);
if (mgr->output) {
r = mgr->unset_output(mgr);
if (r) {
DSSERR("failed to unset display\n");
DSSERR("failed to unset current output\n");
goto put_device;
}
}

if (dssdev) {
r = mgr->set_device(mgr, dssdev);
struct omap_dss_output *out = dssdev->output;

/*
* a registered device should have an output connected to it
* already
*/
if (!out) {
DSSERR("device has no output connected to it\n");
goto put_device;
}

r = mgr->set_output(mgr, out);
if (r) {
DSSERR("failed to set manager\n");
DSSERR("failed to set manager output\n");
goto put_device;
}

Expand Down

0 comments on commit 947b225

Please sign in to comment.