[PATCH] drm/atomic: shutdown *current* encoder
Rob Clark
robdclark at gmail.com
Thu Nov 20 14:18:38 PST 2014
In disable_outputs() we need to shut down the outgoing encoder, not the
incoming one (we have already swapped-state at this point). Without
this, we end up telling the driver to crtc->dpms(OFF) without first
encoder->dpms(OFF), and that makes some hw quite unhappy.
v2: missing WARN_ON() hunk and comment
Reviewed-by: Daniel Vetter <daniel.vetter at intel.com>
Signed-off-by: Rob Clark <robdclark at gmail.com>
---
drivers/gpu/drm/drm_atomic_helper.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 5ae5b25..61bec0b 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -502,9 +502,12 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
if (!old_conn_state || !old_conn_state->crtc)
continue;
- encoder = connector->state->best_encoder;
+ encoder = old_conn_state->best_encoder;
- if (!encoder)
+ /* We shouldn't get this far if we didn't previously have
+ * an encoder.. but WARN_ON() rather than explode.
+ */
+ if (WARN_ON(!encoder))
continue;
funcs = encoder->helper_private;
--
1.9.3
More information about the dri-devel
mailing list