> -----Original Message-----
> From: Murthy, Arun R <[email protected]>
> Sent: Wednesday, March 4, 2026 9:36 AM
> To: [email protected]; [email protected]
> Cc: Manna, Animesh <[email protected]>; Nautiyal, Ankit K
> <[email protected]>; Nikula, Jani <[email protected]>;
> Hogander, Jouni <[email protected]>; Murthy, Arun R
> <[email protected]>
> Subject: [PATCHv4] drm/i915/dp: Read ALPM caps after DPCD init
>
> For eDP read the ALPM DPCD caps after DPCD initalization and just before
> the PSR init.
>
> v2: Move intel_alpm_init to intel_edp_init_dpcd (Jouni)
> v3: Add Fixes with commit-id (Jouni)
> v4: Separated the alpm dpcd read caps from alpm_init and moved to
> intel_edp_init_dpcd.
>
> Fixes: 15438b325987 ("drm/i915/alpm: Add compute config for lobf")
> Signed-off-by: Arun R Murthy <[email protected]>
> ---
> drivers/gpu/drm/i915/display/intel_alpm.c | 6 ------
> drivers/gpu/drm/i915/display/intel_dp.c | 9 +++++++++
> 2 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
> b/drivers/gpu/drm/i915/display/intel_alpm.c
> index b3334bc4d0f9..a7350ce8e716 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> @@ -44,12 +44,6 @@ bool intel_alpm_is_alpm_aux_less(struct intel_dp
> *intel_dp,
>
> void intel_alpm_init(struct intel_dp *intel_dp) {
> - u8 dpcd;
> -
> - if (drm_dp_dpcd_readb(&intel_dp->aux, DP_RECEIVER_ALPM_CAP,
> &dpcd) < 0)
> - return;
> -
> - intel_dp->alpm_dpcd = dpcd;
> mutex_init(&intel_dp->alpm.lock);
> }
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 025e906b63a9..e781d4d0dd1b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -4709,6 +4709,7 @@ static bool
> intel_edp_init_dpcd(struct intel_dp *intel_dp, struct intel_connector
> *connector) {
> struct intel_display *display = to_intel_display(intel_dp);
> + int ret;
>
> /* this function is meant to be called only once */
> drm_WARN_ON(display->drm, intel_dp->dpcd[DP_DPCD_REV] != 0);
> @@ -4748,6 +4749,14 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp,
> struct intel_connector *connector
> */
> intel_dp_init_source_oui(intel_dp);
>
> + /* Read the ALPM DPCD caps */
> + if (intel_dp->edp_dpcd[0] >= DP_EDP_14) {
> + ret = drm_dp_dpcd_readb(&intel_dp->aux,
> DP_RECEIVER_ALPM_CAP,
> + &intel_dp->alpm_dpcd);
> + if (ret < 0)
> + return false;
> + }
LGTM.
Reviewed-by: Animesh Manna <[email protected]>
> +
> /*
> * This has to be called after intel_dp->edp_dpcd is filled, PSR checks
> * for SET_POWER_CAPABLE bit in intel_dp->edp_dpcd[1]
> --
> 2.25.1