|
@@ -3615,6 +3615,10 @@ static void sde_crtc_atomic_begin(struct drm_crtc *crtc,
|
|
|
|
|
|
test_and_clear_bit(SDE_CRTC_DIRTY_UIDLE, &sde_crtc->revalidate_mask);
|
|
|
|
|
|
+ /* update cached_encoder_mask if new conn is added or removed */
|
|
|
+ if (crtc->state->connectors_changed)
|
|
|
+ sde_crtc->cached_encoder_mask = crtc->state->encoder_mask;
|
|
|
+
|
|
|
/*
|
|
|
* Since CP properties use AXI buffer to program the
|
|
|
* HW, check if context bank is in attached state,
|
|
@@ -5510,6 +5514,8 @@ static u32 sde_crtc_get_vblank_counter(struct drm_crtc *crtc)
|
|
|
{
|
|
|
struct drm_encoder *encoder;
|
|
|
struct sde_crtc *sde_crtc;
|
|
|
+ bool is_built_in;
|
|
|
+ u32 vblank_cnt;
|
|
|
|
|
|
if (!crtc)
|
|
|
return 0;
|
|
@@ -5520,7 +5526,14 @@ static u32 sde_crtc_get_vblank_counter(struct drm_crtc *crtc)
|
|
|
if (sde_encoder_in_clone_mode(encoder))
|
|
|
continue;
|
|
|
|
|
|
- return sde_encoder_get_frame_count(encoder);
|
|
|
+ is_built_in = sde_encoder_is_built_in_display(encoder);
|
|
|
+ vblank_cnt = sde_encoder_get_frame_count(encoder);
|
|
|
+
|
|
|
+ SDE_EVT32(DRMID(crtc), DRMID(encoder), is_built_in, vblank_cnt);
|
|
|
+ SDE_DEBUG("crtc:%d enc:%d is_built_in:%d vblank_cnt:%d\n",
|
|
|
+ DRMID(crtc), DRMID(encoder), is_built_in, vblank_cnt);
|
|
|
+
|
|
|
+ return vblank_cnt;
|
|
|
}
|
|
|
|
|
|
return 0;
|