diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index d206c5f8a3..7cce35d703 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -2982,6 +2982,8 @@ void sde_crtc_complete_commit(struct drm_crtc *crtc, SDE_EVT32_VERBOSE(DRMID(crtc)); sde_kms = _sde_crtc_get_kms(crtc); + if (!sde_kms) + return; for (i = 0; i < MAX_DSI_DISPLAYS; i++) { splash_display = &sde_kms->splash_data.splash_display[i]; diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index c6218427d2..c1f05323f2 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -227,14 +227,9 @@ static void _sde_encoder_control_fal10_veto(struct drm_encoder *drm_enc, bool ve struct sde_kms *sde_kms = sde_encoder_get_kms(drm_enc); struct sde_encoder_virt *sde_enc = to_sde_encoder_virt(drm_enc); - if (sde_kms->catalog && !sde_kms->catalog->uidle_cfg.uidle_rev) + if (!sde_kms || !sde_kms->hw_uidle || !sde_kms->hw_uidle->ops.uidle_fal10_override) return; - if (!sde_kms->hw_uidle || !sde_kms->hw_uidle->ops.uidle_fal10_override) { - SDE_ERROR("invalid args\n"); - return; - } - /* * clone mode is the only scenario where we want to enable software override * of fal10 veto. @@ -4166,6 +4161,9 @@ static void sde_encoder_early_wakeup_work_handler(struct kthread_work *work) struct sde_encoder_virt, early_wakeup_work); struct sde_kms *sde_kms = to_sde_kms(ddev_to_msm_kms(sde_enc->base.dev)); + if (!sde_kms) + return; + sde_vm_lock(sde_kms); if (!sde_vm_owns_hw(sde_kms)) { sde_vm_unlock(sde_kms); diff --git a/msm/sde/sde_vbif.c b/msm/sde/sde_vbif.c index cb210f8f51..141018c7de 100644 --- a/msm/sde/sde_vbif.c +++ b/msm/sde/sde_vbif.c @@ -49,6 +49,9 @@ static bool _sde_vbif_setup_clk_supported(struct sde_kms *sde_kms, enum sde_clk_ bool supported = false; bool has_split_vbif = test_bit(SDE_FEATURE_VBIF_CLK_SPLIT, sde_kms->catalog->features); + if (!SDE_CLK_CTRL_VALID(clk_ctrl)) + return false; + if ((has_split_vbif && VBIF_CLK_CLIENT(clk_ctrl).ops.setup_clk_force_ctrl) || (!has_split_vbif && sde_kms->hw_mdp->ops.setup_clk_force_ctrl)) supported = true;