diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 206 | 
1 files changed, 2 insertions, 204 deletions
| diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 696491d71a1d..07f663cd2d1c 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -6830,16 +6830,6 @@ static void ilk_init_clock_gating(struct drm_i915_private *dev_priv)  	I915_WRITE(ILK_DISPLAY_CHICKEN2,  		   I915_READ(ILK_DISPLAY_CHICKEN2) |  		   ILK_ELPIN_409_SELECT); -	I915_WRITE(_3D_CHICKEN2, -		   _3D_CHICKEN2_WM_READ_PIPELINED << 16 | -		   _3D_CHICKEN2_WM_READ_PIPELINED); - -	/* WaDisableRenderCachePipelinedFlush:ilk */ -	I915_WRITE(CACHE_MODE_0, -		   _MASKED_BIT_ENABLE(CM0_PIPELINED_RENDER_FLUSH_DISABLE)); - -	/* WaDisable_RenderCache_OperationalFlush:ilk */ -	I915_WRITE(CACHE_MODE_0, _MASKED_BIT_DISABLE(RC_OP_FLUSH_ENABLE));  	g4x_disable_trickle_feed(dev_priv); @@ -6902,27 +6892,6 @@ static void gen6_init_clock_gating(struct drm_i915_private *dev_priv)  		   I915_READ(ILK_DISPLAY_CHICKEN2) |  		   ILK_ELPIN_409_SELECT); -	/* WaDisableHiZPlanesWhenMSAAEnabled:snb */ -	I915_WRITE(_3D_CHICKEN, -		   _MASKED_BIT_ENABLE(_3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB)); - -	/* WaDisable_RenderCache_OperationalFlush:snb */ -	I915_WRITE(CACHE_MODE_0, _MASKED_BIT_DISABLE(RC_OP_FLUSH_ENABLE)); - -	/* -	 * BSpec recoomends 8x4 when MSAA is used, -	 * however in practice 16x4 seems fastest. -	 * -	 * Note that PS/WM thread counts depend on the WIZ hashing -	 * disable bit, which we don't touch here, but it's good -	 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM). -	 */ -	I915_WRITE(GEN6_GT_MODE, -		   _MASKED_FIELD(GEN6_WIZ_HASHING_MASK, GEN6_WIZ_HASHING_16x4)); - -	I915_WRITE(CACHE_MODE_0, -		   _MASKED_BIT_DISABLE(CM0_STC_EVICT_DISABLE_LRA_SNB)); -  	I915_WRITE(GEN6_UCGCTL1,  		   I915_READ(GEN6_UCGCTL1) |  		   GEN6_BLBUNIT_CLOCK_GATE_DISABLE | @@ -6945,18 +6914,6 @@ static void gen6_init_clock_gating(struct drm_i915_private *dev_priv)  		   GEN6_RCPBUNIT_CLOCK_GATE_DISABLE |  		   GEN6_RCCUNIT_CLOCK_GATE_DISABLE); -	/* WaStripsFansDisableFastClipPerformanceFix:snb */ -	I915_WRITE(_3D_CHICKEN3, -		   _MASKED_BIT_ENABLE(_3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL)); - -	/* -	 * Bspec says: -	 * "This bit must be set if 3DSTATE_CLIP clip mode is set to normal and -	 * 3DSTATE_SF number of SF output attributes is more than 16." -	 */ -	I915_WRITE(_3D_CHICKEN3, -		   _MASKED_BIT_ENABLE(_3D_CHICKEN3_SF_DISABLE_PIPELINED_ATTR_FETCH)); -  	/*  	 * According to the spec the following bits should be  	 * set in order to enable memory self-refresh and fbc: @@ -6986,24 +6943,6 @@ static void gen6_init_clock_gating(struct drm_i915_private *dev_priv)  	gen6_check_mch_setup(dev_priv);  } -static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv) -{ -	u32 reg = I915_READ(GEN7_FF_THREAD_MODE); - -	/* -	 * WaVSThreadDispatchOverride:ivb,vlv -	 * -	 * This actually overrides the dispatch -	 * mode for all thread types. -	 */ -	reg &= ~GEN7_FF_SCHED_MASK; -	reg |= GEN7_FF_TS_SCHED_HW; -	reg |= GEN7_FF_VS_SCHED_HW; -	reg |= GEN7_FF_DS_SCHED_HW; - -	I915_WRITE(GEN7_FF_THREAD_MODE, reg); -} -  static void lpt_init_clock_gating(struct drm_i915_private *dev_priv)  {  	/* @@ -7230,45 +7169,10 @@ static void bdw_init_clock_gating(struct drm_i915_private *dev_priv)  static void hsw_init_clock_gating(struct drm_i915_private *dev_priv)  { -	/* L3 caching of data atomics doesn't work -- disable it. */ -	I915_WRITE(HSW_SCRATCH1, HSW_SCRATCH1_L3_DATA_ATOMICS_DISABLE); -	I915_WRITE(HSW_ROW_CHICKEN3, -		   _MASKED_BIT_ENABLE(HSW_ROW_CHICKEN3_L3_GLOBAL_ATOMICS_DISABLE)); -  	/* This is required by WaCatErrorRejectionIssue:hsw */  	I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, -			I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | -			GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); - -	/* WaVSRefCountFullforceMissDisable:hsw */ -	I915_WRITE(GEN7_FF_THREAD_MODE, -		   I915_READ(GEN7_FF_THREAD_MODE) & ~GEN7_FF_VS_REF_CNT_FFME); - -	/* WaDisable_RenderCache_OperationalFlush:hsw */ -	I915_WRITE(CACHE_MODE_0_GEN7, _MASKED_BIT_DISABLE(RC_OP_FLUSH_ENABLE)); - -	/* enable HiZ Raw Stall Optimization */ -	I915_WRITE(CACHE_MODE_0_GEN7, -		   _MASKED_BIT_DISABLE(HIZ_RAW_STALL_OPT_DISABLE)); - -	/* WaDisable4x2SubspanOptimization:hsw */ -	I915_WRITE(CACHE_MODE_1, -		   _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); - -	/* -	 * BSpec recommends 8x4 when MSAA is used, -	 * however in practice 16x4 seems fastest. -	 * -	 * Note that PS/WM thread counts depend on the WIZ hashing -	 * disable bit, which we don't touch here, but it's good -	 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM). -	 */ -	I915_WRITE(GEN7_GT_MODE, -		   _MASKED_FIELD(GEN6_WIZ_HASHING_MASK, GEN6_WIZ_HASHING_16x4)); - -	/* WaSampleCChickenBitEnable:hsw */ -	I915_WRITE(HALF_SLICE_CHICKEN3, -		   _MASKED_BIT_ENABLE(HSW_SAMPLE_C_PERFORMANCE)); +		   I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | +		   GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB);  	/* WaSwitchSolVfFArbitrationPriority:hsw */  	I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) | HSW_ECOCHK_ARB_PRIO_SOL); @@ -7282,32 +7186,11 @@ static void ivb_init_clock_gating(struct drm_i915_private *dev_priv)  	I915_WRITE(ILK_DSPCLK_GATE_D, ILK_VRHUNIT_CLOCK_GATE_DISABLE); -	/* WaDisableEarlyCull:ivb */ -	I915_WRITE(_3D_CHICKEN3, -		   _MASKED_BIT_ENABLE(_3D_CHICKEN_SF_DISABLE_OBJEND_CULL)); -  	/* WaDisableBackToBackFlipFix:ivb */  	I915_WRITE(IVB_CHICKEN3,  		   CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE |  		   CHICKEN3_DGMG_DONE_FIX_DISABLE); -	/* WaDisablePSDDualDispatchEnable:ivb */ -	if (IS_IVB_GT1(dev_priv)) -		I915_WRITE(GEN7_HALF_SLICE_CHICKEN1, -			   _MASKED_BIT_ENABLE(GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE)); - -	/* WaDisable_RenderCache_OperationalFlush:ivb */ -	I915_WRITE(CACHE_MODE_0_GEN7, _MASKED_BIT_DISABLE(RC_OP_FLUSH_ENABLE)); - -	/* Apply the WaDisableRHWOOptimizationForRenderHang:ivb workaround. */ -	I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, -		   GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); - -	/* WaApplyL3ControlAndL3ChickenMode:ivb */ -	I915_WRITE(GEN7_L3CNTLREG1, -			GEN7_WA_FOR_GEN7_L3_CONTROL); -	I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, -		   GEN7_WA_L3_CHICKEN_MODE);  	if (IS_IVB_GT1(dev_priv))  		I915_WRITE(GEN7_ROW_CHICKEN2,  			   _MASKED_BIT_ENABLE(DOP_CLOCK_GATING_DISABLE)); @@ -7319,10 +7202,6 @@ static void ivb_init_clock_gating(struct drm_i915_private *dev_priv)  			   _MASKED_BIT_ENABLE(DOP_CLOCK_GATING_DISABLE));  	} -	/* WaForceL3Serialization:ivb */ -	I915_WRITE(GEN7_L3SQCREG4, I915_READ(GEN7_L3SQCREG4) & -		   ~L3SQ_URB_READ_CAM_MATCH_DISABLE); -  	/*  	 * According to the spec, bit 13 (RCZUNIT) must be set on IVB.  	 * This implements the WaDisableRCZUnitClockGating:ivb workaround. @@ -7337,29 +7216,6 @@ static void ivb_init_clock_gating(struct drm_i915_private *dev_priv)  	g4x_disable_trickle_feed(dev_priv); -	gen7_setup_fixed_func_scheduler(dev_priv); - -	if (0) { /* causes HiZ corruption on ivb:gt1 */ -		/* enable HiZ Raw Stall Optimization */ -		I915_WRITE(CACHE_MODE_0_GEN7, -			   _MASKED_BIT_DISABLE(HIZ_RAW_STALL_OPT_DISABLE)); -	} - -	/* WaDisable4x2SubspanOptimization:ivb */ -	I915_WRITE(CACHE_MODE_1, -		   _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); - -	/* -	 * BSpec recommends 8x4 when MSAA is used, -	 * however in practice 16x4 seems fastest. -	 * -	 * Note that PS/WM thread counts depend on the WIZ hashing -	 * disable bit, which we don't touch here, but it's good -	 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM). -	 */ -	I915_WRITE(GEN7_GT_MODE, -		   _MASKED_FIELD(GEN6_WIZ_HASHING_MASK, GEN6_WIZ_HASHING_16x4)); -  	snpcr = I915_READ(GEN6_MBCUNIT_SNPCR);  	snpcr &= ~GEN6_MBC_SNPCR_MASK;  	snpcr |= GEN6_MBC_SNPCR_MED; @@ -7373,28 +7229,11 @@ static void ivb_init_clock_gating(struct drm_i915_private *dev_priv)  static void vlv_init_clock_gating(struct drm_i915_private *dev_priv)  { -	/* WaDisableEarlyCull:vlv */ -	I915_WRITE(_3D_CHICKEN3, -		   _MASKED_BIT_ENABLE(_3D_CHICKEN_SF_DISABLE_OBJEND_CULL)); -  	/* WaDisableBackToBackFlipFix:vlv */  	I915_WRITE(IVB_CHICKEN3,  		   CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE |  		   CHICKEN3_DGMG_DONE_FIX_DISABLE); -	/* WaPsdDispatchEnable:vlv */ -	/* WaDisablePSDDualDispatchEnable:vlv */ -	I915_WRITE(GEN7_HALF_SLICE_CHICKEN1, -		   _MASKED_BIT_ENABLE(GEN7_MAX_PS_THREAD_DEP | -				      GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE)); - -	/* WaDisable_RenderCache_OperationalFlush:vlv */ -	I915_WRITE(CACHE_MODE_0_GEN7, _MASKED_BIT_DISABLE(RC_OP_FLUSH_ENABLE)); - -	/* WaForceL3Serialization:vlv */ -	I915_WRITE(GEN7_L3SQCREG4, I915_READ(GEN7_L3SQCREG4) & -		   ~L3SQ_URB_READ_CAM_MATCH_DISABLE); -  	/* WaDisableDopClockGating:vlv */  	I915_WRITE(GEN7_ROW_CHICKEN2,  		   _MASKED_BIT_ENABLE(DOP_CLOCK_GATING_DISABLE)); @@ -7404,8 +7243,6 @@ static void vlv_init_clock_gating(struct drm_i915_private *dev_priv)  		   I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) |  		   GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); -	gen7_setup_fixed_func_scheduler(dev_priv); -  	/*  	 * According to the spec, bit 13 (RCZUNIT) must be set on IVB.  	 * This implements the WaDisableRCZUnitClockGating:vlv workaround. @@ -7420,30 +7257,6 @@ static void vlv_init_clock_gating(struct drm_i915_private *dev_priv)  		   I915_READ(GEN7_UCGCTL4) | GEN7_L3BANK2X_CLOCK_GATE_DISABLE);  	/* -	 * BSpec says this must be set, even though -	 * WaDisable4x2SubspanOptimization isn't listed for VLV. -	 */ -	I915_WRITE(CACHE_MODE_1, -		   _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); - -	/* -	 * BSpec recommends 8x4 when MSAA is used, -	 * however in practice 16x4 seems fastest. -	 * -	 * Note that PS/WM thread counts depend on the WIZ hashing -	 * disable bit, which we don't touch here, but it's good -	 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM). -	 */ -	I915_WRITE(GEN7_GT_MODE, -		   _MASKED_FIELD(GEN6_WIZ_HASHING_MASK, GEN6_WIZ_HASHING_16x4)); - -	/* -	 * WaIncreaseL3CreditsForVLVB0:vlv -	 * This is the hardware default actually. -	 */ -	I915_WRITE(GEN7_L3SQCREG1, VLV_B0_WA_L3SQCREG1_VALUE); - -	/*  	 * WaDisableVLVClockGating_VBIIssue:vlv  	 * Disable clock gating on th GCFG unit to prevent a delay  	 * in the reporting of vblank events. @@ -7495,13 +7308,6 @@ static void g4x_init_clock_gating(struct drm_i915_private *dev_priv)  		dspclk_gate |= DSSUNIT_CLOCK_GATE_DISABLE;  	I915_WRITE(DSPCLK_GATE_D, dspclk_gate); -	/* WaDisableRenderCachePipelinedFlush */ -	I915_WRITE(CACHE_MODE_0, -		   _MASKED_BIT_ENABLE(CM0_PIPELINED_RENDER_FLUSH_DISABLE)); - -	/* WaDisable_RenderCache_OperationalFlush:g4x */ -	I915_WRITE(CACHE_MODE_0, _MASKED_BIT_DISABLE(RC_OP_FLUSH_ENABLE)); -  	g4x_disable_trickle_feed(dev_priv);  } @@ -7517,11 +7323,6 @@ static void i965gm_init_clock_gating(struct drm_i915_private *dev_priv)  	intel_uncore_write(uncore,  			   MI_ARB_STATE,  			   _MASKED_BIT_ENABLE(MI_ARB_DISPLAY_TRICKLE_FEED_DISABLE)); - -	/* WaDisable_RenderCache_OperationalFlush:gen4 */ -	intel_uncore_write(uncore, -			   CACHE_MODE_0, -			   _MASKED_BIT_DISABLE(RC_OP_FLUSH_ENABLE));  }  static void i965g_init_clock_gating(struct drm_i915_private *dev_priv) @@ -7534,9 +7335,6 @@ static void i965g_init_clock_gating(struct drm_i915_private *dev_priv)  	I915_WRITE(RENCLK_GATE_D2, 0);  	I915_WRITE(MI_ARB_STATE,  		   _MASKED_BIT_ENABLE(MI_ARB_DISPLAY_TRICKLE_FEED_DISABLE)); - -	/* WaDisable_RenderCache_OperationalFlush:gen4 */ -	I915_WRITE(CACHE_MODE_0, _MASKED_BIT_DISABLE(RC_OP_FLUSH_ENABLE));  }  static void gen3_init_clock_gating(struct drm_i915_private *dev_priv) | 
