Commit 36e491f8 authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm/i915/dsb: Introduce intel_dsb_finish()



Introduce a function to emits whatever commands we need
at the end of the DSB command buffer. For the moment we
only do the tail cacheline alignment there, but eventually
we might want to eg. emit an interrupt.

Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230118163040.29808-5-ville.syrjala@linux.intel.com


Reviewed-by: default avatarAnimesh Manna <animesh.manna@intel.com>
parent 4b284831
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1257,6 +1257,7 @@ static void icl_load_luts(const struct intel_crtc_state *crtc_state)
	}

	if (crtc_state->dsb) {
		intel_dsb_finish(crtc_state->dsb);
		intel_dsb_commit(crtc_state->dsb);
		intel_dsb_wait(crtc_state->dsb);
	}
+7 −4
Original line number Diff line number Diff line
@@ -199,7 +199,7 @@ void intel_dsb_reg_write(struct intel_dsb *dsb,
	}
}

static u32 intel_dsb_align_tail(struct intel_dsb *dsb)
static void intel_dsb_align_tail(struct intel_dsb *dsb)
{
	u32 aligned_tail, tail;

@@ -211,8 +211,11 @@ static u32 intel_dsb_align_tail(struct intel_dsb *dsb)
		       aligned_tail - tail);

	dsb->free_pos = aligned_tail / 4;
}

	return aligned_tail;
void intel_dsb_finish(struct intel_dsb *dsb)
{
	intel_dsb_align_tail(dsb);
}

/**
@@ -228,8 +231,8 @@ void intel_dsb_commit(struct intel_dsb *dsb)
	enum pipe pipe = crtc->pipe;
	u32 tail;

	tail = intel_dsb_align_tail(dsb);
	if (tail == 0)
	tail = dsb->free_pos * 4;
	if (drm_WARN_ON(&dev_priv->drm, !IS_ALIGNED(tail, CACHELINE_BYTES)))
		return;

	if (is_dsb_busy(dev_priv, pipe, dsb->id)) {
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ struct intel_dsb;

struct intel_dsb *intel_dsb_prepare(struct intel_crtc *crtc,
				    unsigned int max_cmds);
void intel_dsb_finish(struct intel_dsb *dsb);
void intel_dsb_cleanup(struct intel_dsb *dsb);
void intel_dsb_reg_write(struct intel_dsb *dsb,
			 i915_reg_t reg, u32 val);