drm/i915: Disable PSR around cdclk changes
AUX logic is often clocked from cdclk. Disable PSR to make sure there are no hw initiated AUX transactions in flight while we change the cdclk frequency. Cc: Mika Kahola <mika.kahola@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210608085415.515342-2-gwan-gyeong.mun@intel.com
This commit is contained in:
parent
234b40282e
commit
17c1a4b7ac
|
@ -28,6 +28,7 @@
|
|||
#include "intel_cdclk.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_psr.h"
|
||||
#include "intel_sideband.h"
|
||||
|
||||
/**
|
||||
|
@ -1908,6 +1909,12 @@ static void intel_set_cdclk(struct drm_i915_private *dev_priv,
|
|||
|
||||
intel_dump_cdclk_config(cdclk_config, "Changing CDCLK to");
|
||||
|
||||
for_each_intel_encoder_with_psr(&dev_priv->drm, encoder) {
|
||||
struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
|
||||
|
||||
intel_psr_pause(intel_dp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Lock aux/gmbus while we change cdclk in case those
|
||||
* functions use cdclk. Not all platforms/ports do,
|
||||
|
@ -1930,6 +1937,12 @@ static void intel_set_cdclk(struct drm_i915_private *dev_priv,
|
|||
}
|
||||
mutex_unlock(&dev_priv->gmbus_mutex);
|
||||
|
||||
for_each_intel_encoder_with_psr(&dev_priv->drm, encoder) {
|
||||
struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
|
||||
|
||||
intel_psr_resume(intel_dp);
|
||||
}
|
||||
|
||||
if (drm_WARN(&dev_priv->drm,
|
||||
intel_cdclk_changed(&dev_priv->cdclk.hw, cdclk_config),
|
||||
"cdclk state doesn't match!\n")) {
|
||||
|
|
Loading…
Reference in New Issue