Commit 94d73329 authored by Sebastian Reichel's avatar Sebastian Reichel Committed by Tomi Valkeinen

drm/omap: simplify DSI manual update code

Move dsi_ops into the main structure, since all other ops
are gone. Instead of checking the device type we can simply
check if dsi_ops are set.
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-48-tomi.valkeinen@ti.com
parent 2390fadb
...@@ -5011,11 +5011,9 @@ static int dsi_get_clocks(struct dsi_data *dsi) ...@@ -5011,11 +5011,9 @@ static int dsi_get_clocks(struct dsi_data *dsi)
return 0; return 0;
} }
static const struct omap_dss_device_ops dsi_ops = { static const struct omapdss_dsi_ops dsi_ops = {
.dsi = { .update = dsi_update_all,
.update = dsi_update_all, .is_video_mode = dsi_is_video_mode,
.is_video_mode = dsi_is_video_mode,
},
}; };
static irqreturn_t omap_dsi_te_irq_handler(int irq, void *dev_id) static irqreturn_t omap_dsi_te_irq_handler(int irq, void *dev_id)
...@@ -5446,7 +5444,7 @@ static int dsi_init_output(struct dsi_data *dsi) ...@@ -5446,7 +5444,7 @@ static int dsi_init_output(struct dsi_data *dsi)
out->type = OMAP_DISPLAY_TYPE_DSI; out->type = OMAP_DISPLAY_TYPE_DSI;
out->name = dsi->module_id == 0 ? "dsi.0" : "dsi.1"; out->name = dsi->module_id == 0 ? "dsi.0" : "dsi.1";
out->dispc_channel = dsi_get_channel(dsi); out->dispc_channel = dsi_get_channel(dsi);
out->ops = &dsi_ops; out->dsi_ops = &dsi_ops;
out->owner = THIS_MODULE; out->owner = THIS_MODULE;
out->of_port = 0; out->of_port = 0;
out->bus_flags = DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE out->bus_flags = DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE
......
...@@ -278,10 +278,6 @@ struct omapdss_dsi_ops { ...@@ -278,10 +278,6 @@ struct omapdss_dsi_ops {
bool (*is_video_mode)(struct omap_dss_device *dssdev); bool (*is_video_mode)(struct omap_dss_device *dssdev);
}; };
struct omap_dss_device_ops {
const struct omapdss_dsi_ops dsi;
};
struct omap_dss_device { struct omap_dss_device {
struct device *dev; struct device *dev;
...@@ -303,7 +299,7 @@ struct omap_dss_device { ...@@ -303,7 +299,7 @@ struct omap_dss_device {
const char *name; const char *name;
const struct omap_dss_device_ops *ops; const struct omapdss_dsi_ops *dsi_ops;
u32 bus_flags; u32 bus_flags;
/* OMAP DSS output specific fields */ /* OMAP DSS output specific fields */
......
...@@ -366,17 +366,10 @@ static void omap_crtc_manual_display_update(struct work_struct *data) ...@@ -366,17 +366,10 @@ static void omap_crtc_manual_display_update(struct work_struct *data)
struct drm_device *dev = omap_crtc->base.dev; struct drm_device *dev = omap_crtc->base.dev;
int ret; int ret;
if (!dssdev) { if (!dssdev || !dssdev->dsi_ops || !dssdev->dsi_ops->update)
dev_err_once(dev->dev, "missing display dssdev!");
return; return;
}
if (dssdev->type != OMAP_DISPLAY_TYPE_DSI || !dssdev->ops->dsi.update) {
dev_err_once(dev->dev, "no DSI update callback found!");
return;
}
ret = dssdev->ops->dsi.update(dssdev); ret = dssdev->dsi_ops->update(dssdev);
if (ret < 0) { if (ret < 0) {
spin_lock_irq(&dev->event_lock); spin_lock_irq(&dev->event_lock);
omap_crtc->pending = false; omap_crtc->pending = false;
...@@ -585,11 +578,10 @@ static bool omap_crtc_is_manually_updated(struct drm_crtc *crtc) ...@@ -585,11 +578,10 @@ static bool omap_crtc_is_manually_updated(struct drm_crtc *crtc)
struct omap_crtc *omap_crtc = to_omap_crtc(crtc); struct omap_crtc *omap_crtc = to_omap_crtc(crtc);
struct omap_dss_device *dssdev = omap_crtc->pipe->output; struct omap_dss_device *dssdev = omap_crtc->pipe->output;
if (dssdev->type != OMAP_DISPLAY_TYPE_DSI || if (!dssdev || !dssdev->dsi_ops || !dssdev->dsi_ops->is_video_mode)
!dssdev->ops->dsi.is_video_mode)
return false; return false;
if (dssdev->ops->dsi.is_video_mode(dssdev)) if (dssdev->dsi_ops->is_video_mode(dssdev))
return false; return false;
DBG("detected manually updated display!"); DBG("detected manually updated display!");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment