Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c59f29d5 authored by Dhaval Patel's avatar Dhaval Patel
Browse files

drm/msm/sde: handle missing ctl_start interrupt for retire fence



MDP hardware triggers the ctl_start interrupt on
frame transfer start. SW triggers the retire fence
on this interrupt to allow buffer flip. HW may miss
to trigger this interrupt for some unknown scenario. SW
needs to still trigger the interrupt on pingpong boundary
to avoid retire fence signal failure.

Change-Id: Ibed64fa8a88d666ada40db38e8a8fe76dd4050a3
Signed-off-by: default avatarDhaval Patel <pdhaval@codeaurora.org>
parent b1efd310
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -177,6 +177,13 @@ static void sde_encoder_phys_cmd_pp_tx_done_irq(void *arg, int irq_idx)
		return;

	SDE_ATRACE_BEGIN("pp_done_irq");

	/* handle rare cases where the ctl_start_irq is not received */
	if (sde_encoder_phys_cmd_is_master(phys_enc)
	    && atomic_add_unless(&phys_enc->pending_retire_fence_cnt, -1, 0))
		phys_enc->parent_ops.handle_frame_done(phys_enc->parent,
			phys_enc, SDE_ENCODER_FRAME_EVENT_SIGNAL_RETIRE_FENCE);

	/* notify all synchronous clients first, then asynchronous clients */
	if (phys_enc->parent_ops.handle_frame_done)
		phys_enc->parent_ops.handle_frame_done(phys_enc->parent,