encoder->crtc is not really meaningful for atomic path. Use
crtc->encoder_mask to identify the crtc attached with
an encoder.

Signed-off-by: Jeykumar Sankaran <jsa...@codeaurora.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 45617b9..0a19124 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -961,6 +961,7 @@ static void dpu_encoder_virt_mode_set(struct drm_encoder 
*drm_enc,
        struct dpu_kms *dpu_kms;
        struct list_head *connector_list;
        struct drm_connector *conn = NULL, *conn_iter;
+       struct drm_crtc *drm_crtc;
        struct dpu_rm_hw_iter pp_iter, ctl_iter;
        struct msm_display_topology topology;
        struct dpu_hw_ctl *hw_ctl[MAX_CHANNELS_PER_ENC] = { NULL };
@@ -992,10 +993,14 @@ static void dpu_encoder_virt_mode_set(struct drm_encoder 
*drm_enc,
                return;
        }
 
+       drm_for_each_crtc(drm_crtc, drm_enc->dev)
+               if (drm_crtc->state->encoder_mask & drm_encoder_mask(drm_enc))
+                       break;
+
        topology = dpu_encoder_get_topology(dpu_enc, dpu_kms, adj_mode);
 
        /* Reserve dynamic resources now. Indicating non-AtomicTest phase */
-       ret = dpu_rm_reserve(&dpu_kms->rm, drm_enc, drm_enc->crtc->state,
+       ret = dpu_rm_reserve(&dpu_kms->rm, drm_enc, drm_crtc->state,
                             topology, false);
        if (ret) {
                DPU_ERROR_ENC(dpu_enc,
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

Reply via email to