Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915: Make utility pin asserts more accurate

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>

+8 -4
+4 -2
drivers/gpu/drm/i915/display/intel_display_power.c
··· 1182 1182 "CPU PWM2 enabled\n"); 1183 1183 I915_STATE_WARN(intel_de_read(dev_priv, BLC_PWM_PCH_CTL1) & BLM_PCH_PWM_ENABLE, 1184 1184 "PCH PWM1 enabled\n"); 1185 - I915_STATE_WARN(intel_de_read(dev_priv, UTIL_PIN_CTL) & UTIL_PIN_ENABLE, 1186 - "Utility pin enabled\n"); 1185 + I915_STATE_WARN((intel_de_read(dev_priv, UTIL_PIN_CTL) & 1186 + (UTIL_PIN_ENABLE | UTIL_PIN_MODE_MASK)) == 1187 + (UTIL_PIN_ENABLE | UTIL_PIN_MODE_PWM), 1188 + "Utility pin enabled in PWM mode\n"); 1187 1189 I915_STATE_WARN(intel_de_read(dev_priv, PCH_GTC_CTL) & PCH_GTC_ENABLE, 1188 1190 "PCH GTC enabled\n"); 1189 1191
+4 -2
drivers/gpu/drm/i915/display/intel_display_power_well.c
··· 818 818 static void assert_can_enable_dc6(struct drm_i915_private *dev_priv) 819 819 { 820 820 drm_WARN_ONCE(&dev_priv->drm, 821 - intel_de_read(dev_priv, UTIL_PIN_CTL) & UTIL_PIN_ENABLE, 822 - "Backlight is not disabled.\n"); 821 + (intel_de_read(dev_priv, UTIL_PIN_CTL) & 822 + (UTIL_PIN_ENABLE | UTIL_PIN_MODE_MASK)) == 823 + (UTIL_PIN_ENABLE | UTIL_PIN_MODE_PWM), 824 + "Utility pin enabled in PWM mode\n"); 823 825 drm_WARN_ONCE(&dev_priv->drm, 824 826 (intel_de_read(dev_priv, DC_STATE_EN) & 825 827 DC_STATE_EN_UPTO_DC6),