[PATCH v4 47/80] drm/omap: simplify DSI manual update code
Tomi Valkeinen
tomi.valkeinen at ti.com
Tue Nov 24 12:45:05 UTC 2020
From: Sebastian Reichel <sebastian.reichel at collabora.com>
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 at collabora.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
drivers/gpu/drm/omapdrm/dss/dsi.c | 10 ++++------
drivers/gpu/drm/omapdrm/dss/omapdss.h | 6 +-----
drivers/gpu/drm/omapdrm/omap_crtc.c | 16 ++++------------
3 files changed, 9 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
index fcb51aedf847..71dde45ada10 100644
--- a/drivers/gpu/drm/omapdrm/dss/dsi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
@@ -5014,11 +5014,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)
@@ -5449,7 +5447,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
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
index c2199c4946ec..a1236b8ef7ea 100644
--- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
+++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
@@ -275,10 +275,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;
@@ -300,7 +296,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 */
diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
index f6b968060cf0..5ab557c477ef 100644
--- a/drivers/gpu/drm/omapdrm/omap_crtc.c
+++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
@@ -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;
@@ -550,11 +543,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!");
--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
More information about the dri-devel
mailing list