diff --git a/[refs] b/[refs] index 6d56a383d284..474ff14deb59 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 952cbaaa9b8beacc425f9aedf370468cbb737a2c +refs/heads/master: 947b2254249ceab769dfa07d5291fd77e387a0c7 diff --git a/trunk/drivers/video/omap2/dss/manager-sysfs.c b/trunk/drivers/video/omap2/dss/manager-sysfs.c index 55cf955f663d..9a2fb59b6f89 100644 --- a/trunk/drivers/video/omap2/dss/manager-sysfs.c +++ b/trunk/drivers/video/omap2/dss/manager-sysfs.c @@ -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; }