> -----Original Message----- > From: Intel-gfx <intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Ville > Syrjala > Sent: Wednesday, January 18, 2023 10:01 PM > To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx > Subject: [PATCH 06/13] drm/i915/dsb: Allow vblank synchronized > DSB execution > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Allow the caller to ask for the DSB commands to execute during vblank. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> LGTM. Reviewed-by: Animesh Manna <animesh.manna@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_color.c | 2 +- > drivers/gpu/drm/i915/display/intel_dsb.c | 4 +++- > drivers/gpu/drm/i915/display/intel_dsb.h | 3 ++- > 3 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_color.c > b/drivers/gpu/drm/i915/display/intel_color.c > index 6d6d300fa2df..162d671182e3 100644 > --- a/drivers/gpu/drm/i915/display/intel_color.c > +++ b/drivers/gpu/drm/i915/display/intel_color.c > @@ -1258,7 +1258,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_commit(crtc_state->dsb, false); > intel_dsb_wait(crtc_state->dsb); > } > } > diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c > b/drivers/gpu/drm/i915/display/intel_dsb.c > index f454329b6901..43679090eceb 100644 > --- a/drivers/gpu/drm/i915/display/intel_dsb.c > +++ b/drivers/gpu/drm/i915/display/intel_dsb.c > @@ -237,10 +237,11 @@ void intel_dsb_finish(struct intel_dsb *dsb) > /** > * intel_dsb_commit() - Trigger workload execution of DSB. > * @dsb: DSB context > + * @wait_for_vblank: wait for vblank before executing > * > * This function is used to do actual write to hardware using DSB. > */ > -void intel_dsb_commit(struct intel_dsb *dsb) > +void intel_dsb_commit(struct intel_dsb *dsb, bool wait_for_vblank) > { > struct intel_crtc *crtc = dsb->crtc; > struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); @@ - > 258,6 +259,7 @@ void intel_dsb_commit(struct intel_dsb *dsb) > } > > intel_de_write(dev_priv, DSB_CTRL(pipe, dsb->id), > + (wait_for_vblank ? DSB_WAIT_FOR_VBLANK : 0) | > DSB_ENABLE); > intel_de_write(dev_priv, DSB_HEAD(pipe, dsb->id), > i915_ggtt_offset(dsb->vma)); > diff --git a/drivers/gpu/drm/i915/display/intel_dsb.h > b/drivers/gpu/drm/i915/display/intel_dsb.h > index 6b22499e8a5d..b8148b47022d 100644 > --- a/drivers/gpu/drm/i915/display/intel_dsb.h > +++ b/drivers/gpu/drm/i915/display/intel_dsb.h > @@ -19,7 +19,8 @@ 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); > -void intel_dsb_commit(struct intel_dsb *dsb); > +void intel_dsb_commit(struct intel_dsb *dsb, > + bool wait_for_vblank); > void intel_dsb_wait(struct intel_dsb *dsb); > > #endif > -- > 2.38.2