diff options
author | Dave Airlie <airlied@redhat.com> | 2012-02-22 03:02:17 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-02-22 03:02:17 -0500 |
commit | bb757a7e251f73ce6626689f8be4bb8ba86933cd (patch) | |
tree | 17cc7b2858c4d8ddaf6acd94ab45b033f450f4dd /drivers/gpu/drm/i915/intel_display.c | |
parent | 53ef299f3900bc1deb163b94d4f1cac4f3346152 (diff) | |
parent | 1c8ecf80fdee4e7b23a9e7da7ff9bd59ba2dcf96 (diff) |
Merge branch 'drm-intel-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/drm-intel into drm-fixes
* 'drm-intel-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/drm-intel:
drm/i915: do not enable RC6p on Sandy Bridge
drm/i915: gen7: Disable the RHWO optimization as it can cause GPU hangs.
drm/i915: gen7: work around a system hang on IVB
drm/i915: gen7: Implement an L3 caching workaround.
drm/i915: gen7: implement rczunit workaround
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 00fbff5ddd81..f425b23e3803 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -8184,8 +8184,8 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv) | |||
8184 | I915_WRITE(GEN6_RC6pp_THRESHOLD, 64000); /* unused */ | 8184 | I915_WRITE(GEN6_RC6pp_THRESHOLD, 64000); /* unused */ |
8185 | 8185 | ||
8186 | if (intel_enable_rc6(dev_priv->dev)) | 8186 | if (intel_enable_rc6(dev_priv->dev)) |
8187 | rc6_mask = GEN6_RC_CTL_RC6p_ENABLE | | 8187 | rc6_mask = GEN6_RC_CTL_RC6_ENABLE | |
8188 | GEN6_RC_CTL_RC6_ENABLE; | 8188 | (IS_GEN7(dev_priv->dev)) ? GEN6_RC_CTL_RC6p_ENABLE : 0; |
8189 | 8189 | ||
8190 | I915_WRITE(GEN6_RC_CONTROL, | 8190 | I915_WRITE(GEN6_RC_CONTROL, |
8191 | rc6_mask | | 8191 | rc6_mask | |
@@ -8463,12 +8463,32 @@ static void ivybridge_init_clock_gating(struct drm_device *dev) | |||
8463 | I915_WRITE(WM2_LP_ILK, 0); | 8463 | I915_WRITE(WM2_LP_ILK, 0); |
8464 | I915_WRITE(WM1_LP_ILK, 0); | 8464 | I915_WRITE(WM1_LP_ILK, 0); |
8465 | 8465 | ||
8466 | /* According to the spec, bit 13 (RCZUNIT) must be set on IVB. | ||
8467 | * This implements the WaDisableRCZUnitClockGating workaround. | ||
8468 | */ | ||
8469 | I915_WRITE(GEN6_UCGCTL2, GEN6_RCZUNIT_CLOCK_GATE_DISABLE); | ||
8470 | |||
8466 | I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE); | 8471 | I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE); |
8467 | 8472 | ||
8468 | I915_WRITE(IVB_CHICKEN3, | 8473 | I915_WRITE(IVB_CHICKEN3, |
8469 | CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE | | 8474 | CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE | |
8470 | CHICKEN3_DGMG_DONE_FIX_DISABLE); | 8475 | CHICKEN3_DGMG_DONE_FIX_DISABLE); |
8471 | 8476 | ||
8477 | /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */ | ||
8478 | I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, | ||
8479 | GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); | ||
8480 | |||
8481 | /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */ | ||
8482 | I915_WRITE(GEN7_L3CNTLREG1, | ||
8483 | GEN7_WA_FOR_GEN7_L3_CONTROL); | ||
8484 | I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, | ||
8485 | GEN7_WA_L3_CHICKEN_MODE); | ||
8486 | |||
8487 | /* This is required by WaCatErrorRejectionIssue */ | ||
8488 | I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, | ||
8489 | I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | | ||
8490 | GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); | ||
8491 | |||
8472 | for_each_pipe(pipe) { | 8492 | for_each_pipe(pipe) { |
8473 | I915_WRITE(DSPCNTR(pipe), | 8493 | I915_WRITE(DSPCNTR(pipe), |
8474 | I915_READ(DSPCNTR(pipe)) | | 8494 | I915_READ(DSPCNTR(pipe)) | |