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); +} + 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 -- 2.43.0
