Merge "disp: msm: sde: update kickoff timeout for CMD panel"

This commit is contained in:
qctecmdr
2023-11-01 23:27:17 -07:00
committed by Gerrit - the friendly Code Review server
4 changed files with 27 additions and 1 deletions

View File

@@ -5428,6 +5428,20 @@ u32 sde_encoder_helper_get_kickoff_timeout_ms(struct drm_encoder *drm_enc)
return (SEC_TO_MILLI_SEC / fps) * 2;
}
void sde_encoder_reset_kickoff_timeout_ms(struct drm_encoder *drm_enc)
{
struct sde_encoder_virt *sde_enc = to_sde_encoder_virt(drm_enc);
if (!sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CMD_MODE))
return;
for (int i = 0; i < sde_enc->num_phys_encs; i++) {
if (sde_enc->phys_encs[i])
sde_enc->phys_encs[i]->kickoff_timeout_ms =
sde_encoder_helper_get_kickoff_timeout_ms(drm_enc);
}
}
int sde_encoder_get_avr_status(struct drm_encoder *drm_enc)
{
struct sde_encoder_virt *sde_enc;

View File

@@ -386,6 +386,12 @@ int sde_encoder_prepare_for_kickoff(struct drm_encoder *encoder,
*/
void sde_encoder_trigger_kickoff_pending(struct drm_encoder *encoder);
/**
* sde_encoder_reset_kickoff_timeout_ms - Reset the kickoff_timout after modeset
* commit for command mode display.
* @encoder: encoder pointer
*/
void sde_encoder_reset_kickoff_timeout_ms(struct drm_encoder *encoder);
/**
* sde_encoder_kickoff - trigger a double buffer flip of the ctl path
* (i.e. ctl flush and start) immediately.

View File

@@ -827,7 +827,8 @@ static void sde_encoder_phys_cmd_mode_set(
_sde_encoder_phys_cmd_setup_irq_hw_idx(phys_enc);
phys_enc->kickoff_timeout_ms =
sde_encoder_helper_get_kickoff_timeout_ms(phys_enc->parent);
max(phys_enc->kickoff_timeout_ms,
sde_encoder_helper_get_kickoff_timeout_ms(phys_enc->parent));
}
static int _sde_encoder_phys_cmd_handle_framedone_timeout(

View File

@@ -1726,6 +1726,11 @@ static void sde_kms_wait_for_commit_done(struct msm_kms *kms,
if (cwb_disabling && cwb_enc)
sde_encoder_virt_reset(cwb_enc);
if (drm_atomic_crtc_needs_modeset(crtc->state)) {
drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask)
sde_encoder_reset_kickoff_timeout_ms(encoder);
}
/* avoid system cache update to set rd-noalloc bit when NSE feature is enabled */
if (!test_bit(SDE_FEATURE_SYS_CACHE_NSE, sde_kms->catalog->features))
sde_crtc_static_cache_read_kickoff(crtc);