drm/i915/display: Fix mode private_flags comparison at atomic_check
authorUma Shankar <uma.shankar@intel.com>
Thu, 26 Mar 2020 12:51:11 +0000 (18:21 +0530)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 26 Mar 2020 17:21:30 +0000 (10:21 -0700)
This patch fixes the private_flags of mode to be checked and
compared against uapi.mode and not from hw.mode. This helps
properly trigger modeset at boot if desired by driver.

It helps resolve audio_codec initialization issues if display
is connected at boot. Initial discussion on this issue has happened
on below thread:
https://patchwork.freedesktop.org/series/74828/

v2: No functional change. Fixed the Closes tag and added
Maarten's RB.

v3: Added Fixes tag.

Cc: Ville Syrjä <ville.syrjala@linux.intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Cc: Souza, Jose <jose.souza@intel.com>
Fixes: 58d124ea2739 ("drm/i915: Complete crtc hw/uapi split, v6.")
Closes: https://gitlab.freedesktop.org/drm/intel/issues/1363
Suggested-by: Ville Syrjä <ville.syrjala@linux.intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: SweeAun Khor <swee.aun.khor@intel.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200326125111.11081-1-uma.shankar@intel.com
(cherry picked from commit d5e56705927e00f703b2eb5a98299dd6622d16e5)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/i915/display/intel_display.c

index 8f23c4d51c33f930cd23458973b9d2fb5652bc2f..346846609f45c9aa522be701d3aaddfb3484d10d 100644 (file)
@@ -14748,8 +14748,8 @@ static int intel_atomic_check(struct drm_device *dev,
        /* Catch I915_MODE_FLAG_INHERITED */
        for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
                                            new_crtc_state, i) {
-               if (new_crtc_state->hw.mode.private_flags !=
-                   old_crtc_state->hw.mode.private_flags)
+               if (new_crtc_state->uapi.mode.private_flags !=
+                   old_crtc_state->uapi.mode.private_flags)
                        new_crtc_state->uapi.mode_changed = true;
        }