Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2aaadbc5 authored by Steve Cohen's avatar Steve Cohen
Browse files

disp: msm: sde: flush all event thread work during CRTC disable



The API to flush the event thread is only flushing the
frame_event work queued on that thread but during disable
the vblank work must also be flushed. Instead of flushing
only frame_events work, flush all work queued on the event
thread worker. Also rename the API to more accurately describe
what it's doing.

Change-Id: Iaf248a2b1bafc9b9a15ae9447b72cdff07509a91
Signed-off-by: default avatarSteve Cohen <cohens@codeaurora.org>
parent ee8ad711
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -3504,7 +3504,7 @@ static void sde_crtc_destroy_state(struct drm_crtc *crtc,
			&cstate->property_state);
}

static int _sde_crtc_flush_event_thread(struct drm_crtc *crtc)
static int _sde_crtc_flush_frame_events(struct drm_crtc *crtc)
{
	struct sde_crtc *sde_crtc;
	int i;
@@ -3780,7 +3780,7 @@ void sde_crtc_commit_kickoff(struct drm_crtc *crtc,

	sde_crtc_calc_fps(sde_crtc);
	SDE_ATRACE_BEGIN("flush_event_thread");
	_sde_crtc_flush_event_thread(crtc);
	_sde_crtc_flush_frame_events(crtc);
	SDE_ATRACE_END("flush_event_thread");
	sde_crtc->plane_mask_old = crtc->state->plane_mask;

@@ -4162,7 +4162,7 @@ static void sde_crtc_disable(struct drm_crtc *crtc)
			(u8 *)&power_on);

	mutex_unlock(&sde_crtc->crtc_lock);
	_sde_crtc_flush_event_thread(crtc);
	kthread_flush_worker(&priv->event_thread[crtc->index].worker);
	mutex_lock(&sde_crtc->crtc_lock);

	kthread_cancel_delayed_work_sync(&sde_crtc->static_cache_read_work);