[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