diff --git a/msm/sde/sde_encoder_phys_wb.c b/msm/sde/sde_encoder_phys_wb.c index 7a27d76da09e..6b377fc63fac 100644 --- a/msm/sde/sde_encoder_phys_wb.c +++ b/msm/sde/sde_encoder_phys_wb.c @@ -722,6 +722,7 @@ static int sde_encoder_phys_wb_atomic_check( struct sde_rect wb_roi; const struct drm_display_mode *mode = &crtc_state->mode; int rc; + bool clone_mode_curr = false; SDE_DEBUG("[atomic_check:%d,\"%s\",%d,%d]\n", hw_wb->idx - WB_0, mode->name, @@ -737,8 +738,15 @@ static int sde_encoder_phys_wb_atomic_check( return -EINVAL; } + clone_mode_curr = phys_enc->in_clone_mode; + _sde_enc_phys_wb_detect_cwb(phys_enc, crtc_state); + if (clone_mode_curr && !phys_enc->in_clone_mode) { + SDE_ERROR("WB commit before CWB disable\n"); + return -EINVAL; + } + memset(&wb_roi, 0, sizeof(struct sde_rect)); rc = sde_wb_connector_state_get_output_roi(conn_state, &wb_roi);