All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Uma Shankar <uma.shankar@intel.com>,
	intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: chaitanya.kumar.borah@intel.com, matthew.d.roper@intel.com,
	Uma Shankar <uma.shankar@intel.com>
Subject: Re: [v3] drm/i915: Implement Audio WA_14020863754
Date: Tue, 07 May 2024 13:42:29 +0300	[thread overview]
Message-ID: <87frutlx7u.fsf@intel.com> (raw)
In-Reply-To: <20240506101817.2590328-1-uma.shankar@intel.com>

On Mon, 06 May 2024, Uma Shankar <uma.shankar@intel.com> wrote:
> WA_14020863754: Corner case with Min Hblank Fix can cause
> audio hang
>
> Issue: Previously a fix was made to avoid issues with extremely
> small hblanks, called the "Min Hblank Fix". However, this can
> potentially cause an audio hang.
>
> Workaround :
> During "Audio Programming Sequence" Audio Enabling -
> When DP mode is enabled Set mmio offset 0x65F1C bit 18 = 1b,
> before step #1 "Enable audio Presence Detect"
>
> During "Audio Programming Sequence" Audio Disabling -
> When DP mode is enabled Clear mmio offset 0x65F1C bit 18 = 0b,
> after step #6 "Disable Audio PD (Presence Detect)"
> If not clearing PD bit, must also not clear 0x65F1C bit 18 (leave = 1b)
>
> v2: Update the platform checks (Jani Nikula)
>
> v3: Limited the WA to LNL and BMG, added a helper (Matt Roper)
>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_audio.c     | 18 ++++++++++++++++++
>  .../gpu/drm/i915/display/intel_audio_regs.h    |  3 +++
>  2 files changed, 21 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
> index ed81e1466c4b..cb055c16dd98 100644
> --- a/drivers/gpu/drm/i915/display/intel_audio.c
> +++ b/drivers/gpu/drm/i915/display/intel_audio.c
> @@ -183,6 +183,18 @@ 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 drm_i915_private *i915)
> +{
> +	if (DISPLAY_VER(i915) == 20 || IS_BATTLEMAGE(i915))

Why do we need to check for both display version and the platform?
Especially weird that it's || and not &&.

> +		return true;
> +
> +	return false;

The whole function is just "return ver == 20 || is_bmg", there's no need
to have the if and two different return locations.

BR,
Jani.


> +}
> +
>  /* get AUD_CONFIG_PIXEL_CLOCK_HDMI_* value for mode */
>  static u32 audio_config_hdmi_pixel_clock(const struct intel_crtc_state *crtc_state)
>  {
> @@ -415,6 +427,9 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder,
>  	intel_de_rmw(i915, HSW_AUD_PIN_ELD_CP_VLD,
>  		     AUDIO_OUTPUT_ENABLE(cpu_transcoder), 0);
>  
> +	if (needs_wa_14020863754(i915))
> +		intel_de_rmw(i915, AUD_CHICKENBIT_REG3, CHICKEN3_SPARE18, 0);
> +
>  	mutex_unlock(&i915->display.audio.mutex);
>  }
>  
> @@ -540,6 +555,9 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
>  	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP))
>  		enable_audio_dsc_wa(encoder, crtc_state);
>  
> +	if (needs_wa_14020863754(i915))
> +		intel_de_rmw(i915, AUD_CHICKENBIT_REG3, 0, CHICKEN3_SPARE18);
> +
>  	/* Enable audio presence detect */
>  	intel_de_rmw(i915, HSW_AUD_PIN_ELD_CP_VLD,
>  		     0, AUDIO_OUTPUT_ENABLE(cpu_transcoder));
> diff --git a/drivers/gpu/drm/i915/display/intel_audio_regs.h b/drivers/gpu/drm/i915/display/intel_audio_regs.h
> index 88ea2740365d..7de82cd3380e 100644
> --- a/drivers/gpu/drm/i915/display/intel_audio_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_audio_regs.h
> @@ -164,4 +164,7 @@
>  							 _VLV_AUD_PORT_EN_D_DBG)
>  #define VLV_AMP_MUTE		        (1 << 1)
>  
> +#define AUD_CHICKENBIT_REG3		_MMIO(0x65F1C)
> +#define  CHICKEN3_SPARE18		REG_BIT(18)
> +
>  #endif /* __INTEL_AUDIO_REGS_H__ */

-- 
Jani Nikula, Intel

  parent reply	other threads:[~2024-05-07 10:42 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-06 10:18 [v3] drm/i915: Implement Audio WA_14020863754 Uma Shankar
2024-05-06 10:15 ` ✓ CI.Patch_applied: success for drm/i915: Implement Audio WA_14020863754 (rev3) Patchwork
2024-05-06 10:15 ` ✓ CI.checkpatch: " Patchwork
2024-05-06 10:16 ` ✓ CI.KUnit: " Patchwork
2024-05-06 10:29 ` ✓ CI.Build: " Patchwork
2024-05-06 10:38 ` ✓ CI.Hooks: " Patchwork
2024-05-06 10:39 ` ✗ CI.checksparse: warning " Patchwork
2024-05-06 11:08 ` ✓ CI.BAT: success " Patchwork
2024-05-06 11:20 ` ✓ Fi.CI.BAT: " Patchwork
2024-05-06 12:37 ` ✗ CI.FULL: failure " Patchwork
2024-05-06 15:05 ` ✗ Fi.CI.IGT: " Patchwork
2024-05-07  8:17 ` [v3] drm/i915: Implement Audio WA_14020863754 Borah, Chaitanya Kumar
2024-05-07  9:35   ` Shankar, Uma
2024-05-07 10:42 ` Jani Nikula [this message]
2024-05-07 10:59   ` Shankar, Uma

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87frutlx7u.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=chaitanya.kumar.borah@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=matthew.d.roper@intel.com \
    --cc=uma.shankar@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.