Merge tag 'drm-intel-gt-next-2022-06-29' of git://anongit.freedesktop.org/drm/drm...
[linux-block.git] / drivers / gpu / drm / i915 / intel_pm.c
index 3355486a0b2036151f62a8f2b9b94ac4b6907741..9b7e93ca1ff9edfd22843395b9bac301b877ec1f 100644 (file)
@@ -7634,10 +7634,9 @@ static void xehpsdv_init_clock_gating(struct drm_i915_private *dev_priv)
 
 static void dg2_init_clock_gating(struct drm_i915_private *i915)
 {
-       /* Wa_22010954014:dg2_g10 */
-       if (IS_DG2_G10(i915))
-               intel_uncore_rmw(&i915->uncore, XEHP_CLOCK_GATE_DIS, 0,
-                                SGSI_SIDECLK_DIS);
+       /* Wa_22010954014:dg2 */
+       intel_uncore_rmw(&i915->uncore, XEHP_CLOCK_GATE_DIS, 0,
+                        SGSI_SIDECLK_DIS);
 
        /*
         * Wa_14010733611:dg2_g10
@@ -7648,6 +7647,17 @@ static void dg2_init_clock_gating(struct drm_i915_private *i915)
                                 SGR_DIS | SGGI_DIS);
 }
 
+static void pvc_init_clock_gating(struct drm_i915_private *dev_priv)
+{
+       /* Wa_14012385139:pvc */
+       if (IS_PVC_BD_STEP(dev_priv, STEP_A0, STEP_B0))
+               intel_uncore_rmw(&dev_priv->uncore, XEHP_CLOCK_GATE_DIS, 0, SGR_DIS);
+
+       /* Wa_22010954014:pvc */
+       if (IS_PVC_BD_STEP(dev_priv, STEP_A0, STEP_B0))
+               intel_uncore_rmw(&dev_priv->uncore, XEHP_CLOCK_GATE_DIS, 0, SGSI_SIDECLK_DIS);
+}
+
 static void cnp_init_clock_gating(struct drm_i915_private *dev_priv)
 {
        if (!HAS_PCH_CNP(dev_priv))
@@ -8064,6 +8074,7 @@ static const struct drm_i915_clock_gating_funcs platform##_clock_gating_funcs =
        .init_clock_gating = platform##_init_clock_gating,              \
 }
 
+CG_FUNCS(pvc);
 CG_FUNCS(dg2);
 CG_FUNCS(xehpsdv);
 CG_FUNCS(adlp);
@@ -8102,7 +8113,9 @@ CG_FUNCS(nop);
  */
 void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv)
 {
-       if (IS_DG2(dev_priv))
+       if (IS_PONTEVECCHIO(dev_priv))
+               dev_priv->clock_gating_funcs = &pvc_clock_gating_funcs;
+       else if (IS_DG2(dev_priv))
                dev_priv->clock_gating_funcs = &dg2_clock_gating_funcs;
        else if (IS_XEHPSDV(dev_priv))
                dev_priv->clock_gating_funcs = &xehpsdv_clock_gating_funcs;