From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [PATCH] drm/i915: fixup the plane->pipe fixup code Date: Fri, 07 Sep 2012 10:46:04 +0100 Message-ID: <275ffc$6gs6ns@fmsmga002.fm.intel.com> References: <1346962175-7356-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 41B599E8F2 for ; Fri, 7 Sep 2012 02:46:11 -0700 (PDT) In-Reply-To: <1346962175-7356-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Intel Graphics Development Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org On Thu, 6 Sep 2012 22:09:35 +0200, Daniel Vetter wrote: > We need to check whether the _other plane is on our pipe, not whether > our plane is on the other pipe. Otherwise if not both pipes/planes are > active, we won't properly clean up the mess and set up our desired > plane->pipe mapping. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51265 > Tested-by: Vladyslav Shtabovenko > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/i915/intel_display.c | 28 ++++++++++++++++++---------- > 1 file changed, 18 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index fd9c275..ce9b247 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -7994,11 +7994,27 @@ static void intel_enable_pipe_a(struct drm_device *dev) > > } > > +static bool > +intel_check_plane_mapping(struct intel_crtc *crtc) > +{ > + struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; > + u32 reg, val; > + > + reg = DSPCNTR(!crtc->plane); > + val = I915_READ(reg); > + > + if ((val & DISPLAY_PLANE_ENABLE) == 0 && > + (!!(val & DISPPLANE_SEL_PIPE_MASK) == crtc->pipe)) > + return false; If the other plane is off but has our pipe selected, turn off our plane. Try again. -Chris -- Chris Wilson, Intel Open Source Technology Centre