[PATCH 6/8] drm/i915/histogram: histogram delay counter doesnt reset
Murthy, Arun R
arun.r.murthy at intel.com
Thu Nov 21 12:04:37 UTC 2024
> > -----Original Message-----
> > From: Intel-xe <intel-xe-bounces at lists.freedesktop.org> On Behalf Of
> > Arun R Murthy
> > Sent: Tuesday, November 19, 2024 4:15 PM
> > To: intel-xe at lists.freedesktop.org; intel-gfx at lists.freedesktop.org;
> > dri- devel at lists.freedesktop.org
> > Cc: Murthy, Arun R <arun.r.murthy at intel.com>
> > 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 at intel.com>
> > ---
> > 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
>
HSD mentioned above says display ver 13 ADL.
The commit 5eb2e7855910561a07d4cedf9c898624899b057b changes IS_DISPLAY_VER_FULL to IS_DISPLAY_VERx100
Here we are using IS_DISPLAY_VER()
>
> > + 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);
> > +
>
> From the WA it seems we need to write 0 in the above Guardband Interrupt
> Delay Counter (bits 23:16) when servicing interrupts And only write value read
> from dpst_ctl when enabling dpst_config or doing an adjustment
>
Done!
Thanks and Regards,
Arun R Murthy
--------------------
More information about the dri-devel
mailing list