mirror of https://gitee.com/openkylin/linux.git
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: 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-48-tomi.valkeinen@ti.com
This commit is contained in:
parent
2390fadb78
commit
94d7332979
|
@ -5011,11 +5011,9 @@ static int dsi_get_clocks(struct dsi_data *dsi)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const struct omap_dss_device_ops dsi_ops = {
|
||||
.dsi = {
|
||||
.update = dsi_update_all,
|
||||
.is_video_mode = dsi_is_video_mode,
|
||||
},
|
||||
static const struct omapdss_dsi_ops dsi_ops = {
|
||||
.update = dsi_update_all,
|
||||
.is_video_mode = dsi_is_video_mode,
|
||||
};
|
||||
|
||||
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)
|
|||
out->type = OMAP_DISPLAY_TYPE_DSI;
|
||||
out->name = dsi->module_id == 0 ? "dsi.0" : "dsi.1";
|
||||
out->dispc_channel = dsi_get_channel(dsi);
|
||||
out->ops = &dsi_ops;
|
||||
out->dsi_ops = &dsi_ops;
|
||||
out->owner = THIS_MODULE;
|
||||
out->of_port = 0;
|
||||
out->bus_flags = DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE
|
||||
|
|
|
@ -278,10 +278,6 @@ struct omapdss_dsi_ops {
|
|||
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 device *dev;
|
||||
|
||||
|
@ -303,7 +299,7 @@ struct omap_dss_device {
|
|||
|
||||
const char *name;
|
||||
|
||||
const struct omap_dss_device_ops *ops;
|
||||
const struct omapdss_dsi_ops *dsi_ops;
|
||||
u32 bus_flags;
|
||||
|
||||
/* OMAP DSS output specific fields */
|
||||
|
|
|
@ -366,17 +366,10 @@ static void omap_crtc_manual_display_update(struct work_struct *data)
|
|||
struct drm_device *dev = omap_crtc->base.dev;
|
||||
int ret;
|
||||
|
||||
if (!dssdev) {
|
||||
dev_err_once(dev->dev, "missing display dssdev!");
|
||||
if (!dssdev || !dssdev->dsi_ops || !dssdev->dsi_ops->update)
|
||||
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) {
|
||||
spin_lock_irq(&dev->event_lock);
|
||||
omap_crtc->pending = false;
|
||||
|
@ -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_dss_device *dssdev = omap_crtc->pipe->output;
|
||||
|
||||
if (dssdev->type != OMAP_DISPLAY_TYPE_DSI ||
|
||||
!dssdev->ops->dsi.is_video_mode)
|
||||
if (!dssdev || !dssdev->dsi_ops || !dssdev->dsi_ops->is_video_mode)
|
||||
return false;
|
||||
|
||||
if (dssdev->ops->dsi.is_video_mode(dssdev))
|
||||
if (dssdev->dsi_ops->is_video_mode(dssdev))
|
||||
return false;
|
||||
|
||||
DBG("detected manually updated display!");
|
||||
|
|
Loading…
Reference in New Issue