> -----Original Message----- > From: Intel-xe <intel-xe-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Arun R > Murthy > Sent: Tuesday, November 19, 2024 4:15 PM > To: intel-xe@xxxxxxxxxxxxxxxxxxxxx; intel-gfx@xxxxxxxxxxxxxxxxxxxxx; dri- > devel@xxxxxxxxxxxxxxxxxxxxx > Cc: Murthy, Arun R <arun.r.murthy@xxxxxxxxx> > Subject: [PATCH 6/8] drm/i915/histogram: histogram delay counter doesnt > reset > > The delay counter for histogram does not reset and as a result the histogram > bin never gets updated. Workaround would be to use save and restore > histogram register. > Wa: 14014889975 This should be above the Signed-off-by > > Signed-off-by: Arun R Murthy <arun.r.murthy@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_histogram.c | 17 +++++++++++++++++ > .../gpu/drm/i915/display/intel_histogram_regs.h | 1 + > 2 files changed, 18 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c > b/drivers/gpu/drm/i915/display/intel_histogram.c > index cba65f4260cd..fdcc64677e96 100644 > --- a/drivers/gpu/drm/i915/display/intel_histogram.c > +++ b/drivers/gpu/drm/i915/display/intel_histogram.c > @@ -74,6 +74,11 @@ static void intel_histogram_handle_int_work(struct > work_struct *work) > struct intel_display *display = to_intel_display(intel_crtc); > char *histogram_event[] = {"HISTOGRAM=1", NULL}; > > + /* Wa: 14014889975 */ > + if (IS_DISPLAY_VER(display, 12, 13)) We have shifted to using is_display_verx100 so you can use that instead Also there is no display ver 13 just 12 and then 14 so maybe this should be just display_ver == 12 > + intel_de_rmw(display, DPST_CTL(intel_crtc->pipe), > + DPST_CTL_RESTORE, 0); > + > /* > * TODO: PSR to be exited while reading the Histogram data > * Set DPST_CTL Bin Reg function select to TC @@ -94,6 +99,12 @@ > static void intel_histogram_handle_int_work(struct work_struct *work) > "sending HISTOGRAM event failed\n"); > } > > + /* Wa: 14014889975 */ > + if (IS_DISPLAY_VER(display, 12, 13)) > + /* Write the value read from DPST_CTL to DPST_CTL.Interrupt > Delay Counter(bit 23:16) */ > + intel_de_write(display, DPST_CTL(intel_crtc->pipe), > intel_de_read(display, > + DPST_CTL(intel_crtc->pipe)) | > DPST_CTL_RESTORE); > +