diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index e6811e616a58..a17ffaeac08a 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -1,4 +1,5 @@ /* + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2014-2021 The Linux Foundation. All rights reserved. * Copyright (C) 2013 Red Hat * Author: Rob Clark @@ -3482,6 +3483,7 @@ static void sde_crtc_destroy_state(struct drm_crtc *crtc, struct sde_crtc_state *cstate; struct drm_encoder *enc; struct sde_kms *sde_kms; + u32 encoder_mask; if (!crtc || !state) { SDE_ERROR("invalid argument(s)\n"); @@ -3497,9 +3499,11 @@ static void sde_crtc_destroy_state(struct drm_crtc *crtc, return; } - SDE_DEBUG("crtc%d\n", crtc->base.id); + encoder_mask = state->encoder_mask ? state->encoder_mask : + crtc->state->encoder_mask; + SDE_DEBUG("crtc%d\n, encoder_mask=%d", crtc->base.id, encoder_mask); - drm_for_each_encoder_mask(enc, crtc->dev, state->encoder_mask) + drm_for_each_encoder_mask(enc, crtc->dev, encoder_mask) sde_rm_release(&sde_kms->rm, enc, true); __drm_atomic_helper_crtc_destroy_state(state);