<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - [BayTrail-M] [drm:intel_pipe_config_compare] *ERROR* mismatch in clock (expected 146250, found 0)"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=67345#c17">Comment # 17</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - [BayTrail-M] [drm:intel_pipe_config_compare] *ERROR* mismatch in clock (expected 146250, found 0)"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=67345">bug 67345</a>
              from <span class="vcard"><a class="email" href="mailto:chris@chris-wilson.co.uk" title="Chris Wilson <chris@chris-wilson.co.uk>"> <span class="fn">Chris Wilson</span></a>
</span></b>
        <pre>Hmm, 'tis working now.

[10412.590966] mdiv=11625351, m1=3, m2=81, n=5, p1=3, p2=2
[10412.590973] vco=4860000, dot=1620000, clock=162000


diff --git a/drivers/gpu/drm/i915/intel_display.c
b/drivers/gpu/drm/i915/intel_display.c
index 5741d48..5219fdc 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5083,10 +5083,10 @@ static void vlv_crtc_clock_get(struct intel_crtc *crtc,
 {
        struct drm_device *dev = crtc->base.dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
+       const int refclk = 100000;
        int pipe = pipe_config->cpu_transcoder;
        intel_clock_t clock;
        u32 mdiv;
-       int refclk = 100000, fastclk, update_rate;

        mutex_lock(&dev_priv->dpio_lock);
        mdiv = vlv_dpio_read(dev_priv, pipe, DPIO_DIV(pipe));
@@ -5098,12 +5098,16 @@ static void vlv_crtc_clock_get(struct intel_crtc *crtc,
        clock.p1 = (mdiv >> DPIO_P1_SHIFT) & 7;
        clock.p2 = (mdiv >> DPIO_P2_SHIFT) & 0x1f;

-       update_rate = refclk / clock.n;
-       clock.vco = update_rate * clock.m1 * clock.m2;
-       fastclk = clock.vco / clock.p1 / clock.p2;
-       clock.dot = (2 * fastclk);
+printk("mdiv=%x, m1=%d, m2=%d, n=%d, p1=%d, p2=%d\n",
+mdiv, clock.m1, clock.m2, clock.n, clock.p1, clock.p2);
+
+       clock.vco = refclk * clock.m1 * clock.m2 / clock.n;
+       clock.dot = 2 * clock.vco / (clock.p1 * clock.p2);

        pipe_config->port_clock = clock.dot / 10;
+
+printk("vco=%d, dot=%d, clock=%d\n",
+clock.vco, clock.dot, pipe_config->port_clock);
 }</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>