[alsa-devel] [RESEND PATCH] conf/cards: add VC4-HDMI card

Takashi Iwai tiwai at suse.de
Mon Apr 10 14:19:18 CEST 2017


On Mon, 10 Apr 2017 14:09:11 +0200,
Boris Brezillon wrote:
> 
> Eric, Takashi,
> 
> On Fri, 07 Apr 2017 10:20:20 -0700
> Eric Anholt <eric at anholt.net> wrote:
> 
> > Takashi Iwai <tiwai at suse.de> writes:
> > 
> > > On Thu, 06 Apr 2017 21:46:29 +0200,
> > > Eric Anholt wrote:  
> > >> 
> > >> Takashi Iwai <tiwai at suse.de> writes:
> > >>   
> > >> > On Thu, 02 Mar 2017 11:49:33 +0100,
> > >> > Boris Brezillon wrote:  
> > >> >> 
> > >> >> Add a conf file for the VC4-HDMI sound card.
> > >> >> 
> > >> >> Signed-off-by: Boris Brezillon <boris.brezillon at free-electrons.com>
> > >> >> ---
> > >> >> Hi,
> > >> >> 
> > >> >> Sorry for the noise, but I didn't send this patch to the alsa-lib
> > >> >> maintainer on my first attempt.
> > >> >> 
> > >> >> This patch is adding a card config file for the audio sound card whose
> > >> >> driver has been submitted here [1] (not accepted yet).
> > >> >> 
> > >> >> Since I am a total newbie to the alsa world, I'd like to get some
> > >> >> feedback on this patch.
> > >> >> 
> > >> >> Also, the card only supports 2 to 8 channels, and I wonder if we should
> > >> >> add a plug element to support mono streams, and where this element
> > >> >> should be added (after or before the iec958 element).  
> > >> >
> > >> > Applied, thanks.  
> > >> 
> > >> Thanks!
> > >> 
> > >> Any recommendations on how to restructure this so that things like
> > >> 'aplay' from the console also work by default?  
> > >
> > > Well, once after you have your card config in
> > > /usr/share/alsa/cards/vc4-hdmi.conf, aplay should work as is.
> > >
> > > If not, check /proc/asounds output.  The entry looks like
> > >  0 [ID            ]: DRIVER - SHORTNAME
> > >                      LONGNAME
> > >
> > > and in your case, "DRIVER" must be "vc4-hdmi", as same as the config
> > > file name.  
> > 
> > It doesn't work as is -- the default ends up not having iec958
> > conversion, so nothing will play.  You can do aplay -D iec958, which
> > works but only as long as you've got stereo input (it seems plug can't
> > do mono-to-stereo on iec958 data)
> 
> Sorry for being so silent during the past weeks, but I've been busy
> with other things and was on vacation last week.

Thanks for joining.  I was also slow just because I've been sick and
off in the last week :-<  Now getting recovered, and resuming the
task...

> As Eric explained, we're looking for advices on how to best expose
> the sound card so that it can be easily used by end-users without
> requiring advanced options (like -D iec958) or conf tweaking (like
> declaring an extra plug element before the iec958 one to convert from
> mono to stereo and then using -D iec958-mono).
> 
> Takashi, what do you suggest? Is it possible/acceptable to make iec958
> the default for this card? What about implicit/automatic mono-to-stereo
> conversion, is it achievable?

Now I looked at your config again, and one likely problem is that you
wrap plug *before* iec958 plugin.

vc4-hdmi.pcm.iec958.0 {
.....
	type iec958
	slave {
		format IEC958_SUBFRAME_LE
		pcm {
			type plug
			slave.pcm {
				type hw
				card $CARD
			}
		}
	}
	status [ $AES0 $AES1 $AES2 $AES3 ]
}

Why do you need to wrap with plug there?  Instead, it should be
accessing directly to hw, i.e.

vc4-hdmi.pcm.iec958.0 {
	@args [ CARD AES0 AES1 AES2 AES3 ]
	@args.CARD {
		type string
	}
	@args.AES0 {
		type integer
	}
	@args.AES1 {
		type integer
	}
	@args.AES2 {
		type integer
	}
	@args.AES3 {
		type integer
	}
	type iec958
	slave {
		format IEC958_SUBFRAME_LE
		pcm {
			type hw
			card $CARD
		}
	}
	status [ $AES0 $AES1 $AES2 $AES3 ]
}

Then the plug above this plugin should work.

   % aplay -D plug:hdmi foo.wav


(Note that plug over plug doesn't work -- that's the likely reason it
 failed before.)


Then, about the default PCM: I wonder whether the dmix is feasible at
all with this kind of setup.  What format does work with this device?


Takashi


More information about the Alsa-devel mailing list