[PATCH 11/11] drm/i915/display: Remove sink ALPM configuration away from PSR code
Jouni Högander
jouni.hogander at intel.com
Fri Feb 14 14:01:15 UTC 2025
Configuring ALPM on sink side is not anymore PSR specific as LOBF is using
it as well. Move configuring sink ALPM into ddi_dp code.
Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
---
drivers/gpu/drm/i915/display/intel_ddi.c | 20 ++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_psr.c | 23 -----------------------
2 files changed, 20 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 5433279227e1..e2d71cdafc2d 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -35,6 +35,7 @@
#include "i915_drv.h"
#include "i915_reg.h"
#include "icl_dsi.h"
+#include "intel_alpm.h"
#include "intel_audio.h"
#include "intel_audio_regs.h"
#include "intel_backlight.h"
@@ -2936,6 +2937,23 @@ static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state,
}
}
+static void intel_ddi_set_alpm_dp(struct intel_encoder *encoder,
+ const struct intel_crtc_state *crtc_state)
+{
+ struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+ u8 val;
+
+ if (!intel_alpm_aux_wake_supported(intel_dp))
+ return;
+
+ val = DP_ALPM_ENABLE | DP_ALPM_LOCK_ERROR_IRQ_HPD_ENABLE;
+
+ /* Use aux wake for PSR1/PSR2 and aux less for PR and LOBF */
+ val |= !crtc_state->has_panel_replay ? 0 : DP_ALPM_MODE_AUX_LESS;
+
+ drm_dp_dpcd_writeb(&intel_dp->aux, DP_RECEIVER_ALPM_CONFIG, val);
+}
+
static void intel_ddi_pre_enable_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
@@ -2950,6 +2968,8 @@ static void intel_ddi_pre_enable_dp(struct intel_atomic_state *state,
/* Panel replay has to be enabled in sink dpcd before link training. */
intel_psr_panel_replay_enable_sink(enc_to_intel_dp(encoder));
+ intel_ddi_set_alpm_dp(encoder, crtc_state);
+
if (DISPLAY_VER(display) >= 14)
mtl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state);
else if (DISPLAY_VER(display) >= 12)
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 5af85dd46a07..4d1e9dd3b889 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -794,32 +794,9 @@ static void _psr_enable_sink(struct intel_dp *intel_dp,
drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_EN_CFG, val);
}
-static void intel_psr_enable_sink_alpm(struct intel_dp *intel_dp,
- const struct intel_crtc_state *crtc_state)
-{
- u8 val;
-
- /*
- * eDP Panel Replay uses always ALPM
- * PSR2 uses ALPM but PSR1 doesn't
- */
- if (!intel_dp_is_edp(intel_dp) || (!crtc_state->has_panel_replay &&
- !crtc_state->has_sel_update))
- return;
-
- val = DP_ALPM_ENABLE | DP_ALPM_LOCK_ERROR_IRQ_HPD_ENABLE;
-
- if (crtc_state->has_panel_replay)
- val |= DP_ALPM_MODE_AUX_LESS;
-
- drm_dp_dpcd_writeb(&intel_dp->aux, DP_RECEIVER_ALPM_CONFIG, val);
-}
-
static void intel_psr_enable_sink(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state)
{
- intel_psr_enable_sink_alpm(intel_dp, crtc_state);
-
crtc_state->has_panel_replay ?
_panel_replay_enable_sink(intel_dp, crtc_state) :
_psr_enable_sink(intel_dp, crtc_state);
--
2.43.0
More information about the Intel-gfx-trybot
mailing list