Add a separate alpm_is_possible() which will check for alpm
capability from dpcd info.

v2: Drop DISPLAY_VER() check as intel_alpm_source_supported
already checking and populating dpcd info. [Jouni]

Cc: Jouni Högander <[email protected]>
Signed-off-by: Animesh Manna <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 13 ++++++++++---
 drivers/gpu/drm/i915/display/intel_alpm.h |  1 +
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c 
b/drivers/gpu/drm/i915/display/intel_alpm.c
index 06c1a59aa2c5..29a93a252fe9 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -69,6 +69,13 @@ void intel_alpm_init(struct intel_dp *intel_dp)
        mutex_init(&intel_dp->alpm.lock);
 }
 
+bool intel_alpm_is_possible(struct intel_dp *intel_dp)
+{
+       return (intel_dp->alpm_dpcd ||
+               intel_dp->lttpr_common_caps[DP_LTTPR_ALPM_CAPABILITIES -
+                                           
DP_LT_TUNABLE_PHY_REPEATER_FIELD_DATA_STRUCTURE_REV]);
+}
+
 static int get_silence_period_symbols(const struct intel_crtc_state 
*crtc_state)
 {
        return SILENCE_PERIOD_TIME * 
intel_dp_link_symbol_clock(crtc_state->port_clock) /
@@ -546,7 +553,7 @@ void intel_alpm_lobf_compute_config(struct intel_dp 
*intel_dp,
        if (intel_dp->alpm.sink_alpm_error)
                return;
 
-       if (!intel_dp_is_edp(intel_dp))
+       if (!intel_alpm_is_possible(intel_dp))
                return;
 
        if (DISPLAY_VER(display) < 20)
@@ -832,7 +839,7 @@ void intel_alpm_lobf_disable(const struct intel_crtc_state 
*new_crtc_state)
 
                intel_dp = enc_to_intel_dp(encoder);
 
-               if (!intel_dp_is_edp(intel_dp))
+               if (!intel_alpm_is_possible(intel_dp))
                        continue;
 
                mutex_lock(&intel_dp->alpm.lock);
@@ -873,7 +880,7 @@ void intel_alpm_lobf_enable(const struct intel_crtc_state 
*new_crtc_state)
 
                intel_dp = enc_to_intel_dp(encoder);
 
-               if (intel_dp_is_edp(intel_dp)) {
+               if (intel_alpm_is_possible(intel_dp)) {
                        intel_alpm_enable_sink(intel_dp, new_crtc_state);
                        intel_alpm_configure(intel_dp, new_crtc_state);
                }
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h 
b/drivers/gpu/drm/i915/display/intel_alpm.h
index 9a02fa386ee3..ea90eba76ca7 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -18,6 +18,7 @@ struct intel_crtc;
 bool intel_alpm_source_supported(struct intel_connector *connector);
 bool intel_alpm_init_dpcd(struct intel_dp *intel_dp);
 void intel_alpm_init(struct intel_dp *intel_dp);
+bool intel_alpm_is_possible(struct intel_dp *intel_dp);
 bool intel_alpm_compute_params(struct intel_dp *intel_dp,
                               struct intel_crtc_state *crtc_state);
 void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
-- 
2.29.0

Reply via email to