disp: msm: sde: sw fence error handling

Sw fence error handling addresses following:
a. out of order handling
  - For cmd panel, signal the release fence and retire fence once
    sw fence error detected.
  - For vid panel, signal the fence error frame release fence and
    retire fence once sw fence error detected, hold the release
    fence of last good frame till next good frame.
b. avoid BW decrease vote
c. lut dma reset
d. cancel kickoff

Change-Id: Ic496c532a26d80e0ef0074624ef6ace01c4ab2f0
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
This commit is contained in:
GG Hou
2023-04-13 16:37:05 +08:00
والد a658fb17b7
کامیت 54209fb4d0
2فایلهای تغییر یافته به همراه53 افزوده شده و 0 حذف شده

مشاهده پرونده

@@ -4399,6 +4399,14 @@ static void _sde_encoder_kickoff_phys(struct sde_encoder_virt *sde_enc,
}
sde_crtc = to_sde_crtc(sde_enc->crtc);
/* reset input fence status and skip flush for fence error case. */
if (sde_crtc->input_fence_status < 0) {
SDE_EVT32(DRMID(&sde_enc->base), sde_crtc->input_fence_status);
sde_crtc->input_fence_status = 0;
goto handle_elevated_ahb_vote;
}
if (sde_encoder_check_curr_mode(&sde_enc->base, MSM_DISPLAY_VIDEO_MODE))
is_vid_mode = true;
@@ -4476,6 +4484,7 @@ static void _sde_encoder_kickoff_phys(struct sde_encoder_virt *sde_enc,
_sde_encoder_trigger_start(sde_enc->cur_master);
handle_elevated_ahb_vote:
if (sde_enc->elevated_ahb_vote) {
sde_kms = sde_encoder_get_kms(&sde_enc->base);
priv = sde_enc->base.dev->dev_private;