aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_pm.c
diff options
context:
space:
mode:
authorRodrigo Vivi <rodrigo.vivi@intel.com>2017-10-03 02:36:50 -0400
committerRodrigo Vivi <rodrigo.vivi@intel.com>2017-10-03 13:53:48 -0400
commit4d6ef0da415124ebce578b1326f4e511e35d95f2 (patch)
treeb06ef070a62341633a7a008a9e3201f9f27b97ae /drivers/gpu/drm/i915/intel_pm.c
parente19c1eb885ac4186e64c7e484424124f3145318e (diff)
drm/i915/skl: Fix has_ipc on skl and document WaDisableIPC.
According to Spec for SKL+: "Isochronous Priority Control. If enabled, Display sends demoted requests once the transition watermark is reached. If transition watermark is not enabled, Display sends demoted requests when the display buffer is full." The commit 'e57f1c02155f ("drm/i915/gen9+: Add has_ipc flag in device info structure")' introduced that as gen9+ but missing many SKL Skus. I believe the reason for that is Spec also mentions workarounds for SKL-ALL: "IPC (Isoch Priority Control) may cause underflows WA: Do not enable IPC in register ARB_CTL2" It seems lame to add the feature and forever disable it, but it will avoid a mistake of enabling it when we are reorganizing the feature definitions on i915_pci.c later. It will also allow us to probably extend that workaround for other platforms. Cc: Mahesh Kumar <mahesh1.kumar@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Reviewed-by: Mahesh Kumar <mahesh1.kumar@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20171003063652.17248-1-rodrigo.vivi@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index c66af09e27a7..171b21f6c4ad 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5827,6 +5827,12 @@ void intel_enable_ipc(struct drm_i915_private *dev_priv)
5827{ 5827{
5828 u32 val; 5828 u32 val;
5829 5829
5830 /* Display WA #0477 WaDisableIPC: skl */
5831 if (IS_SKYLAKE(dev_priv)) {
5832 dev_priv->ipc_enabled = false;
5833 return;
5834 }
5835
5830 val = I915_READ(DISP_ARB_CTL2); 5836 val = I915_READ(DISP_ARB_CTL2);
5831 5837
5832 if (dev_priv->ipc_enabled) 5838 if (dev_priv->ipc_enabled)