public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx <intel-gfx@lists.freedesktop.org>
Subject: Re: More questions and patches for 835GM/ns2501 DVO
Date: Mon, 4 Nov 2013 17:48:16 +0200	[thread overview]
Message-ID: <20131104154816.GS13047@intel.com> (raw)
In-Reply-To: <20131104151509.GF4167@phenom.ffwll.local>

On Mon, Nov 04, 2013 at 04:15:09PM +0100, Daniel Vetter wrote:
> On Mon, Nov 04, 2013 at 12:57:20PM +0100, Thomas Richter wrote:
> > Hi Daniel,
> > >>I also tried a lot with the two-monitor case and again went deeply into the
> > >>DPLL setup logic.
> > >>The differences I observed before are simply due to the initial resolution
> > >>(800x600), in the final
> > >>resolution, the DPLL settings are actually correct. What I get there is:
> > >I suspect that due to the pipe A quirk logic we actually get the setup
> > >sequence for the DPLLs completely wrong. This will require a bit more
> > >magic to make it work correctly ... But I have some ideas.
> > >-Daniel
> > Well,  maybe. The register contents that are listed in my mail are
> > read out from the hardware exactly when the
> > DVO gets stuck, actually right before it. From what I can see from
> > there is that the PLL setup and DVO setup
> > look actually ok (from what I can tell). What is also remarkable is
> > that the DVO-reenable logic does succeed by
> > writing the same value to the DPLL_A and DPLL_B registers, which is
> > the proper value for a 1024x768 screen. However,
> > the DPLL_B register value is correct, whereas the DPLL_A register
> > contains values that are likely useful for the VGA
> > output.
> > 
> > Now, here is the miracle: The DVOC register indicates that the DVO
> > gets its input from pipe B. However, writing the
> > correct value into DPLL_A (!) (remember, DPLL_B is already set
> > correctly) revives the DVO.
> > 
> > Thus, I wonder how this can be. The only explanation I have is that
> > the DVO is still fed by pipe A, and not by pipe B.
> > Maybe there is something else that needs to be done to switch the
> > DVO to pipe B.
> 
> That's actually my suspicion. Most of these registers here are
> double-buffered and only take effect if preconditions are right. Due to
> our pipe A quirk we never shut down pipe A, so the pll updates might not
> actually take effect at all (but the registers have the new values
> already). There's unfortunately no registers to get at the actual hw
> state, and only later hw generations have added at least a few bits to
> indicate whether the large transitions (on/off) have actually happened.
> 
> The problem is that I don't yet have a clear idea how to do the pipe A
> quirk correctly :(

Could it be that we should only have the 2x DVO clock enable bit set
in the correct DPLL register?

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 8f40ae3..4b02890 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1470,8 +1470,11 @@ static void i9xx_enable_pll(struct intel_crtc *crtc)
 static void i9xx_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
 {
        /* Don't disable pipe A or pipe A PLLs if needed */
-       if (pipe == PIPE_A && (dev_priv->quirks & QUIRK_PIPEA_FORCE))
+       if (pipe == PIPE_A && (dev_priv->quirks & QUIRK_PIPEA_FORCE)) {
+               /* disable 2x DVO clock output */
+               I915_WRITE(DPLL(pipe), I915_READ(DPLL(pipe) & ~DPLL_2X_MODE));
                return;
+       }
 
        /* Make sure the pipe isn't still relying on us */
        assert_pipe_disabled(dev_priv, pipe);


> -Daniel
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC

  reply	other threads:[~2013-11-04 15:48 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-03 16:55 More questions and patches for 835GM/ns2501 DVO Thomas Richter
2013-11-03 17:12 ` Daniel Vetter
2013-11-03 17:13   ` Daniel Vetter
     [not found]   ` <19544_1383498802_52768431_19544_2610_1_20131103171348.GB4167@phenom.ffwll.local>
2013-11-03 19:00     ` Thomas Richter
2013-11-03 21:18       ` Daniel Vetter
2013-11-06 10:34         ` Daniel Vetter
2013-11-15 17:33           ` Daniel Vetter
     [not found]           ` <10422_1384536748_52865AAC_10422_4782_1_20131115173300.GZ22741@phenom.ffwll.local>
2013-11-15 18:59             ` Thomas Richter
     [not found]         ` <8785_1383734019_527A1B02_8785_7652_1_20131106103405.GH14082@phenom.ffwll.local>
2013-11-06 19:27           ` Thomas Richter
     [not found]       ` <19544_1383513468_5276BD7B_19544_3653_1_20131103211814.GC4167@phenom.ffwll.local>
2013-11-03 23:09         ` Thomas Richter
2013-11-04  7:15           ` Daniel Vetter
     [not found]           ` <19544_1383549334_52774996_19544_5502_1_CAKMK7uEPjjCsqYTpyO+Bes1eg5b8fVfGFkzQFtwDPxYNe4KwRw@mail.gmail.com>
2013-11-04 11:57             ` Thomas Richter
2013-11-04 15:15               ` Daniel Vetter
2013-11-04 15:48                 ` Ville Syrjälä [this message]
2013-11-04 16:05                   ` Ville Syrjälä
     [not found]               ` <19544_1383578084_5277B9E4_19544_9350_1_20131104151509.GF4167@phenom.ffwll.local>
2013-11-04 23:20                 ` Patches for i830 flicker on panning Thomas Richter
2013-11-05  7:07                   ` Daniel Vetter
2013-11-03 23:56         ` 16bpp and 8bpp uxa output broken Thomas Richter
2013-11-04  7:20           ` Daniel Vetter
2013-11-03 19:39     ` More questions and patches for 835GM/ns2501 DVO Thomas Richter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131104154816.GS13047@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=daniel@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox