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

From: Martin Blumenstingl
Date: Tue Oct 05 2021 - 17:31:46 EST


Hi Jerome,

On Mon, Oct 4, 2021 at 11:17 PM Martin Blumenstingl
<martin.blumenstingl@xxxxxxxxxxxxxx> wrote:
[...]
> > This bit could also be a remain of an older design, not really connected
> > to anything meaningful. It would not be the first time.
> >
> > The AIU looks like an IP that has evolved a lot over the years, not always
> > in a coordinated fashion. Some scenario are well supported and easy,
> > others seem to require a magic spell.
> >
> > Last (but not least), in AML vendor kernel, the only time this bit poked
> > is around 8ch support (1 for 8ch, 0 otherwise) ... I have no idea why.
> The 32-bit SoCs use SPDIF to feed 2-channel audio to the HDMI TX
> controller and I2S to feed 8-channel audio to the HDMI TX controller.
> It seems that Amlogic stopped this for (at least some) 64-bit SoCs.
>
> My testing results indicate that AIU_CLK_CTRL_MORE[6] is still relevant.
> I can do another round of testing with various combinations of
> AIU_CLK_CTRL_MORE[6] and AIU_HDMI_CLK_DATA_CTRL register values.
> If you want me to test any specific combinations then please let me know.
I have tested various combinations, see the attached result file
(which can be viewed with "column -t /path/to/results.txt").
The short summary is that...
...I2S output requires:
AIU_HDMI_CLK_DATA_CTRL[1:0] = 0x2
AIU_HDMI_CLK_DATA_CTRL[5:4] = 0x2
AIU_CLK_CTRL_MORE[6] = 0x1

...SPDIF output requires:
AIU_HDMI_CLK_DATA_CTRL[1:0] = 0x2
AIU_HDMI_CLK_DATA_CTRL[5:4] = (any)
AIU_CLK_CTRL_MORE[6] = 0x1

My test consisted of running speaker-test -c2 and playing an mp3 with
ffplay on an Odroid-C1.

In other words: this confirms what we have suspected before.
What is your suggestion on how to model these muxes in the driver?

In the meantime I finally understood what #sound-dai-cells = <1>; does
thanks to your previous hints.
With that I can wire up the I2S and SPDIF inputs to the HDMI TX
controller's "HDMI codec".
Many thanks again for this hint!


Best regards,
Martin
AIU_HDMI_CLK_DATA_CTRL[1:0] AIU_HDMI_CLK_DATA_CTRL[5:4] AIU_CLK_CTRL_MORE[6] I2S SPDIF
(CTRL_CLK_SEL) (CTRL_DATA_SEL) (AMCLK) (I2S) (SPDIF)
0x0 0x0 0x0 silence silence
0x0 0x0 0x1 silence silence
0x2 0x0 0x0 silence playback
0x2 0x0 0x1 silence silence
0x2 0x2 0x1 playback silence
0x2 0x2 0x0 silence playback