disp: msm: sde: disable autorefresh on encoder disable
Disable the autorefresh during encoder disable to avoid any pending frame transfers while disabling. Additionally, handle frame_done for new autorefresh frames to signal the fences and proper accounting of pending_kickoff counter. Change-Id: I8af114972b19ccdf0edab6b4c454ee90b4e8d8cf Signed-off-by: Veera Sundaram Sankaran <quic_veeras@quicinc.com>
This commit is contained in:
@@ -3177,9 +3177,18 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)
|
||||
|
||||
SDE_EVT32(DRMID(drm_enc));
|
||||
|
||||
/* wait for idle */
|
||||
if (!sde_encoder_in_clone_mode(drm_enc))
|
||||
if (!sde_encoder_in_clone_mode(drm_enc)) {
|
||||
/* disable autorefresh */
|
||||
for (i = 0; i < sde_enc->num_phys_encs; i++) {
|
||||
struct sde_encoder_phys *phys = sde_enc->phys_encs[i];
|
||||
|
||||
if (phys && phys->ops.disable_autorefresh)
|
||||
phys->ops.disable_autorefresh(phys);
|
||||
}
|
||||
|
||||
/* wait for idle */
|
||||
sde_encoder_wait_for_event(drm_enc, MSM_ENC_TX_COMPLETE);
|
||||
}
|
||||
|
||||
_sde_encoder_input_handler_unregister(drm_enc);
|
||||
|
||||
|
Reference in New Issue
Block a user