From 0a64b3cb7d5c0b9b269bd75f67deeaa56bc581be Mon Sep 17 00:00:00 2001 From: Archit Taneja Date: Fri, 7 Sep 2012 18:00:07 +0530 Subject: [PATCH] --- yaml --- r: 333592 b: refs/heads/master c: 947b2254249ceab769dfa07d5291fd77e387a0c7 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/video/omap2/dss/manager-sysfs.c | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) 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; }