On Tue, 2026-09-15 at 23:34 +0530, Animesh Manna wrote:
> Initialize ALPM for DP2.1 and separate out ALPM mutex-init
> from alpm-init.
> 
> v2: Separate out mutex-init. [Jani]
> v3: Refactor further to avoid DISPLAY_VER check in multiple places.
> [Jani]
> v4: Cosmetic changes. [Suraj]
> v5: Reset alpm_dpcd and simplify source-supported check.
> v6: Drop display-version check for eDP for backward compatible.
> 
> Cc: Jouni Högander <[email protected]>
> Reviewed-by: Suraj Kandpal <[email protected]>
> Signed-off-by: Animesh Manna <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_alpm.c | 9 +++++++++
>  drivers/gpu/drm/i915/display/intel_alpm.h | 1 +
>  drivers/gpu/drm/i915/display/intel_dp.c   | 9 +++++++--
>  3 files changed, 17 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
> b/drivers/gpu/drm/i915/display/intel_alpm.c
> index a6743fe62d48..4801fc6bade2 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> @@ -43,6 +43,15 @@ bool intel_alpm_is_alpm_aux_less(struct intel_dp
> *intel_dp,
>               (crtc_state->has_lobf &&
> intel_alpm_aux_less_wake_supported(intel_dp));
>  }
>  
> +bool intel_alpm_source_supported(struct intel_connector *connector)
> +{
> +     struct intel_display *display = to_intel_display(connector);
> +
> +     return (connector->base.connector_type ==
> DRM_MODE_CONNECTOR_DisplayPort &&
> +             DISPLAY_VER(display) >= 35) ||
> +             connector->base.connector_type ==
> DRM_MODE_CONNECTOR_eDP;
> +}
> +
>  bool intel_alpm_init_dpcd(struct intel_dp *intel_dp)
>  {
>       u8 dpcd;
> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h
> b/drivers/gpu/drm/i915/display/intel_alpm.h
> index 56c3e1482e37..9a02fa386ee3 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.h
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.h
> @@ -15,6 +15,7 @@ struct intel_connector;
>  struct intel_atomic_state;
>  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_compute_params(struct intel_dp *intel_dp,
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 650c8b39270b..b4742bd33cb4 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -6354,6 +6354,7 @@ intel_dp_detect(struct drm_connector
> *_connector,
>               connector->dp.panel_replay_caps.su_support = false;
>               connector->dp.panel_replay_caps.dsc_support =
>                       INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED;
> +             intel_dp->alpm_dpcd = 0;
>  
>               intel_dp_mst_disconnect(intel_dp);
>  
> @@ -6376,6 +6377,9 @@ intel_dp_detect(struct drm_connector
> *_connector,
>       if (ret == 1)
>               connector->base.epoch_counter++;
>  
> +     if (intel_alpm_source_supported(connector))
> +             intel_alpm_init_dpcd(intel_dp);

This is done already for eDP. You could make it conditional to
!intel_dp_is edp.

I also found it a bit confusing why alpm_init_dpcd is conditional to
intel_alpm_source_supported in case of DP but not in case of eDP. How
about moving intel_alpm_source_supported in intel_alpm_init/_dpcd?

BR,
Jouni Högander

> +
>       if (!intel_dp_is_edp(intel_dp))
>               intel_psr_init_dpcd(intel_dp, connector);
>  
> @@ -7019,8 +7023,6 @@ static bool intel_edp_init_connector(struct
> intel_dp *intel_dp,
>        */
>       intel_hpd_enable_detection(encoder);
>  
> -     intel_alpm_init(intel_dp);
> -
>       /* Cache DPCD and EDID for edp. */
>       has_dpcd = intel_edp_init_dpcd(intel_dp, connector);
>  
> @@ -7235,6 +7237,9 @@ intel_dp_init_connector(struct
> intel_digital_port *dig_port,
>  
>       intel_psr_init(intel_dp);
>  
> +     if (intel_alpm_source_supported(connector))
> +             intel_alpm_init(intel_dp);
> +
>       return true;
>  
>  fail:

Reply via email to