|
@@ -647,6 +647,12 @@ static inline void sde_crtc_set_needs_hw_reset(struct drm_crtc *crtc)
|
|
int sde_crtc_reset_hw(struct drm_crtc *crtc, struct drm_crtc_state *old_state,
|
|
int sde_crtc_reset_hw(struct drm_crtc *crtc, struct drm_crtc_state *old_state,
|
|
bool recovery_events);
|
|
bool recovery_events);
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * sde_crtc_dump_fences - dump info for input fences of each crtc plane
|
|
|
|
+ * @crtc: Pointer to DRM crtc instance
|
|
|
|
+ */
|
|
|
|
+void sde_crtc_dump_fences(struct drm_crtc *crtc);
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* sde_crtc_request_frame_reset - requests for next frame reset
|
|
* sde_crtc_request_frame_reset - requests for next frame reset
|
|
* @crtc: Pointer to drm crtc object
|
|
* @crtc: Pointer to drm crtc object
|
|
@@ -657,6 +663,9 @@ static inline int sde_crtc_request_frame_reset(struct drm_crtc *crtc,
|
|
{
|
|
{
|
|
struct sde_crtc *sde_crtc = to_sde_crtc(crtc);
|
|
struct sde_crtc *sde_crtc = to_sde_crtc(crtc);
|
|
|
|
|
|
|
|
+ if (test_bit(HW_FENCE_IN_FENCES_ENABLE, sde_crtc->hwfence_features_mask))
|
|
|
|
+ sde_crtc_dump_fences(crtc);
|
|
|
|
+
|
|
if (sde_crtc->frame_trigger_mode == FRAME_DONE_WAIT_POSTED_START ||
|
|
if (sde_crtc->frame_trigger_mode == FRAME_DONE_WAIT_POSTED_START ||
|
|
!sde_encoder_is_dsi_display(encoder))
|
|
!sde_encoder_is_dsi_display(encoder))
|
|
sde_crtc_reset_hw(crtc, crtc->state, false);
|
|
sde_crtc_reset_hw(crtc, crtc->state, false);
|