|
@@ -3618,6 +3618,10 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ if (sde_encoder_is_built_in_display(drm_enc) &&
|
|
|
+ msm_is_mode_seamless_poms(&c_state->msm_mode))
|
|
|
+ drm_crtc_vblank_put(sde_enc->crtc);
|
|
|
+
|
|
|
memset(&sde_enc->cur_master->intf_cfg_v1, 0,
|
|
|
sizeof(sde_enc->cur_master->intf_cfg_v1));
|
|
|
|
|
@@ -3711,6 +3715,7 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)
|
|
|
struct sde_encoder_virt *sde_enc = NULL;
|
|
|
struct sde_connector *sde_conn;
|
|
|
struct sde_kms *sde_kms;
|
|
|
+ struct sde_connector_state *c_state = NULL;
|
|
|
enum sde_intf_mode intf_mode;
|
|
|
int ret, i = 0;
|
|
|
|
|
@@ -3742,6 +3747,12 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)
|
|
|
if (!sde_kms)
|
|
|
return;
|
|
|
|
|
|
+ c_state = to_sde_connector_state(sde_enc->cur_master->connector->state);
|
|
|
+ if (!c_state) {
|
|
|
+ SDE_ERROR("invalid connector state\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
intf_mode = sde_encoder_get_intf_mode(drm_enc);
|
|
|
|
|
|
SDE_EVT32(DRMID(drm_enc));
|
|
@@ -3751,6 +3762,10 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)
|
|
|
_sde_encoder_input_handler_unregister(drm_enc);
|
|
|
|
|
|
flush_delayed_work(&sde_conn->status_work);
|
|
|
+
|
|
|
+ if (sde_encoder_is_built_in_display(drm_enc) &&
|
|
|
+ msm_is_mode_seamless_poms(&c_state->msm_mode))
|
|
|
+ drm_crtc_vblank_get(sde_enc->crtc);
|
|
|
/*
|
|
|
* For primary command mode and video mode encoders, execute the
|
|
|
* resource control pre-stop operations before the physical encoders
|
|
@@ -3786,7 +3801,8 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)
|
|
|
* wait for any pending vsync timestamp event to sf
|
|
|
* to ensure vbalnk irq is disabled.
|
|
|
*/
|
|
|
- if (sde_enc->vblank_enabled)
|
|
|
+ if (sde_enc->vblank_enabled &&
|
|
|
+ !msm_is_mode_seamless_poms(&c_state->msm_mode))
|
|
|
sde_encoder_wait_for_vsync_event_complete(sde_enc);
|
|
|
|
|
|
/*
|