Merge "disp: msm: sde: add delay after porches changed" into display-kernel.lnx.5.4

This commit is contained in:
Linux Build Service Account
2020-07-17 15:14:52 -07:00
committed by Gerrit - the friendly Code Review server
2 changed files with 11 additions and 1 deletions

View File

@@ -52,13 +52,16 @@ enum sde_enc_split_role {
* @SDE_ENC_ENABLED: Encoder is enabled * @SDE_ENC_ENABLED: Encoder is enabled
* @SDE_ENC_ERR_NEEDS_HW_RESET: Encoder is enabled, but requires a hw_reset * @SDE_ENC_ERR_NEEDS_HW_RESET: Encoder is enabled, but requires a hw_reset
* to recover from a previous error * to recover from a previous error
* @SDE_ENC_TIMING_ENGINE_RECONFIG: Encoder is enabled and timing engine
* parameters are updated
*/ */
enum sde_enc_enable_state { enum sde_enc_enable_state {
SDE_ENC_DISABLING, SDE_ENC_DISABLING,
SDE_ENC_DISABLED, SDE_ENC_DISABLED,
SDE_ENC_ENABLING, SDE_ENC_ENABLING,
SDE_ENC_ENABLED, SDE_ENC_ENABLED,
SDE_ENC_ERR_NEEDS_HW_RESET SDE_ENC_ERR_NEEDS_HW_RESET,
SDE_ENC_TIMING_ENGINE_RECONFIG,
}; };
struct sde_encoder_phys; struct sde_encoder_phys;

View File

@@ -830,6 +830,8 @@ skip_flush:
/* ctl_flush & timing engine enable will be triggered by framework */ /* ctl_flush & timing engine enable will be triggered by framework */
if (phys_enc->enable_state == SDE_ENC_DISABLED) if (phys_enc->enable_state == SDE_ENC_DISABLED)
phys_enc->enable_state = SDE_ENC_ENABLING; phys_enc->enable_state = SDE_ENC_ENABLING;
if (phys_enc->enable_state == SDE_ENC_ENABLED)
phys_enc->enable_state = SDE_ENC_TIMING_ENGINE_RECONFIG;
} }
static void sde_encoder_phys_vid_destroy(struct sde_encoder_phys *phys_enc) static void sde_encoder_phys_vid_destroy(struct sde_encoder_phys *phys_enc)
@@ -1120,6 +1122,11 @@ static void sde_encoder_phys_vid_handle_post_kickoff(
lock_flags); lock_flags);
} }
phys_enc->enable_state = SDE_ENC_ENABLED; phys_enc->enable_state = SDE_ENC_ENABLED;
} else if (phys_enc->enable_state == SDE_ENC_TIMING_ENGINE_RECONFIG) {
/* add 2 vsync delay for timing engine change */
sde_encoder_phys_vid_single_vblank_wait(phys_enc);
sde_encoder_phys_vid_single_vblank_wait(phys_enc);
phys_enc->enable_state = SDE_ENC_ENABLED;
} }
avr_mode = sde_connector_get_qsync_mode(phys_enc->connector); avr_mode = sde_connector_get_qsync_mode(phys_enc->connector);