Re: [RFC PATCH v1 0/1] ASoC: meson: aiu: HDMI codec control questions and issues

From: Geraldo Nascimento
Date: Sun Oct 03 2021 - 16:34:57 EST


On Sun, Oct 03, 2021 at 11:00:15AM +0400, Christian Hewitt wrote:
>
> > On 3 Oct 2021, at 9:13 am, Geraldo Nascimento <geraldogabriel@xxxxxxxxx> wrote:
> >
> > On Sun, Oct 03, 2021 at 01:43:12AM +0200, Martin Blumenstingl wrote:
> >> Hello Jerome et al.,
> >>
> >> on Amlogic Meson SoCs which use the AIU audio controller we have the
> >> so-called "machine gun noise" (MGN) issue, reproducible for example in
> >> Kodi. So far nobody was able to identify the cause of this issue. My
> >> idea was to at least narrow down the issue so we can categorize it. For
> >> that I wanted to get the SPDIF output from AIU to the HDMI controller
> >> working.
> >>
> >
> > Hi, Martin,
> >
> > The MGN issue surely must be that one when using ALSA directly
> > (no dmix, no JACK, no Pulseaudio, no Pipewire, no nothing) and
> > when the track changes or we pause it, when it resumes we get
> > noise instead of sound, correct?
> >
> > If so, thanks for trying to track this down!
> >
> > I bring it up because Googling it seems to head straight to a
> > Neil Armstrong post to linux-amlogic about what works and what
> > doesn't on linux-meson currently, and only if you dig deeper
> > you find a couple of reports apparently by the same person
> > about the "machine gun noise" thing.
> >
> > It doesn't sound like a machine gun noise to me :)
> >
> > More like brown noise, but anyway what I'd like to note to
> > everyone involved is that this one is a major dealbreaker.
> > Unless using JACK, Pulseaudio, Pipewire (?) or at least dmix
> > audio will degrade at the second song or when the user first
> > pauses and then resumes a stream, completely ruining the
> > experience.
>
>
> I’m the origin of most reports that Google will eventually
> discover. I was told elsewhere that this is known as MGN so
> I’ve described it as such, but that could be wrong. For
> clarity this is the noise (triggered, and with AVR volume
> deliberately right down) followed by some navigation in the
> Kodi GUI to change output:
>
> https://chewitt.libreelec.tv/testing/wp2_audio_noise.mov
>

Hi, Christian,

Thanks for the video.

> In the LibreELEC images I work on where this occurs it’s not
> something I associate with play/pause (although I can’t
> definitively rule it out) or second or third songs
> (not something that happens that often or predictably) but
> more when there’s a hard transition like starting or
> stopping playback. I hit it most with simple scrolling around
> in the Kodi GUI, although that could be because (due to this issue)
> I limit media playback testing on AIU devices. It’s particularly
> simple to trigger from the Kodi Settings > System > Audio page,
> just scroll around it for 10-30 seconds, which is handy because
> the only way to stop the noise is switching audio source (from
> anything to anything) on the same page.
>
> CH.
>

I wasn't able to reproduce the bug by simply scrolling around. On
the other hand, once I flipped the Send Low Volume Noise switch
to off, all hell broke loose!

This is one show-stopper bug, and I empathize to how particularly
nasty this must be for a "Just enough Linux for Kodi" approach.

But I also see Jerome Brunet has already clarified the subject in
response to Martin Blumenstingl's original post.

Thank you,
Geraldo Nascimento


> >> On Amlogic Meson GXBB/GXL/GXM SoCs a DesignWare HDMI TX controller is
> >> used. This has an SPDIF input but there's currently not driver for it.
> >> On Meson8/8b/8m2 SoCs I am working on a HDMI driver for the TransSwitch
> >> HDMI controller which - just like DesignWare HDMI TX - supports SPDIF
> >> and I2S inputs.
> >> I decided to add SPDIF support to the latter since the code from the
> >> vendor driver is much easier.
> >>
> >> It took me a while to figure out why I would not get any audio output
> >> from AIU SPDIF to the HDMI controller - or from there to the sink.
> >> The "fix" for this issue is the RFC patch which is part of this series.
> >> Any feedback would be great as I am still new to the ASoC subsystem.
> >>
> >> Another part I am still struggling with is the audio "routing" (due to
> >> lack of a better term - please correct me if this is not the right word
> >> to use for this case). I have the following description in my .dts:
> >> sound {
> >> compatible = "amlogic,gx-sound-card";
> >> model = "M8B-ODROID-C1";
> >>
> >> assigned-clocks = <&clkc CLKID_MPLL0>,
> >> <&clkc CLKID_MPLL1>;
> >> assigned-clock-rates = <294912000>,
> >> <270950400>;
> >> dai-link-0 {
> >> sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
> >> };
> >>
> >> dai-link-1 {
> >> sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
> >> };
> >>
> >> dai-link-2 {
> >> sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
> >> dai-format = "i2s";
> >> mclk-fs = <256>;
> >>
> >> codec-0 {
> >> sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
> >> };
> >> };
> >>
> >> dai-link-3 {
> >> sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
> >>
> >> codec-0 {
> >> sound-dai = <&aiu AIU_HDMI CTRL_PCM>;
> >> };
> >> };
> >>
> >> dai-link-4 {
> >> sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
> >>
> >> codec-0 {
> >> sound-dai = <&hdmi_tx>;
> >> };
> >> };
> >> };
> >> The driver for &hdmi_tx defines:
> >> struct hdmi_codec_pdata pdata = {
> >> .ops = &txc_48352_hdmi_codec_ops,
> >> .i2s = 1,
> >> .spdif = 1,
> >> .max_i2s_channels = 8,
> >> .data = priv,
> >> };
> >> In hdmi_codec_ops.hw_params I always get fmt->fmt HDMI_I2S unless I
> >> remove all I2S references from the .dts snipped above (only then
> >> HDMI_SPDIF is detected). Based on the selection of the "HDMI Source"
> >> enum in aiu-codec-ctrl I was expecting the format to update as well.
> >> That unfortunately doesn't happen and I don't know how that can be
> >> achieved.
> >>
> >
> > Hm, that sounds weird. I hope you get the answers you are looking for.
> >
> > Thanks,
> > Geraldo Nascimento
> >
> >>
> >> Best regards,
> >> Martin
> >>
> >>
> >> Martin Blumenstingl (1):
> >> ASoC: meson: aiu: Fix HDMI codec control selection
> >>
> >> sound/soc/meson/aiu-codec-ctrl.c | 108 ++++++++++++++++++++++--------
> >> sound/soc/meson/aiu-encoder-i2s.c | 6 --
> >> 2 files changed, 80 insertions(+), 34 deletions(-)
> >>
> >> --
> >> 2.33.0
> >>
> >
>