Merge "disp: msm: sde: update kickoff timeout for CMD panel"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
e16b13269d
@@ -5428,6 +5428,20 @@ u32 sde_encoder_helper_get_kickoff_timeout_ms(struct drm_encoder *drm_enc)
|
|||||||
return (SEC_TO_MILLI_SEC / fps) * 2;
|
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)
|
int sde_encoder_get_avr_status(struct drm_encoder *drm_enc)
|
||||||
{
|
{
|
||||||
struct sde_encoder_virt *sde_enc;
|
struct sde_encoder_virt *sde_enc;
|
||||||
|
@@ -386,6 +386,12 @@ int sde_encoder_prepare_for_kickoff(struct drm_encoder *encoder,
|
|||||||
*/
|
*/
|
||||||
void sde_encoder_trigger_kickoff_pending(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
|
* sde_encoder_kickoff - trigger a double buffer flip of the ctl path
|
||||||
* (i.e. ctl flush and start) immediately.
|
* (i.e. ctl flush and start) immediately.
|
||||||
|
@@ -827,7 +827,8 @@ static void sde_encoder_phys_cmd_mode_set(
|
|||||||
_sde_encoder_phys_cmd_setup_irq_hw_idx(phys_enc);
|
_sde_encoder_phys_cmd_setup_irq_hw_idx(phys_enc);
|
||||||
|
|
||||||
phys_enc->kickoff_timeout_ms =
|
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(
|
static int _sde_encoder_phys_cmd_handle_framedone_timeout(
|
||||||
|
@@ -1726,6 +1726,11 @@ static void sde_kms_wait_for_commit_done(struct msm_kms *kms,
|
|||||||
if (cwb_disabling && cwb_enc)
|
if (cwb_disabling && cwb_enc)
|
||||||
sde_encoder_virt_reset(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 */
|
/* 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))
|
if (!test_bit(SDE_FEATURE_SYS_CACHE_NSE, sde_kms->catalog->features))
|
||||||
sde_crtc_static_cache_read_kickoff(crtc);
|
sde_crtc_static_cache_read_kickoff(crtc);
|
||||||
|
Reference in New Issue
Block a user