Skip to content

Commit 17c1a4b

Browse files
vsyrjalazehortigoza
authored andcommitted
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 <[email protected]> Signed-off-by: Ville Syrjälä <[email protected]> Signed-off-by: Gwan-gyeong Mun <[email protected]> Reviewed-by: Mika Kahola <[email protected]> Signed-off-by: José Roberto de Souza <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 234b402 commit 17c1a4b

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

drivers/gpu/drm/i915/display/intel_cdclk.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "intel_cdclk.h"
2929
#include "intel_de.h"
3030
#include "intel_display_types.h"
31+
#include "intel_psr.h"
3132
#include "intel_sideband.h"
3233

3334
/**
@@ -1908,6 +1909,12 @@ static void intel_set_cdclk(struct drm_i915_private *dev_priv,
19081909

19091910
intel_dump_cdclk_config(cdclk_config, "Changing CDCLK to");
19101911

1912+
for_each_intel_encoder_with_psr(&dev_priv->drm, encoder) {
1913+
struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
1914+
1915+
intel_psr_pause(intel_dp);
1916+
}
1917+
19111918
/*
19121919
* Lock aux/gmbus while we change cdclk in case those
19131920
* functions use cdclk. Not all platforms/ports do,
@@ -1930,6 +1937,12 @@ static void intel_set_cdclk(struct drm_i915_private *dev_priv,
19301937
}
19311938
mutex_unlock(&dev_priv->gmbus_mutex);
19321939

1940+
for_each_intel_encoder_with_psr(&dev_priv->drm, encoder) {
1941+
struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
1942+
1943+
intel_psr_resume(intel_dp);
1944+
}
1945+
19331946
if (drm_WARN(&dev_priv->drm,
19341947
intel_cdclk_changed(&dev_priv->cdclk.hw, cdclk_config),
19351948
"cdclk state doesn't match!\n")) {

0 commit comments

Comments
 (0)