[alsa-devel] [PATCH] USB-Audio: Add second S/PDIF device on Phiree U2
Takashi Iwai
tiwai at suse.de
Tue Jul 8 12:39:30 CEST 2014
At Tue, 8 Jul 2014 11:19:20 +0300,
Anssi Hannula wrote:
>
> Phiree U2 has an unusual configuration. It only has S/PDIF output, but
> there are still two devices presented:
> - device 0: PCM audio, subject to volume control
> - device 1: non-PCM data (passthrough), not subject to volume control
>
> It looks like the AES bits are set according to the selected device,
> since outputting PCM data via device 1 will not work (silence).
>
> Currently only the device 0 is shown via the "iec958" alias, and the
> second device is not accessible via hinted aliases.
>
> Simply provide access to both of these devices via the "iec958" alias.
>
> Reported-by: touc @ XBMC forum
> Signed-off-by: Anssi Hannula <anssi.hannula at iki.fi>
> ---
>
> This isn't really the optimal solution, but is probably one of the
> simplest (except maybe just using device 1 as the only iec958 device).
>
> I guess the kernel driver (or even config rules with sufficient @func
> support) could select the appropriate device according to AES0, but
> not sure if that is worth the effort?
>
> Also, I'm not 100% sure if this is actually uncommon or if we just
> hide it in on other such devices.
This looks simple enough as a workaround, so I just took it as is.
Maybe Clemens or else has a better way to work around it, though.
thanks,
Takashi
>
>
> src/conf/cards/USB-Audio.conf | 40 ++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 40 insertions(+)
>
> diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf
> index ce3ae01..77a48b9 100644
> --- a/src/conf/cards/USB-Audio.conf
> +++ b/src/conf/cards/USB-Audio.conf
> @@ -52,6 +52,11 @@ USB-Audio.pcm.iec958_device {
> "USB Device 0x46d:0x992" 999
> }
>
> +# Second iec958 device number, if any.
> +USB-Audio.pcm.iec958_2_device {
> + "PHIREE U2" 1 # 0 = PCM S/PDIF, 1 = non-PCM S/PDIF
> +}
> +
>
> # If a device requires non-standard definitions for front, surround40,
> # surround51, surround71 or iec958, they can be defined here.
> @@ -422,4 +427,39 @@ USB-Audio.pcm.iec958.0 {
> }
> }
>
> +USB-Audio.pcm.iec958.1 {
> + @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 }
> + @func refer
> + name {
> + @func concat
> + strings [
> + "cards.USB-Audio."
> + { @func card_name card $CARD }
> + ".pcm.iec958_2:CARD=" $CARD
> + ",AES0=" $AES0 ",AES1=" $AES1 ",AES2=" $AES2 ",AES3=" $AES3
> + ]
> + }
> + default {
> + # FIXME: we cannot set the AES parameters
> + type hw
> + card $CARD
> + device {
> + @func refer
> + name {
> + @func concat
> + strings [
> + "cards.USB-Audio.pcm.iec958_2_device."
> + { @func card_name card $CARD }
> + ]
> + }
> + default 999
> + }
> + }
> +}
> +
> # vim: ft=alsaconf
> --
> 1.8.4.5
>
More information about the Alsa-devel
mailing list