summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
diff options
context:
space:
mode:
authorSebastian Reichel <sebastian.reichel@collabora.com>2020-12-15 12:45:47 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2020-12-15 16:08:21 +0200
commita5f2dcdebd83f27d8c3e7771b8fc1be0058bd3df (patch)
treea7fcb3c8e99492f3020dac6a2a9bfa1738a99b57 /drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
parentd4cf1537286820e4cf381cab33a22f8f5dc4c8e1 (diff)
downloadlinux-a5f2dcdebd83f27d8c3e7771b8fc1be0058bd3df.tar.bz2
drm/omap: dsi: request VC via mipi_dsi_attach
Drop custom request_vc/release_vc callbacks by using the generic mipi_dsi_attach/mipi_dsi_detach functions. To use mipi_dsi_attach() we need to fill in the mipi_dsi_device fields, and some of these fields overlap with the fields in omap_dss_dsi_config. In later patches the latter will get dropped. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-15-tomi.valkeinen@ti.com
Diffstat (limited to 'drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c')
-rw-r--r--drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
index 0a8efa447581..0a2f6c1234a9 100644
--- a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
+++ b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
@@ -693,14 +693,6 @@ static int dsicm_connect(struct omap_dss_device *src,
struct omap_dss_device *dst)
{
struct panel_drv_data *ddata = to_panel_data(dst);
- struct device *dev = &ddata->dsi->dev;
- int r;
-
- r = src->ops->dsi.request_vc(src, ddata->channel);
- if (r) {
- dev_err(dev, "failed to get virtual channel\n");
- return r;
- }
ddata->src = src;
return 0;
@@ -711,7 +703,6 @@ static void dsicm_disconnect(struct omap_dss_device *src,
{
struct panel_drv_data *ddata = to_panel_data(dst);
- src->ops->dsi.release_vc(src, ddata->channel);
ddata->src = NULL;
}
@@ -1276,8 +1267,21 @@ static int dsicm_probe(struct mipi_dsi_device *dsi)
goto err_bl;
}
+ dsi->lanes = 2;
+ dsi->format = MIPI_DSI_FMT_RGB888;
+ dsi->mode_flags = MIPI_DSI_CLOCK_NON_CONTINUOUS |
+ MIPI_DSI_MODE_EOT_PACKET;
+ dsi->hs_rate = 300000000;
+ dsi->lp_rate = 10000000;
+
+ r = mipi_dsi_attach(dsi);
+ if (r < 0)
+ goto err_dsi_attach;
+
return 0;
+err_dsi_attach:
+ sysfs_remove_group(&dsi->dev.kobj, &dsicm_attr_group);
err_bl:
destroy_workqueue(ddata->workqueue);
err_reg:
@@ -1294,6 +1298,8 @@ static int __exit dsicm_remove(struct mipi_dsi_device *dsi)
dev_dbg(&dsi->dev, "remove\n");
+ mipi_dsi_detach(dsi);
+
omapdss_device_unregister(dssdev);
if (omapdss_device_is_enabled(dssdev))