Re: [PATCH] ALSA: hda/hdmi: Enable HBR capability
From: Aaron Kling
Date: Mon Oct 19 2026 - 13:42:10 EST
On Mon, Oct 19, 2026 at 3:47 AM Takashi Iwai <tiwai@xxxxxxx> wrote:
>
> 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.
Mmm. I was trying to replicate what the default version of this
function does when hbr isn't supported, but it does look like I missed
part of it. Blocking the override entirely is simpler, will do in a
new revision.
Aaron
>
> > + spec->ops.pin_hbr_setup = tegrahdmi_pin_hbr_setup;
>
>
> thanks,
>
> Takashi