> -----Original Message-----
> From: Intel-gfx <[email protected]> On Behalf Of
> Kandpal, Suraj
> Sent: Tuesday, February 17, 2026 11:10 AM
> To: Coelho, Luciano <[email protected]>; intel-
> [email protected]
> Cc: [email protected]
> Subject: RE: [PATCH v3 02/16] drm/i915/display: convert audio workaround to
> new framework
>
> > Subject: [PATCH v3 02/16] drm/i915/display: convert audio workaround
> > to new framework
> >
> > Convert the low-hanging fruits of workaround checks to the workaround
> > framework. Instead of having display structure checks for the
> > workarounds all over, concentrate the checks in intel_display_wa.c.
> >
> > Acked-by: Jani Nikula <[email protected]>
> > Signed-off-by: Luca Coelho <[email protected]>
>
> LGTM,
> Reviewed-by: Suraj Kandpal <[email protected]>
>
Before merging make sure you fix the checkpatch issues
Regards,
Suraj Kandpal
> > ---
> > drivers/gpu/drm/i915/display/intel_audio.c | 24 +++++++++----------
> > .../gpu/drm/i915/display/intel_display_wa.c | 4 ++++
> > .../gpu/drm/i915/display/intel_display_wa.h | 1 +
> > 3 files changed, 16 insertions(+), 13 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_audio.c
> > b/drivers/gpu/drm/i915/display/intel_audio.c
> > index 5f3c175afdd2..9a7d9cf3d571 100644
> > --- a/drivers/gpu/drm/i915/display/intel_audio.c
> > +++ b/drivers/gpu/drm/i915/display/intel_audio.c
> > @@ -37,6 +37,7 @@
> > #include "intel_crtc.h"
> > #include "intel_de.h"
> > #include "intel_display_types.h"
> > +#include "intel_display_wa.h"
> > #include "intel_lpe_audio.h"
> >
> > /**
> > @@ -184,17 +185,6 @@ static const struct hdmi_aud_ncts
> > hdmi_aud_ncts_36bpp[] = {
> > { 192000, TMDS_445_5M, 20480, 371250 }, };
> >
> > -/*
> > - * WA_14020863754: Implement Audio Workaround
> > - * Corner case with Min Hblank Fix can cause audio hang
> > - */
> > -static bool needs_wa_14020863754(struct intel_display *display) -{
> > - return DISPLAY_VERx100(display) == 3000 ||
> > - DISPLAY_VERx100(display) == 2000 ||
> > - DISPLAY_VERx100(display) == 1401;
> > -}
> > -
> > /* get AUD_CONFIG_PIXEL_CLOCK_HDMI_* value for mode */ static u32
> > audio_config_hdmi_pixel_clock(const struct intel_crtc_state
> > *crtc_state) { @@
> > -440,7 +430,11 @@ static void hsw_audio_codec_disable(struct
> > intel_encoder *encoder,
> > intel_de_rmw(display, HSW_AUD_PIN_ELD_CP_VLD,
> > AUDIO_OUTPUT_ENABLE(cpu_transcoder), 0);
> >
> > - if (needs_wa_14020863754(display))
> > + /*
> > + * WA_14020863754: Implement Audio Workaround
> > + * Corner case with Min Hblank Fix can cause audio hang
> > + */
> > + if (intel_display_wa(display, INTEL_DISPLAY_WA_14020863754))
> > intel_de_rmw(display, AUD_CHICKENBIT_REG3,
> > DACBE_DISABLE_MIN_HBLANK_FIX, 0);
> >
> > intel_audio_sdp_split_update(old_crtc_state, false); @@ -572,7
> > +566,11 @@ static void hsw_audio_codec_enable(struct intel_encoder
> > *encoder,
> >
> > intel_audio_sdp_split_update(crtc_state, true);
> >
> > - if (needs_wa_14020863754(display))
> > + /*
> > + * WA_14020863754: Implement Audio Workaround
> > + * Corner case with Min Hblank Fix can cause audio hang
> > + */
> > + if (intel_display_wa(display, INTEL_DISPLAY_WA_14020863754))
> > intel_de_rmw(display, AUD_CHICKENBIT_REG3, 0,
> > DACBE_DISABLE_MIN_HBLANK_FIX);
> >
> > /* Enable audio presence detect */
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.c
> > b/drivers/gpu/drm/i915/display/intel_display_wa.c
> > index 1d8340b36c01..b383bfad3af6 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_wa.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display_wa.c
> > @@ -74,6 +74,10 @@ bool __intel_display_wa(struct intel_display
> > *display, enum intel_display_wa wa,
> > DISPLAY_VERx100(display) == 3500;
> > case INTEL_DISPLAY_WA_14011503117:
> > return DISPLAY_VER(display) == 13;
> > + case INTEL_DISPLAY_WA_14020863754:
> > + return DISPLAY_VERx100(display) == 3000 ||
> > + DISPLAY_VERx100(display) == 2000 ||
> > + DISPLAY_VERx100(display) == 1401;
> > case INTEL_DISPLAY_WA_14025769978:
> > return DISPLAY_VER(display) == 35;
> > case INTEL_DISPLAY_WA_15018326506:
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.h
> > b/drivers/gpu/drm/i915/display/intel_display_wa.h
> > index 06c1f62c0f6d..b1bcc18dd2c8 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_wa.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_wa.h
> > @@ -29,6 +29,7 @@ bool intel_display_needs_wa_16023588340(struct
> > intel_display *display); enum intel_display_wa {
> > INTEL_DISPLAY_WA_13012396614,
> > INTEL_DISPLAY_WA_14011503117,
> > + INTEL_DISPLAY_WA_14020863754,
> > INTEL_DISPLAY_WA_14025769978,
> > INTEL_DISPLAY_WA_15018326506,
> > INTEL_DISPLAY_WA_16023588340,
> > --
> > 2.51.0