|
@@ -3895,8 +3895,11 @@ int sde_crtc_reset_hw(struct drm_crtc *crtc, struct drm_crtc_state *old_state,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /* Early out if simple ctl reset succeeded */
|
|
|
- if (i == sde_crtc->num_ctls)
|
|
|
+ /*
|
|
|
+ * Early out if simple ctl reset succeeded or reset is
|
|
|
+ * being performed after timeout
|
|
|
+ */
|
|
|
+ if (i == sde_crtc->num_ctls || crtc->state == old_state)
|
|
|
return 0;
|
|
|
|
|
|
SDE_DEBUG("crtc%d: issuing hard reset\n", DRMID(crtc));
|
|
@@ -3999,6 +4002,7 @@ void sde_crtc_commit_kickoff(struct drm_crtc *crtc,
|
|
|
|
|
|
idle_pc_state = sde_crtc_get_property(cstate, CRTC_PROP_IDLE_PC_STATE);
|
|
|
|
|
|
+ sde_crtc->kickoff_in_progress = true;
|
|
|
list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
|
|
|
if (encoder->crtc != crtc)
|
|
|
continue;
|
|
@@ -4060,6 +4064,7 @@ void sde_crtc_commit_kickoff(struct drm_crtc *crtc,
|
|
|
|
|
|
sde_encoder_kickoff(encoder, false, true);
|
|
|
}
|
|
|
+ sde_crtc->kickoff_in_progress = false;
|
|
|
|
|
|
/* store the event after frame trigger */
|
|
|
if (sde_crtc->event) {
|
|
@@ -6565,6 +6570,9 @@ static int _sde_debugfs_fence_status_show(struct seq_file *s, void *data)
|
|
|
dev = crtc->dev;
|
|
|
cstate = to_sde_crtc_state(crtc->state);
|
|
|
|
|
|
+ if (!sde_crtc->kickoff_in_progress)
|
|
|
+ goto skip_input_fence;
|
|
|
+
|
|
|
/* Dump input fence info */
|
|
|
seq_puts(s, "===Input fence===\n");
|
|
|
drm_atomic_crtc_for_each_plane(plane, crtc) {
|
|
@@ -6592,6 +6600,7 @@ static int _sde_debugfs_fence_status_show(struct seq_file *s, void *data)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+skip_input_fence:
|
|
|
/* Dump release fence info */
|
|
|
seq_puts(s, "\n");
|
|
|
seq_puts(s, "===Release fence===\n");
|
|
@@ -7097,6 +7106,7 @@ struct drm_crtc *sde_crtc_init(struct drm_device *dev, struct drm_plane *plane)
|
|
|
atomic_set(&sde_crtc->frame_pending, 0);
|
|
|
|
|
|
sde_crtc->enabled = false;
|
|
|
+ sde_crtc->kickoff_in_progress = false;
|
|
|
|
|
|
/* Below parameters are for fps calculation for sysfs node */
|
|
|
sde_crtc->fps_info.fps_periodic_duration = DEFAULT_FPS_PERIOD_1_SEC;
|