diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2015-10-21 16:34:08 +0300 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2016-03-03 18:38:22 +0300 |
commit | 3a9241386494ed5797e4c7244b944ac312d35515 (patch) | |
tree | eee51e4133c4b68c8725a16e81556527d3091f6f /drivers/gpu/drm/omapdrm/omap_crtc.c | |
parent | 7b9cb5eeb4d0b1db63e198dfd02aadddaf245de4 (diff) | |
download | linux-3a9241386494ed5797e4c7244b944ac312d35515.tar.xz |
drm/omap: remove crtc->mgr field
In order to remove uses of 'struct omap_overlay_manager' from omapdrm,
this patch removes the crtc->mgr field.
To accomplish that, a new static array is added along the current
'omap_crtcs' static array, which is used to store the output device
connected to a crtc.
Optimally we'd use the struct omap_crtc to store this information, but
at the time when omap_crtc_dss_connect() is called, we don't yet have
the omap_crtc instances. This might possibly be fixed later, but for now
the static array does the job.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_crtc.c')
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_crtc.c | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c index 6daf0bd67d06..e583de9e31db 100644 --- a/drivers/gpu/drm/omapdrm/omap_crtc.c +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c @@ -34,14 +34,6 @@ struct omap_crtc { const char *name; enum omap_channel channel; - /* - * Temporary: eventually this will go away, but it is needed - * for now to keep the output's happy. (They only need - * mgr->id.) Eventually this will be replaced w/ something - * more common-panel-framework-y - */ - struct omap_overlay_manager *mgr; - struct omap_video_timings timings; struct omap_drm_irq vblank_irq; @@ -104,17 +96,20 @@ int omap_crtc_wait_pending(struct drm_crtc *crtc) /* ovl-mgr-id -> crtc */ static struct omap_crtc *omap_crtcs[8]; +static struct omap_dss_device *omap_crtc_output[8]; /* we can probably ignore these until we support command-mode panels: */ static int omap_crtc_dss_connect(struct omap_overlay_manager *mgr, struct omap_dss_device *dst) { - if (mgr->output) + if (omap_crtc_output[mgr->id]) return -EINVAL; if ((dispc_mgr_get_supported_outputs(mgr->id) & dst->id) == 0) return -EINVAL; + omap_crtc_output[mgr->id] = dst; + dst->manager = mgr; mgr->output = dst; @@ -124,6 +119,8 @@ static int omap_crtc_dss_connect(struct omap_overlay_manager *mgr, static void omap_crtc_dss_disconnect(struct omap_overlay_manager *mgr, struct omap_dss_device *dst) { + omap_crtc_output[mgr->id] = NULL; + mgr->output->manager = NULL; mgr->output = NULL; } @@ -142,7 +139,7 @@ static void omap_crtc_set_enabled(struct drm_crtc *crtc, bool enable) u32 framedone_irq, vsync_irq; int ret; - if (omap_crtc->mgr->output->output_type == OMAP_DISPLAY_TYPE_HDMI) { + if (omap_crtc_output[channel]->output_type == OMAP_DISPLAY_TYPE_HDMI) { dispc_mgr_enable(channel, enable); return; } @@ -551,9 +548,6 @@ struct drm_crtc *omap_crtc_init(struct drm_device *dev, omap_crtc->error_irq.irq = omap_crtc_error_irq; omap_irq_register(dev, &omap_crtc->error_irq); - /* temporary: */ - omap_crtc->mgr = omap_dss_get_overlay_manager(channel); - ret = drm_crtc_init_with_planes(dev, crtc, plane, NULL, &omap_crtc_funcs, NULL); if (ret < 0) { |