[RFC PATCH 01/11] drm/i915/display: Add new interface for getting dc_state

Kahola, Mika mika.kahola at intel.com
Mon Apr 7 10:22:48 UTC 2025


> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Jouni
> Högander
> Sent: Friday, 7 March 2025 12.52
> To: intel-gfx at lists.freedesktop.org; intel-xe at lists.freedesktop.org
> Cc: Hogander, Jouni <jouni.hogander at intel.com>
> Subject: [RFC PATCH 01/11] drm/i915/display: Add new interface for getting
> dc_state
> 
> To implement workaround for underrun on idle PSR HW issue (Wa_16025596647)
> we need to have current configured DC state available. Add new interface for this
> purpose.
> 

Reviewed-by: Mika Kahola <mika.kahola at intel.com>

> Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
> ---
>  .../drm/i915/display/intel_display_power.c    | 29 +++++++++++++++++++
>  .../drm/i915/display/intel_display_power.h    |  1 +
>  2 files changed, 30 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
> b/drivers/gpu/drm/i915/display/intel_display_power.c
> index f7171e6932dc..6dfe85a5528f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -322,6 +322,35 @@ void intel_display_power_set_target_dc_state(struct
> intel_display *display,
>  	mutex_unlock(&power_domains->lock);
>  }
> 
> +/**
> + * intel_display_power_get_current_dc_state - Set target dc state.
> + * @display: display device
> + *
> + * This function set the "DC off" power well target_dc_state,
> + * based upon this target_dc_stste, "DC off" power well will
> + * enable desired DC state.
> + */
> +u32 intel_display_power_get_current_dc_state(struct intel_display
> +*display) {
> +	struct i915_power_well *power_well;
> +	struct i915_power_domains *power_domains = &display-
> >power.domains;
> +	u32 current_dc_state = DC_STATE_DISABLE;
> +
> +	mutex_lock(&power_domains->lock);
> +	power_well = lookup_power_well(display, SKL_DISP_DC_OFF);
> +
> +	if (drm_WARN_ON(display->drm, !power_well))
> +		goto unlock;
> +
> +	current_dc_state = intel_power_well_is_enabled(display, power_well) ?
> +		DC_STATE_DISABLE : power_domains->target_dc_state;
> +
> +unlock:
> +	mutex_unlock(&power_domains->lock);
> +
> +	return current_dc_state;
> +}
> +
>  static void __async_put_domains_mask(struct i915_power_domains
> *power_domains,
>  				     struct intel_power_domain_mask *mask)  {
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h
> b/drivers/gpu/drm/i915/display/intel_display_power.h
> index 1b53d67f9b60..f8813b0e16df 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
> @@ -183,6 +183,7 @@ void intel_display_power_suspend(struct intel_display
> *display);  void intel_display_power_resume(struct intel_display *display);  void
> intel_display_power_set_target_dc_state(struct intel_display *display,
>  					     u32 state);
> +u32 intel_display_power_get_current_dc_state(struct intel_display
> +*display);
> 
>  bool intel_display_power_is_enabled(struct intel_display *display,
>  				    enum intel_display_power_domain domain);
> --
> 2.43.0



More information about the Intel-gfx mailing list