drm/i915/skl: disable DC states before display core init/uninit
authorImre Deak <imre.deak@intel.com>
Wed, 4 Nov 2015 17:24:17 +0000 (19:24 +0200)
committerImre Deak <imre.deak@intel.com>
Tue, 17 Nov 2015 18:55:16 +0000 (20:55 +0200)
We need to disable the DC states during display core init to sanitize
the HW state we inherit from the BIOS. We need to disable it during
display core uninit too, since the power well framework will leave it
enabled (since we get to the display core uninit step with all power
domains disabled already).

Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1446657859-9598-9-git-send-email-imre.deak@intel.com
drivers/gpu/drm/i915/intel_runtime_pm.c

index 698a5339b1687f43892ce87c6fa4363381904762..4b3ae49754ccec7b63649265f191f37b88f69fc2 100644 (file)
@@ -1882,6 +1882,8 @@ static void skl_display_core_init(struct drm_i915_private *dev_priv,
        struct i915_power_domains *power_domains = &dev_priv->power_domains;
        uint32_t val;
 
+       gen9_set_dc_state(dev_priv, DC_STATE_DISABLE);
+
        /* enable PCH reset handshake */
        val = I915_READ(HSW_NDE_RSTWRN_OPT);
        I915_WRITE(HSW_NDE_RSTWRN_OPT, val | RESET_PCH_HANDSHAKE_ENABLE);
@@ -1904,6 +1906,8 @@ static void skl_display_core_uninit(struct drm_i915_private *dev_priv)
 {
        struct i915_power_domains *power_domains = &dev_priv->power_domains;
 
+       gen9_set_dc_state(dev_priv, DC_STATE_DISABLE);
+
        skl_uninit_cdclk(dev_priv);
 
        /* The spec doesn't call for removing the reset handshake flag */