drm/i915: Make utility pin asserts more accurate
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 28 Mar 2023 16:49:38 +0000 (19:49 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 30 Mar 2023 11:48:51 +0000 (14:48 +0300)
Only the PWM output mode of the utility pin is incompatible
with DC6/LCPLL disable. Check for that specifically.

References: https://gitlab.freedesktop.org/drm/intel/-/issues/6609
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230328164938.8193-1-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_display_power.c
drivers/gpu/drm/i915/display/intel_display_power_well.c

index f860601..ff787bd 100644 (file)
@@ -1182,8 +1182,10 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv)
                                "CPU PWM2 enabled\n");
        I915_STATE_WARN(intel_de_read(dev_priv, BLC_PWM_PCH_CTL1) & BLM_PCH_PWM_ENABLE,
                        "PCH PWM1 enabled\n");
-       I915_STATE_WARN(intel_de_read(dev_priv, UTIL_PIN_CTL) & UTIL_PIN_ENABLE,
-                       "Utility pin enabled\n");
+       I915_STATE_WARN((intel_de_read(dev_priv, UTIL_PIN_CTL) &
+                        (UTIL_PIN_ENABLE | UTIL_PIN_MODE_MASK)) ==
+                       (UTIL_PIN_ENABLE | UTIL_PIN_MODE_PWM),
+                       "Utility pin enabled in PWM mode\n");
        I915_STATE_WARN(intel_de_read(dev_priv, PCH_GTC_CTL) & PCH_GTC_ENABLE,
                        "PCH GTC enabled\n");
 
index 1676df1..c694f28 100644 (file)
@@ -818,8 +818,10 @@ void gen9_enable_dc5(struct drm_i915_private *dev_priv)
 static void assert_can_enable_dc6(struct drm_i915_private *dev_priv)
 {
        drm_WARN_ONCE(&dev_priv->drm,
-                     intel_de_read(dev_priv, UTIL_PIN_CTL) & UTIL_PIN_ENABLE,
-                     "Backlight is not disabled.\n");
+                     (intel_de_read(dev_priv, UTIL_PIN_CTL) &
+                      (UTIL_PIN_ENABLE | UTIL_PIN_MODE_MASK)) ==
+                     (UTIL_PIN_ENABLE | UTIL_PIN_MODE_PWM),
+                     "Utility pin enabled in PWM mode\n");
        drm_WARN_ONCE(&dev_priv->drm,
                      (intel_de_read(dev_priv, DC_STATE_EN) &
                       DC_STATE_EN_UPTO_DC6),