From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH 34/58] drm/i915: ensure the force pipe A quirk is actually followed Date: Wed, 5 Sep 2012 09:32:34 -0700 Message-ID: <20120905093234.5d582955@jbarnes-desktop> References: <1345403595-9678-1-git-send-email-daniel.vetter@ffwll.ch> <1345403595-9678-35-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 oproxy8-pub.bluehost.com (oproxy8-pub.bluehost.com [69.89.22.20]) by gabe.freedesktop.org (Postfix) with SMTP id D11509F758 for ; Wed, 5 Sep 2012 09:32:35 -0700 (PDT) In-Reply-To: <1345403595-9678-35-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: Daniel Vetter Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org On Sun, 19 Aug 2012 21:12:51 +0200 Daniel Vetter wrote: > Many BIOSen forget to turn on the pipe A after resume (because they > actually don't turn on anything), so we have to do that ourselves when > sanitizing the hw state. > > I've discovered this due to the recent addition of a pipe WARN that > takes the force quirk into account. > > v2: Actually try to enable the pipe with a proper configuration instead > of simpyl switching it on with whatever random state the bios left it > in after resume. > > v3: Fixup rebase conflict - the load_detect functions have lost their > encoder argument. > > Signed-Off-by: Daniel Vetter > --- > drivers/gpu/drm/i915/intel_display.c | 36 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 2cfb397..ab4fa7f 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -7602,6 +7602,33 @@ intel_connector_break_all_links(struct intel_connector *connector) > connector->encoder->base.crtc = NULL; > } > > +static void intel_enable_pipe_a(struct drm_device *dev) > +{ > + struct intel_connector *connector; > + struct drm_connector *crt = NULL; > + struct intel_load_detect_pipe load_detect_temp; > + > + /* We can't just switch on the pipe A, we need to set things up with a > + * proper mode and output configuration. As a gross hack, enable pipe A > + * by enabling the load detect pipe once. */ > + list_for_each_entry(connector, > + &dev->mode_config.connector_list, > + base.head) { > + if (connector->encoder->type == INTEL_OUTPUT_ANALOG) { > + crt = &connector->base; > + break; > + } > + } > + > + if (!crt) > + return; > + > + if (intel_get_load_detect_pipe(crt, NULL, &load_detect_temp)) > + intel_release_load_detect_pipe(crt, &load_detect_temp); Should we shout if this fails? Other than that: Reviewed-by: Jesse Barnes -- Jesse Barnes, Intel Open Source Technology Center