aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaarten Lankhorst <[email protected]>2015-09-23 16:11:41 +0200
committerDaniel Vetter <[email protected]>2015-09-30 10:20:04 +0200
commitb26d3ea323b41a56db74f46131bc89e3c485f365 (patch)
tree3be4ebd9aab11bb0530280765a724c3f872d8f8c
parenteecf613a432c663d206a11c2543e9cca2ddc3aba (diff)
drm/i915: Add primary plane to mask if it's visible
This fixes the warnings like "plane A assertion failure, should be disabled but not" that on the initial modeset during boot. This can happen if the primary plane is enabled by the firmware, but inheriting it fails because the DMAR is active or for other reasons. Most likely caused by commit 36750f284b3a4f19b304fda1bb7d6e9e1275ea8d Author: Maarten Lankhorst <[email protected]> Date: Mon Jun 1 12:49:54 2015 +0200 drm/i915: update plane state during init This is the 4.4 version of commit 721a09f7393de6c28a07516dccd654c6e995944a Author: Maarten Lankhorst <[email protected]> Date: Tue Sep 15 14:28:54 2015 +0200 drm/i915: Add primary plane to mask if it's visible Reported-by: Andreas Reis <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91429 Reported-and-tested-by: Emil Renner Berthing <[email protected]> Tested-by: Andreas Reis <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>
-rw-r--r--drivers/gpu/drm/i915/intel_display.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 45ec0b8bf43a..036c704f3067 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -15128,11 +15128,15 @@ static bool primary_get_hw_state(struct intel_plane *plane)
/* FIXME read out full plane state for all planes */
static void readout_plane_state(struct intel_crtc *crtc)
{
+ struct drm_plane *primary = crtc->base.primary;
struct intel_plane_state *plane_state =
- to_intel_plane_state(crtc->base.primary->state);
+ to_intel_plane_state(primary->state);
plane_state->visible =
- primary_get_hw_state(to_intel_plane(crtc->base.primary));
+ primary_get_hw_state(to_intel_plane(primary));
+
+ if (plane_state->visible)
+ crtc->base.state->plane_mask |= 1 << drm_plane_index(primary);
}
static void intel_modeset_readout_hw_state(struct drm_device *dev)