TODO
diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
index 9723b2a..dce5d03 100644
--- a/drivers/gpu/drm/omapdrm/dss/dsi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
@@ -5523,8 +5523,12 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
dsi->dss = dss;
dsi->drm_dev = drm_dev;
- drm_encoder_init(drm_dev, encoder, &omap_dsi_encoder_funcs,
+ r = drm_encoder_init(drm_dev, encoder, &omap_dsi_encoder_funcs,
DRM_MODE_ENCODER_DSI, NULL);
+ if (r) {
+ dev_err(dev, "Failed to initialize encoder with drm\n");
+ return r;
+ }
drm_encoder_helper_add(encoder, &omap_dsi_encoder_helper_funcs);
connector->polled = DRM_CONNECTOR_POLL_HPD;
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 4861daf..568579d 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -237,8 +237,10 @@ static int omap_modeset_init(struct drm_device *dev)
int ret;
u32 plane_crtc_mask;
+#if 0
if (!omapdss_stack_is_ready())
return -EPROBE_DEFER;
+#endif
drm_mode_config_init(dev);
@@ -246,6 +248,10 @@ static int omap_modeset_init(struct drm_device *dev)
if (ret < 0)
return ret;
+ ret = dss_bind_components(priv->dss, dev);
+ if (ret)
+ return ret;
+
/*
* This function creates exactly one connector, encoder, crtc,
* and primary plane per each connected dss-device. Each
@@ -589,10 +595,6 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
priv->dispc = dispc_get_dispc(priv->dss);
priv->dispc_ops = dispc_get_ops(priv->dss);
- ret = dss_bind_components(priv->dss, ddev);
- if (ret)
- goto err_ddev_deinit;
-
omap_crtc_pre_init(priv);
soc = soc_device_match(omapdrm_soc_devices);
@@ -652,9 +654,8 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
omap_gem_deinit(ddev);
destroy_workqueue(priv->wq);
omap_disconnect_pipelines(ddev);
- omap_crtc_pre_uninit(priv);
dss_unbind_components(priv->dss, ddev);
-err_ddev_deinit:
+ omap_crtc_pre_uninit(priv);
drm_dev_put(ddev);
return ret;
}
@@ -682,10 +683,11 @@ static void omapdrm_cleanup(struct omap_drm_private *priv)
destroy_workqueue(priv->wq);
omap_disconnect_pipelines(ddev);
- omap_crtc_pre_uninit(priv);
dss_unbind_components(priv->dss, ddev);
+ omap_crtc_pre_uninit(priv);
+
drm_dev_put(ddev);
}