/* Display WA #1135: BXT:ALL GLK:ALL */
if ((IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) &&
- dev_priv->ipc_enabled)
+ skl_watermark_ipc_enabled(dev_priv))
linetime_wm /= 2;
return min(linetime_wm, 0x1ff);
intel_hpd_init(i915);
intel_hpd_poll_disable(i915);
- intel_init_ipc(i915);
+ skl_watermark_ipc_init(i915);
return 0;
}
if (!ret)
ret = __intel_display_resume(i915, state, &ctx);
- intel_enable_ipc(i915);
+ skl_watermark_ipc_update(i915);
drm_modeset_drop_locks(&ctx);
drm_modeset_acquire_fini(&ctx);
struct drm_i915_private *dev_priv = m->private;
seq_printf(m, "Isochronous Priority Control: %s\n",
- str_yes_no(dev_priv->ipc_enabled));
+ str_yes_no(skl_watermark_ipc_enabled(dev_priv)));
return 0;
}
return ret;
with_intel_runtime_pm(&dev_priv->runtime_pm, wakeref) {
- if (!dev_priv->ipc_enabled && enable)
+ if (!skl_watermark_ipc_enabled(dev_priv) && enable)
drm_info(&dev_priv->drm,
"Enabling IPC: WM will be proper only after next commit\n");
dev_priv->ipc_enabled = enable;
- intel_enable_ipc(dev_priv);
+ skl_watermark_ipc_update(dev_priv);
}
return len;
* WaIncreaseLatencyIPCEnabled: kbl,cfl
* Display WA #1141: kbl,cfl
*/
- if ((IS_KABYLAKE(i915) ||
- IS_COFFEELAKE(i915) ||
- IS_COMETLAKE(i915)) &&
- i915->ipc_enabled)
+ if ((IS_KABYLAKE(i915) || IS_COFFEELAKE(i915) || IS_COMETLAKE(i915)) &&
+ skl_watermark_ipc_enabled(i915))
latency += 4;
if (skl_needs_memory_bw_wa(i915) && wp->x_tiled)
u16 wm0_blocks, trans_offset, blocks;
/* Transition WM don't make any sense if ipc is disabled */
- if (!i915->ipc_enabled)
+ if (!skl_watermark_ipc_enabled(i915))
return;
/*
kfree(hw);
}
-void intel_enable_ipc(struct drm_i915_private *i915)
+bool skl_watermark_ipc_enabled(struct drm_i915_private *i915)
+{
+ return i915->ipc_enabled;
+}
+
+void skl_watermark_ipc_update(struct drm_i915_private *i915)
{
u32 val;
val = intel_uncore_read(&i915->uncore, DISP_ARB_CTL2);
- if (i915->ipc_enabled)
+ if (skl_watermark_ipc_enabled(i915))
val |= DISP_IPC_ENABLE;
else
val &= ~DISP_IPC_ENABLE;
intel_uncore_write(&i915->uncore, DISP_ARB_CTL2, val);
}
-static bool intel_can_enable_ipc(struct drm_i915_private *i915)
+static bool skl_watermark_ipc_can_enable(struct drm_i915_private *i915)
{
/* Display WA #0477 WaDisableIPC: skl */
if (IS_SKYLAKE(i915))
return true;
}
-void intel_init_ipc(struct drm_i915_private *i915)
+void skl_watermark_ipc_init(struct drm_i915_private *i915)
{
if (!HAS_IPC(i915))
return;
- i915->ipc_enabled = intel_can_enable_ipc(i915);
+ i915->ipc_enabled = skl_watermark_ipc_can_enable(i915);
- intel_enable_ipc(i915);
+ skl_watermark_ipc_update(i915);
}
static void
void intel_wm_state_verify(struct intel_crtc *crtc,
struct intel_crtc_state *new_crtc_state);
-void intel_enable_ipc(struct drm_i915_private *i915);
-void intel_init_ipc(struct drm_i915_private *i915);
+void skl_watermark_ipc_init(struct drm_i915_private *i915);
+void skl_watermark_ipc_update(struct drm_i915_private *i915);
+bool skl_watermark_ipc_enabled(struct drm_i915_private *i915);
void skl_wm_init(struct drm_i915_private *i915);
intel_hpd_poll_disable(dev_priv);
}
- intel_enable_ipc(dev_priv);
+ skl_watermark_ipc_update(dev_priv);
enable_rpm_wakeref_asserts(rpm);