Re: [linux-sunxi] Re: Audio sound card name [was [PATCH 4/7] arm64: dts: allwinner: a64: Add HDMI audio]

From: Maxime Ripard
Date: Wed Apr 29 2020 - 07:46:34 EST


On Wed, Apr 29, 2020 at 12:53:49PM +0200, Jernej Åkrabec wrote:
> Dne sreda, 29. april 2020 ob 12:43:06 CEST je Robin Murphy napisal(a):
> > On 2020-04-29 9:17 am, Maxime Ripard wrote:
> > > On Wed, Apr 29, 2020 at 02:24:00PM +0800, Chen-Yu Tsai wrote:
> > >> On Wed, Apr 29, 2020 at 1:11 AM Robin Murphy <robin.murphy@xxxxxxx>
> wrote:
> > >>> On 2020-04-28 5:49 pm, ClÃment PÃron wrote:
> > >>>> Hi Mark, Rob,
> > >>>>
> > >>>> On Tue, 28 Apr 2020 at 18:04, Maxime Ripard <maxime@xxxxxxxxxx> wrote:
> > >>>>> On Tue, Apr 28, 2020 at 10:54:00AM +0200, ClÃment PÃron wrote:
> > >>>>>> Hi Maxime,
> > >>>>>>
> > >>>>>> On Tue, 28 Apr 2020 at 10:00, Maxime Ripard <maxime@xxxxxxxxxx>
> wrote:
> > >>>>>>> On Sun, Apr 26, 2020 at 02:04:39PM +0200, ClÃment PÃron wrote:
> > >>>>>>>> From: Marcus Cooper <codekipper@xxxxxxxxx>
> > >>>>>>>>
> > >>>>>>>> Add a simple-soundcard to link audio between HDMI and I2S.
> > >>>>>>>>
> > >>>>>>>> Signed-off-by: Jernej Skrabec <jernej.skrabec@xxxxxxxx>
> > >>>>>>>> Signed-off-by: Marcus Cooper <codekipper@xxxxxxxxx>
> > >>>>>>>> Signed-off-by: ClÃment PÃron <peron.clem@xxxxxxxxx>
> > >>>>>>>> ---
> > >>>>>>>>
> > >>>>>>>> arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 21
> > >>>>>>>> +++++++++++++++++++
> > >>>>>>>> 1 file changed, 21 insertions(+)
> > >>>>>>>>
> > >>>>>>>> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > >>>>>>>> b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi index
> > >>>>>>>> e56e1e3d4b73..08ab6b5e72a5 100644
> > >>>>>>>> --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > >>>>>>>> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > >>>>>>>> @@ -102,6 +102,25 @@
> > >>>>>>>>
> > >>>>>>>> status = "disabled";
> > >>>>>>>>
> > >>>>>>>> };
> > >>>>>>>>
> > >>>>>>>> + hdmi_sound: hdmi-sound {
> > >>>>>>>> + compatible = "simple-audio-card";
> > >>>>>>>> + simple-audio-card,format = "i2s";
> > >>>>>>>> + simple-audio-card,name = "allwinner,hdmi";
> > >>>>>>>
> > >>>>>>> I'm not sure what the usual card name should be like though. I would
> > >>>>>>> assume that this should be something specific enough so that you're
> > >>>>>>> able to differentiate between boards / SoC so that the userspace
> > >>>>>>> can choose a different configuration based on it?
> > >>>>>>
> > >>>>>> I really don't know what we should use here,
> > >>>>>> I just have a look at other SoC:
> > >>>>>> rk3328: "HDMI"
> > >>>>>> rk3399: "hdmi-sound"
> > >>>>>> r8a774c0-cat874: "CAT874 HDMI sound"
> > >>>>>>
> > >>>>>> But maybe it's time to introduce proper name:
> > >>>>>> What about :
> > >>>>>> pat
> > >>>>>> sun50i-h6-hdmi
> > >>>>>
> > >>>>> It's pretty much what we've been using for the other sound cards we
> > >>>>> have, so it makes sense to me.
> > >>>>
> > >>>> I have a question regarding the simple-audio-card,name.
> > >>>> In this patch, I would like to introduce a simple-audio-card for the
> > >>>> Allwinner A64 HDMI.
> > >>>>
> > >>>> What should be the preferred name for this sound card?
> > >>>> "sun50i-a64-hdmi" ? "allwinner, sun50i-a64-hdmi" ?
> > >>>
> > >>> I can at least speak for RK3328, and the reasoning there was that as the
> > >>> user looking at what `aplay -l` says, I don't give a hoot about what the
> > >>> SoC may be called, I see two cards and I want to know, with the least
> > >>> amount of uncertainty, which one will make the sound come out of the
> > >>> port that's labelled "HDMI" on the box ;)
> > >>
> > >> I agree. The user really doesn't care what SoC the system uses. The only
> > >> real requirement is to be able to tell which output the card is related
> > >> to, i.e. is it onboard or an external DAC, is it analog or HDMI, etc..
> > >
> > > Yeah, but it's exactly the point.
> > >
> > > If we also end up with "HDMI" as our card name, then the userspace has no
> > > way to tell anymore if it's running from an rk3328 or an allwinner SoC,
> > > or something else entirely. And therefore it cannot really configure
> > > anything to work out of the box anymore.
> >
> > OK, you're a userspace audio application - enlighten me as to what exact
> > chip you're running on here, and why you need to know:
> >
> > card 0: HDMI [HDA ATI HDMI]
> >
> > or how about here?
> >
> > card 0: Intel [HDA Intel]
> >
> >
> > Furthermore, your argument works both ways - if the equivalent (or in
> > common cases like DesignWare IP blocks, exact same) thing across 3
> > different SoCs has 3 different names, then it's that much harder for
> > userspace that wants to present a consistent behaviour. I don't know
> > exactly why LibreELEC have downstream patches that standardise all the
> > Rockchip ones to "HDMI", but I can't help noting that they do.
> >
> > With simple-audio-card we're talking about trivial interfaces that often
> > don't expose any controls at all, so there's unlikely to be much
> > 'configuration' for userspace to do beyond choosing which card to output to.
>
> Only difference is slightly different version of HDMI controller and different
> This combination (DesignWare HDMI controller + I2S) is same as on Rockchip.
> I2S core.

Well, that fact only is already information that is not carried on to the
userspace. Think about it this way: let's say you run Debian, you just installed
it without any configuration, and you don't have any knowledge about the
hardware, you're just a user. Can the OS know how to configure that output based
on the card name "HDMI" alone?

HDMI is an easy one compared to the i2s + codec combinations we might have, but
it already has some interesting differences between hardwares. For example, the
RPi iirc needs an IEC958 format, while this one works just fine with a standard
PCM format.

Maxime

Attachment: signature.asc
Description: PGP signature