drm/atomic-helper: Do not call ->mode_fixup for CRTC which will be disabled
authorLiu Ying <gnuiyl@gmail.com>
Fri, 27 May 2016 09:35:54 +0000 (17:35 +0800)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 30 May 2016 08:44:15 +0000 (10:44 +0200)
When a CRTC is going to be disabled, it's state may contain a display mode
with zeroed content.  This could be reproduced by HDMI cable hotplug out
operation with legacy fbdev support in dual display cases.  It would confuse
driver's CRTC callback ->mode_fixup and make the total state be rejected.
So, let's don't call the callback for the CRTC.

Signed-off-by: Liu Ying <gnuiyl@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1464341754-7087-1-git-send-email-gnuiyl@gmail.com
drivers/gpu/drm/drm_atomic_helper.c

index ddfa0d120e398a63f755c677dcdb1b5e58f371e5..939df900dcaa0adadee6a4f48b791f30fcf4ad7a 100644 (file)
@@ -414,6 +414,9 @@ mode_fixup(struct drm_atomic_state *state)
        for_each_crtc_in_state(state, crtc, crtc_state, i) {
                const struct drm_crtc_helper_funcs *funcs;
 
+               if (!crtc_state->enable)
+                       continue;
+
                if (!crtc_state->mode_changed &&
                    !crtc_state->connectors_changed)
                        continue;