提交 6cca481c 编写于 作者: L Laurent Pinchart

drm: omapdrm: Remove omap_crtc enabled field

The field tracks the CRTC state to avoid double-enable or -disable. As
the DRM atomic core guarantees that the CRTC enable and disable
functions won't be called on an already enabled or disabled CRTC, such
tracking isn't needed. Remove the enabled field.
Signed-off-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
上级 dee8260d
......@@ -46,7 +46,6 @@ struct omap_crtc {
struct omap_overlay_manager *mgr;
struct omap_video_timings timings;
bool enabled;
struct omap_drm_irq vblank_irq;
struct omap_drm_irq error_irq;
......@@ -126,7 +125,7 @@ static void omap_crtc_dss_start_update(struct omap_overlay_manager *mgr)
{
}
/* Called only from omap_crtc_setup and suspend/resume handlers. */
/* Called only from omap_crtc_encoder_setup and suspend/resume handlers. */
static void omap_crtc_set_enabled(struct drm_crtc *crtc, bool enable)
{
struct drm_device *dev = crtc->dev;
......@@ -385,14 +384,14 @@ int omap_crtc_flush(struct drm_crtc *crtc)
return 0;
}
static void omap_crtc_setup(struct drm_crtc *crtc)
static void omap_crtc_encoder_setup(struct drm_crtc *crtc, bool enable)
{
struct omap_crtc *omap_crtc = to_omap_crtc(crtc);
struct omap_drm_private *priv = crtc->dev->dev_private;
struct drm_encoder *encoder = NULL;
unsigned int i;
DBG("%s: enabled=%d", omap_crtc->name, omap_crtc->enabled);
DBG("%s: enable=%d", omap_crtc->name, enable);
dispc_runtime_get();
......@@ -408,14 +407,11 @@ static void omap_crtc_setup(struct drm_crtc *crtc)
omap_crtc->current_encoder = encoder;
if (!omap_crtc->enabled) {
if (encoder)
omap_encoder_set_enabled(encoder, false);
} else {
if (encoder) {
omap_encoder_set_enabled(encoder, false);
if (encoder) {
omap_encoder_set_enabled(encoder, false);
if (enable) {
omap_encoder_update(encoder, omap_crtc->mgr,
&omap_crtc->timings);
&omap_crtc->timings);
omap_encoder_set_enabled(encoder, true);
}
}
......@@ -456,9 +452,6 @@ static void omap_crtc_enable(struct drm_crtc *crtc)
DBG("%s", omap_crtc->name);
if (omap_crtc->enabled)
return;
/* Enable all planes associated with the CRTC. */
for (i = 0; i < priv->num_planes; i++) {
struct drm_plane *plane = priv->planes[i];
......@@ -467,9 +460,7 @@ static void omap_crtc_enable(struct drm_crtc *crtc)
WARN_ON(omap_plane_set_enable(plane, true));
}
omap_crtc->enabled = true;
omap_crtc_setup(crtc);
omap_crtc_encoder_setup(crtc, true);
omap_crtc_flush(crtc);
dispc_runtime_get();
......@@ -485,9 +476,6 @@ static void omap_crtc_disable(struct drm_crtc *crtc)
DBG("%s", omap_crtc->name);
if (!omap_crtc->enabled)
return;
omap_crtc_wait_page_flip(crtc);
dispc_runtime_get();
drm_crtc_vblank_off(crtc);
......@@ -501,9 +489,7 @@ static void omap_crtc_disable(struct drm_crtc *crtc)
WARN_ON(omap_plane_set_enable(plane, false));
}
omap_crtc->enabled = false;
omap_crtc_setup(crtc);
omap_crtc_encoder_setup(crtc, false);
omap_crtc_flush(crtc);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册