On Tue, 09 Dec 2025, Dibin Moolakadan Subrahmanian 
<[email protected]> wrote:
> Introduce a new helper that validates whether DC3CO can be enabled
> based on both allow  and source.
>
> Signed-off-by: Dibin Moolakadan Subrahmanian 
> <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 11 ++++++++++-
>  drivers/gpu/drm/i915/display/intel_display.h |  1 +
>  drivers/gpu/drm/i915/display/intel_psr.c     |  2 +-
>  3 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index b14a1c9f80bd..9f9ba58371ab 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -6295,6 +6295,15 @@ static int intel_joiner_add_affected_crtcs(struct 
> intel_atomic_state *state)
>       return 0;
>  }
>  
> +bool intel_dc3co_can_enable(struct intel_display *display)
> +{
> +     /*
> +      * ToDo - Check CMTG enabled
> +      * ToDo - Check flipq enabled
> +      */
> +     return (display->power.dc3co_allow && display->power.dc3co_source);
> +}
> +

This doesn't belong in intel_display.[ch].

>  bool intel_dc3co_allowed(struct intel_display *display)
>  {
>       return display->power.dc3co_allow;
> @@ -7683,7 +7692,7 @@ static void intel_atomic_commit_tail(struct 
> intel_atomic_state *state)
>                */
>               intel_uncore_arm_unclaimed_mmio_detection(&dev_priv->uncore);
>       }
> -     if (intel_dc3co_allowed(display))
> +     if (intel_dc3co_can_enable(display))
>               intel_display_power_set_target_dc_state(display, 
> DC_STATE_EN_UPTO_DC3CO);
>       else
>               intel_display_power_set_target_dc_state(display, 
> DC_STATE_EN_UPTO_DC6);
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h 
> b/drivers/gpu/drm/i915/display/intel_display.h
> index 87bbf1f66209..f704cce4f1d8 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -564,4 +564,5 @@ int intel_crtc_num_joined_pipes(const struct 
> intel_crtc_state *crtc_state);
>  bool intel_dc3co_allowed(struct intel_display *display);
>  void intel_dc3co_source_set(struct intel_display *display, enum 
> intel_dc3co_source source);
>  void intel_dc3co_source_unset(struct intel_display *display, enum 
> intel_dc3co_source source);
> +bool intel_dc3co_can_enable(struct intel_display *display);
>  #endif
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index d4c5dc6dcc82..18bf45455ea2 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -3909,7 +3909,7 @@ void intel_psr_notify_vblank_enable_disable(struct 
> intel_display *display,
>               return;
>       }
>  
> -     if (intel_dc3co_allowed(display))
> +     if (intel_dc3co_can_enable(display))
>               intel_display_power_set_target_dc_state(display, enable ? 
> DC_STATE_DISABLE :
>                                               DC_STATE_EN_UPTO_DC3CO);
>       else

-- 
Jani Nikula, Intel

Reply via email to