disp: msm: sde: fix release fence signaling in error cases
Handle release fence/frame-done error signalling for error case like esd failure, pp_done timeout, interrupt disable on cpu, etc. It fixes the race condition for pending_frame count update and also triggers correct wait function for wr_ptr wait failure. Change-Id: Iad08f20592c97221a1626bb40e607c398a9812b6 Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org> Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
This commit is contained in:

committed by
Dhaval Patel

parent
9081908beb
commit
5a2dfc1e83
@@ -3362,6 +3362,7 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)
|
||||
sde_enc->phys_encs[i]->cont_splash_enabled = false;
|
||||
sde_enc->phys_encs[i]->connector = NULL;
|
||||
}
|
||||
atomic_set(&sde_enc->frame_done_cnt[i], 0);
|
||||
}
|
||||
|
||||
sde_enc->cur_master = NULL;
|
||||
@@ -3647,8 +3648,7 @@ static void sde_encoder_frame_done_callback(
|
||||
|
||||
/* One of the physical encoders has become idle */
|
||||
for (i = 0; i < sde_enc->num_phys_encs; i++) {
|
||||
if ((sde_enc->phys_encs[i] == ready_phys) ||
|
||||
(event & SDE_ENCODER_FRAME_EVENT_ERROR)) {
|
||||
if (sde_enc->phys_encs[i] == ready_phys) {
|
||||
SDE_EVT32_VERBOSE(DRMID(drm_enc), i,
|
||||
atomic_read(&sde_enc->frame_done_cnt[i]));
|
||||
if (!atomic_add_unless(
|
||||
|
Reference in New Issue
Block a user