Introduce a dedicated hook to check whether CMTG is supported. This helper is used in both the enable and disable sequences, while intel_cmtg_is_allowed() is now used only in enable path.
Signed-off-by: Animesh Manna <[email protected]> --- drivers/gpu/drm/i915/display/intel_cmtg.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_cmtg.c b/drivers/gpu/drm/i915/display/intel_cmtg.c index 2576121d0c3d..da08a6e0c4d0 100644 --- a/drivers/gpu/drm/i915/display/intel_cmtg.c +++ b/drivers/gpu/drm/i915/display/intel_cmtg.c @@ -82,6 +82,18 @@ static void intel_cmtg_dump_config(struct intel_display *display, str_yes_no(cmtg_config->trans_b_secondary)); } +static bool intel_cmtg_is_supported(const struct intel_crtc_state *crtc_state) +{ + struct intel_display *display = to_intel_display(crtc_state); + enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; + + if ((cpu_transcoder == TRANSCODER_A || cpu_transcoder == TRANSCODER_B) && + DISPLAY_VER(display) == 35 && intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) + return true; + + return false; +} + static bool intel_cmtg_transcoder_is_secondary(struct intel_display *display, enum transcoder trans) { @@ -190,10 +202,8 @@ void intel_cmtg_sanitize(struct intel_display *display) bool intel_cmtg_is_allowed(const struct intel_crtc_state *crtc_state) { struct intel_display *display = to_intel_display(crtc_state); - enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; - if ((cpu_transcoder == TRANSCODER_A || cpu_transcoder == TRANSCODER_B) && - DISPLAY_VER(display) == 35 && intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP) && + if (intel_cmtg_is_supported(crtc_state) && intel_display_power_get_current_dc_state(display) == DC_STATE_EN_UPTO_DC3CO) return true; -- 2.29.0
