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;
}