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

Commit 80b4b4a7 authored by Rob Clark's avatar Rob Clark
Browse files

drm/msm: convert kms->complete_commit() to crtc_mask



Prep work for async commits, in which case this will be called after we
no longer have the atomic state object.

This drops some wait_for_vblanks(), but those should be unnecessary, as
we call this after waiting for flush to complete.

Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
Reviewed-by: default avatarSean Paul <sean@poorly.run>
parent d4d2c604
Loading
Loading
Loading
Loading
+1 −6
Original line number Original line Diff line number Diff line
@@ -391,13 +391,8 @@ static void dpu_crtc_frame_event_cb(void *data, u32 event)
	kthread_queue_work(&priv->event_thread[crtc_id].worker, &fevent->work);
	kthread_queue_work(&priv->event_thread[crtc_id].worker, &fevent->work);
}
}


void dpu_crtc_complete_commit(struct drm_crtc *crtc,
void dpu_crtc_complete_commit(struct drm_crtc *crtc)
		struct drm_crtc_state *old_state)
{
{
	if (!crtc || !crtc->state) {
		DPU_ERROR("invalid crtc\n");
		return;
	}
	trace_dpu_crtc_complete_commit(DRMID(crtc));
	trace_dpu_crtc_complete_commit(DRMID(crtc));
}
}


+1 −3
Original line number Original line Diff line number Diff line
@@ -244,10 +244,8 @@ void dpu_crtc_commit_kickoff(struct drm_crtc *crtc);
/**
/**
 * dpu_crtc_complete_commit - callback signalling completion of current commit
 * dpu_crtc_complete_commit - callback signalling completion of current commit
 * @crtc: Pointer to drm crtc object
 * @crtc: Pointer to drm crtc object
 * @old_state: Pointer to drm crtc old state object
 */
 */
void dpu_crtc_complete_commit(struct drm_crtc *crtc,
void dpu_crtc_complete_commit(struct drm_crtc *crtc);
		struct drm_crtc_state *old_state);


/**
/**
 * dpu_crtc_init - create a new crtc object
 * dpu_crtc_init - create a new crtc object
+4 −16
Original line number Original line Diff line number Diff line
@@ -322,27 +322,15 @@ static void dpu_kms_commit(struct msm_kms *kms, struct drm_atomic_state *state)
	}
	}
}
}


static void dpu_kms_complete_commit(struct msm_kms *kms,
static void dpu_kms_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
		struct drm_atomic_state *old_state)
{
{
	struct dpu_kms *dpu_kms;
	struct dpu_kms *dpu_kms = to_dpu_kms(kms);
	struct msm_drm_private *priv;
	struct drm_crtc *crtc;
	struct drm_crtc *crtc;
	struct drm_crtc_state *old_crtc_state;
	int i;

	if (!kms || !old_state)
		return;
	dpu_kms = to_dpu_kms(kms);

	if (!dpu_kms->dev || !dpu_kms->dev->dev_private)
		return;
	priv = dpu_kms->dev->dev_private;


	DPU_ATRACE_BEGIN("kms_complete_commit");
	DPU_ATRACE_BEGIN("kms_complete_commit");


	for_each_old_crtc_in_state(old_state, crtc, old_crtc_state, i)
	for_each_crtc_mask(dpu_kms->dev, crtc, crtc_mask)
		dpu_crtc_complete_commit(crtc, old_crtc_state);
		dpu_crtc_complete_commit(crtc);


	pm_runtime_put_sync(&dpu_kms->pdev->dev);
	pm_runtime_put_sync(&dpu_kms->pdev->dev);


+2 −6
Original line number Original line Diff line number Diff line
@@ -119,17 +119,13 @@ static void mdp4_wait_flush(struct msm_kms *kms, unsigned crtc_mask)
		mdp4_crtc_wait_for_commit_done(crtc);
		mdp4_crtc_wait_for_commit_done(crtc);
}
}


static void mdp4_complete_commit(struct msm_kms *kms, struct drm_atomic_state *state)
static void mdp4_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
{
{
	struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
	struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
	int i;
	struct drm_crtc *crtc;
	struct drm_crtc *crtc;
	struct drm_crtc_state *crtc_state;

	drm_atomic_helper_wait_for_vblanks(mdp4_kms->dev, state);


	/* see 119ecb7fd */
	/* see 119ecb7fd */
	for_each_new_crtc_in_state(state, crtc, crtc_state, i)
	for_each_crtc_mask(mdp4_kms->dev, crtc, crtc_mask)
		drm_crtc_vblank_put(crtc);
		drm_crtc_vblank_put(crtc);


	mdp4_disable(mdp4_kms);
	mdp4_disable(mdp4_kms);
+1 −3
Original line number Original line Diff line number Diff line
@@ -169,14 +169,12 @@ static void mdp5_wait_flush(struct msm_kms *kms, unsigned crtc_mask)
		mdp5_crtc_wait_for_commit_done(crtc);
		mdp5_crtc_wait_for_commit_done(crtc);
}
}


static void mdp5_complete_commit(struct msm_kms *kms, struct drm_atomic_state *state)
static void mdp5_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
{
{
	struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
	struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
	struct device *dev = &mdp5_kms->pdev->dev;
	struct device *dev = &mdp5_kms->pdev->dev;
	struct mdp5_global_state *global_state;
	struct mdp5_global_state *global_state;


	drm_atomic_helper_wait_for_vblanks(mdp5_kms->dev, state);

	global_state = mdp5_get_existing_global_state(mdp5_kms);
	global_state = mdp5_get_existing_global_state(mdp5_kms);


	if (mdp5_kms->smp)
	if (mdp5_kms->smp)
Loading