aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_pm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 4baab858e442..a29e6d512771 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3567,6 +3567,23 @@ bool ilk_disable_lp_wm(struct drm_device *dev)
3567 return _ilk_disable_lp_wm(dev_priv, WM_DIRTY_LP_ALL); 3567 return _ilk_disable_lp_wm(dev_priv, WM_DIRTY_LP_ALL);
3568} 3568}
3569 3569
3570static u8 intel_enabled_dbuf_slices_num(struct drm_i915_private *dev_priv)
3571{
3572 u8 enabled_slices;
3573
3574 /* Slice 1 will always be enabled */
3575 enabled_slices = 1;
3576
3577 /* Gen prior to GEN11 have only one DBuf slice */
3578 if (INTEL_GEN(dev_priv) < 11)
3579 return enabled_slices;
3580
3581 if (I915_READ(DBUF_CTL_S2) & DBUF_POWER_STATE)
3582 enabled_slices++;
3583
3584 return enabled_slices;
3585}
3586
3570/* 3587/*
3571 * FIXME: We still don't have the proper code detect if we need to apply the WA, 3588 * FIXME: We still don't have the proper code detect if we need to apply the WA,
3572 * so assume we'll always need it in order to avoid underruns. 3589 * so assume we'll always need it in order to avoid underruns.
@@ -3870,6 +3887,8 @@ void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
3870 3887
3871 memset(ddb, 0, sizeof(*ddb)); 3888 memset(ddb, 0, sizeof(*ddb));
3872 3889
3890 ddb->enabled_slices = intel_enabled_dbuf_slices_num(dev_priv);
3891
3873 for_each_intel_crtc(&dev_priv->drm, crtc) { 3892 for_each_intel_crtc(&dev_priv->drm, crtc) {
3874 enum intel_display_power_domain power_domain; 3893 enum intel_display_power_domain power_domain;
3875 enum plane_id plane_id; 3894 enum plane_id plane_id;
@@ -5088,6 +5107,7 @@ skl_copy_ddb_for_pipe(struct skl_ddb_values *dst,
5088 sizeof(dst->ddb.uv_plane[pipe])); 5107 sizeof(dst->ddb.uv_plane[pipe]));
5089 memcpy(dst->ddb.plane[pipe], src->ddb.plane[pipe], 5108 memcpy(dst->ddb.plane[pipe], src->ddb.plane[pipe],
5090 sizeof(dst->ddb.plane[pipe])); 5109 sizeof(dst->ddb.plane[pipe]));
5110 dst->ddb.enabled_slices = src->ddb.enabled_slices;
5091} 5111}
5092 5112
5093static void 5113static void