Re: [PATCH] ALSA: hda/hdmi: Enable HBR capability
From: Takashi Iwai
Date: Mon Oct 19 2026 - 04:48:54 EST
On Mon, 19 Oct 2026 04:16:31 +0200,
Aaron Kling via B4 Relay wrote:
>
> From: Aaron Kling <webgeek1234@xxxxxxxxx>
>
> Tegra HDA does not set the HBR capability bit, however every SoC since
> Tegra114 does support HBR. Override the hbr setup function for these
> SoCs to unconditionally enable the feature. Since Tegra30 does not
> support HBR, this function will report invalid on that SoC.
>
> Signed-off-by: Aaron Kling <webgeek1234@xxxxxxxxx>
> ---
> Before this, any attempt to open an hbr stream resulted in a rejection
> on Tegra hardware. Looking at the downstream support, that just bypassed
> the capbility check for all supported Tegra hardware in the common code.
> This replicates that in a driver specific hook.
>
> This has been tested on a SHIELD TV 2019 Pro trying to bitstream an
> Atmos demo video. It attempts to play, but mostly just underruns the
> entire time, with a few spurts of correct noise. My expectation is that
> issue is userspace, since that is a WIP android audio hal. But even if
> there are more kernel problems, this should be correct as a standalone
> change.
> ---
> sound/hda/codecs/hdmi/tegrahdmi.c | 37 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/sound/hda/codecs/hdmi/tegrahdmi.c b/sound/hda/codecs/hdmi/tegrahdmi.c
> index ebb6410a48313..c4d8d8a570542 100644
> --- a/sound/hda/codecs/hdmi/tegrahdmi.c
> +++ b/sound/hda/codecs/hdmi/tegrahdmi.c
> @@ -227,6 +227,41 @@ static int nvhdmi_chmap_validate(struct hdac_chmap *chmap,
> return 0;
> }
>
> +static int tegrahdmi_pin_hbr_setup(struct hda_codec *codec, hda_nid_t pin_nid,
> + int dev_id, bool hbr)
> +{
> + int pinctl, new_pinctl;
> +
> + // Tegra 3 does not support HBR
> + if (codec->core.vendor_id == 0x10de0020)
> + return -EINVAL;
I guess this will break the HDMI on old Tegra.
Better to enable pin_hbr_setup conditionally for newer chips below, so
that the older chip continues to work without HBR.
> + spec->ops.pin_hbr_setup = tegrahdmi_pin_hbr_setup;
thanks,
Takashi