drm/i915: Assert dpll running in intel_crtc_load_lut() on pre-PCH platforms
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 4 Jun 2013 10:49:07 +0000 (13:49 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 6 Jun 2013 11:57:22 +0000 (13:57 +0200)
Adding more context from Ville's reply to Rodrigo's question why we
need this:

"The spec says that on some hardware you need to PLL running before you
can poke at the palette registers. I didn't actually try to anger the
hardware so I'm not really sure what would happen otherwise, but IIRC
Jesse said something about a hard system hang..."

And generally documenting such ordering constraints with asserts is
Just Good.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
[danvet: Spruce up the commit message a lot.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c

index c593ed0ca1b9ea9b450a916c90866a6aba337d0e..0e1f82810f58b1a931520567a141816bca56a536 100644 (file)
@@ -6311,6 +6311,9 @@ void intel_crtc_load_lut(struct drm_crtc *crtc)
        if (!crtc->enabled || !intel_crtc->active)
                return;
 
+       if (!HAS_PCH_SPLIT(dev_priv->dev))
+               assert_pll_enabled(dev_priv, pipe);
+
        /* use legacy palette for Ironlake */
        if (HAS_PCH_SPLIT(dev))
                palreg = LGC_PALETTE(pipe);