diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 15 | 
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 0edb549d143..647dfcc26c4 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -3549,6 +3549,20 @@ static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv)  	I915_WRITE(GEN7_FF_THREAD_MODE, reg);  } +static void lpt_init_clock_gating(struct drm_device *dev) +{ +	struct drm_i915_private *dev_priv = dev->dev_private; + +	/* +	 * TODO: this bit should only be enabled when really needed, then +	 * disabled when not needed anymore in order to save power. +	 */ +	if (dev_priv->pch_id == INTEL_PCH_LPT_LP_DEVICE_ID_TYPE) +		I915_WRITE(SOUTH_DSPCLK_GATE_D, +			   I915_READ(SOUTH_DSPCLK_GATE_D) | +			   PCH_LP_PARTITION_LEVEL_DISABLE); +} +  static void haswell_init_clock_gating(struct drm_device *dev)  {  	struct drm_i915_private *dev_priv = dev->dev_private; @@ -3600,6 +3614,7 @@ static void haswell_init_clock_gating(struct drm_device *dev)  			WM_DBG_DISALLOW_SPRITE |  			WM_DBG_DISALLOW_MAXFIFO); +	lpt_init_clock_gating(dev);  }  static void ivybridge_init_clock_gating(struct drm_device *dev)  |