From 7c138e3f3c4e5cea2c2448907c897c9df130ddf9 Mon Sep 17 00:00:00 2001 From: Nilaan Gunabalachandran Date: Thu, 15 Apr 2021 15:30:32 -0400 Subject: [PATCH] disp: msm: sde: null check for pp hw before encoder mode set During encoder modeset, driver does not check for ping pong hw before going through with mode set. This change updates the check at the encoder mode set and adds a check at the encoder wait for irq. Change-Id: If27faa29ee29040808473e44994f42c36980a45e Signed-off-by: Nilaan Gunabalachandran --- msm/sde/sde_encoder.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 1f07e1460e..279191a287 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -381,7 +381,7 @@ int sde_encoder_helper_wait_for_irq(struct sde_encoder_phys *phys_enc, u32 irq_status; int ret, i; - if (!phys_enc || !wait_info || intr_idx >= INTR_IDX_MAX) { + if (!phys_enc || !phys_enc->hw_pp || !wait_info || intr_idx >= INTR_IDX_MAX) { SDE_ERROR("invalid params\n"); return -EINVAL; } @@ -2529,10 +2529,10 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc, struct sde_encoder_phys *phys = sde_enc->phys_encs[i]; if (phys) { - if (!sde_enc->hw_pp[i * num_pp_per_intf] && + if (!sde_enc->hw_pp[i * num_pp_per_intf] || sde_enc->topology.num_intf) { - SDE_ERROR_ENC(sde_enc, "invalid hw_pp[%d]\n", - i * num_pp_per_intf); + SDE_ERROR_ENC(sde_enc, "invalid phys %d pp_per_intf %d num_intf %d", + i, num_pp_per_intf, sde_enc->topology.num_intf); return; } phys->hw_pp = sde_enc->hw_pp[i * num_pp_per_intf];