return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
dev_err(dev, "Failed to connect to video source\n");
goto err_connect;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
return PTR_ERR(src);
}
- r = omapdss_device_connect(src, dssdev);
+ r = omapdss_device_connect(dssdev->dss, src, dssdev);
if (r) {
omapdss_device_put(src);
return r;
}
EXPORT_SYMBOL(omapdss_device_get_next);
-int omapdss_device_connect(struct omap_dss_device *src,
+int omapdss_device_connect(struct dss_device *dss,
+ struct omap_dss_device *src,
struct omap_dss_device *dst)
{
int ret;
if (omapdss_device_is_connected(src))
return -EBUSY;
+ src->dss = dss;
+
if (src->driver)
ret = src->driver->connect(src);
else
ret = src->ops->connect(src, dst);
- if (ret < 0)
+ if (ret < 0) {
+ src->dss = NULL;
return ret;
+ }
if (dst) {
dst->src = src;
src->driver->disconnect(src);
else
src->ops->disconnect(src, dst);
+
+ src->dss = NULL;
}
EXPORT_SYMBOL_GPL(omapdss_device_disconnect);
struct module *owner;
+ struct dss_device *dss;
struct omap_dss_device *src;
struct omap_dss_device *dst;
unsigned int port);
struct omap_dss_device *omapdss_device_get_next(struct omap_dss_device *from,
bool display_only);
-int omapdss_device_connect(struct omap_dss_device *src,
+int omapdss_device_connect(struct dss_device *dss,
+ struct omap_dss_device *src,
struct omap_dss_device *dst);
void omapdss_device_disconnect(struct omap_dss_device *src,
struct omap_dss_device *dst);
return -EPROBE_DEFER;
for_each_dss_display(dssdev) {
- r = omapdss_device_connect(dssdev, NULL);
+ r = omapdss_device_connect(priv->dss, dssdev, NULL);
if (r == -EPROBE_DEFER) {
omapdss_device_put(dssdev);
goto cleanup;