[PATCH v2 3/4] drm/i915/alpm: Calculate ALPM Entry check
Murthy, Arun R
arun.r.murthy at intel.com
Mon Jan 29 02:08:21 UTC 2024
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Jouni
> Högander
> Sent: Friday, January 5, 2024 7:45 PM
> To: intel-gfx at lists.freedesktop.org
> Subject: [PATCH v2 3/4] drm/i915/alpm: Calculate ALPM Entry check
>
> ALPM Entry Check represents the number of lines needed to put the main link
> to sleep and keep it in the sleep state before it can be taken out of the SLEEP
> state (eDP requires the main link to be in the SLEEP state for a minimum of
> 5us).
>
> Bspec: 71477
>
> Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
> ---
> .../drm/i915/display/intel_display_types.h | 3 ++
> drivers/gpu/drm/i915/display/intel_psr.c | 28 +++++++++++++++++++
> 2 files changed, 31 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 889a8b34b7ac..7eddef859ff4 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1680,6 +1680,9 @@ struct intel_pps { struct alpm_parameters {
> u8 io_wake_lines;
> u8 fast_wake_lines;
> +
> + /* LNL and beyond */
> + u8 check_entry_lines;
> };
>
> struct intel_psr {
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 1709ebb31215..7fbd18f21c3b 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -1099,6 +1099,28 @@ static bool
> _compute_psr2_sdp_prior_scanline_indication(struct intel_dp *intel_d
> return true;
> }
>
> +static bool _lnl_compute_alpm_params(struct intel_dp *intel_dp,
> + struct intel_crtc_state *crtc_state) {
> + struct drm_i915_private *i915 = dp_to_i915(intel_dp);
> + struct alpm_parameters *alpm_params = &intel_dp->psr.alpm_params;
> + int check_entry_lines;
> +
> + /* ALPM Entry Check = 2 + CEILING( 5us /tline ) */
> + check_entry_lines = 2 +
> + intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode, 5);
> +
> + if (check_entry_lines > 15)
> + return false;
> +
> + if (i915->display.params.psr_safest_params)
> + check_entry_lines = 15;
> +
> + alpm_params->check_entry_lines = check_entry_lines;
> +
> + return true;
> +}
> +
> static bool _compute_alpm_params(struct intel_dp *intel_dp,
> struct intel_crtc_state *crtc_state) { @@ -
> 1114,6 +1136,8 @@ static bool _compute_alpm_params(struct intel_dp
> *intel_dp,
> * it is not enough -> use 45 us.
> */
> fast_wake_time = 45;
> +
> + /* TODO: Check how we can use ALPM_CTL fast wake extended
> field */
> max_wake_lines = 12;
> } else {
> io_wake_time = 50;
> @@ -1130,6 +1154,10 @@ static bool _compute_alpm_params(struct intel_dp
> *intel_dp,
> fast_wake_lines > max_wake_lines)
> return false;
>
> + if (DISPLAY_VER(i915) >= 20 && !_lnl_compute_alpm_params(intel_dp,
> + crtc_state))
The function name _lnl_*** indicates it should be display ver 20. So can this display ver check be moved to _lnl_*** ?
Thanks and Regards,
Arun R Murthy
-------------------
> + return false;
> +
> if (i915->display.params.psr_safest_params)
> io_wake_lines = fast_wake_lines = max_wake_lines;
>
> --
> 2.34.1
More information about the Intel-gfx
mailing list