Hi, sorry for the late reply - i overlooked this post.
At Thu, 29 Jan 2004 14:51:34 +0100, Thomas Charbonnel wrote: > > I just had a look and here again there is code in the hdsp driver > directly inherited form the rme9652 driver. There are two competing > spdif bits handling mechanisms there, one hdsp specific dealing directly > with the card registers, and one alsa generic. There clearly is a > problem in that the spdif bits on the card are cleared on playback where > they shouldn't. It would be easy to fix, but I guess that the alsa > generic spdif bits handling code is here for some reason. Jaroslav or > Takashi, could you explain to me how this is supposed to work with alsa > ? I guess there is a plan for a generic spdif bits control interface, > but for now there seems to be nothing. Amixer doesn't even seem to > handle this properly, or does it ? there are ususally two controls for the IEC958 status bits, "IEC958 Playback Default" and "IEC958 Playback PCM Stream". the former defines the "default" iec958 status bits as it name stands. the latter control defines a temporary status of the opened stream. normally, the default value is inherited to the temp value at the open callback, and the temp value will be lost when the PCM is closed. (hence, it doesn't make sense to store/restore "IEC958 Playback PCM Stream" with alsactl although it's harmless.) these controls are often defined with IFACE = PCM. thus, amixer doesn't handle them unless you specify iface explicitly. unfortuantely, not all drivers follow this rule and use IFACE = MIXER because of ease of coding. it's a source of confusion. BTW, you can see/change the default IEC958 status via iecset program in alsa-utils. regarding Jesse's problem: it looks like RME*.conf are broken. does the attached patch work? Takashi
Index: alsa-lib/src/conf/cards/RME9636.conf =================================================================== RCS file: /suse/tiwai/cvs/alsa/alsa-lib/src/conf/cards/RME9636.conf,v retrieving revision 1.2 diff -u -r1.2 RME9636.conf --- alsa-lib/src/conf/cards/RME9636.conf 25 Nov 2002 10:14:18 -0000 1.2 +++ alsa-lib/src/conf/cards/RME9636.conf 5 Feb 2004 14:27:28 -0000 @@ -53,6 +53,7 @@ type ctl_elems hook_args [ { + interface PCM name "IEC958 Playback PCM Stream" lock true value [ $AES0 $AES1 $AES2 $AES3 ] Index: alsa-lib/src/conf/cards/RME9652.conf =================================================================== RCS file: /suse/tiwai/cvs/alsa/alsa-lib/src/conf/cards/RME9652.conf,v retrieving revision 1.2 diff -u -r1.2 RME9652.conf --- alsa-lib/src/conf/cards/RME9652.conf 25 Nov 2002 10:14:18 -0000 1.2 +++ alsa-lib/src/conf/cards/RME9652.conf 5 Feb 2004 14:27:20 -0000 @@ -1,10 +1,10 @@ # -# Configuration for the RME9636 +# Configuration for the RME9652 # <confdir:pcm/front.conf> -RME9636.pcm.front.0 { +RME9652.pcm.front.0 { @args [ CARD ] @args.CARD { type string @@ -18,7 +18,7 @@ <confdir:pcm/iec958.conf> -RME9636.pcm.iec958.0 { +RME9652.pcm.iec958.0 { @args [ CARD AES0 AES1 AES2 AES3 ] @args.CARD { type string @@ -53,6 +53,7 @@ type ctl_elems hook_args [ { + interface PCM name "IEC958 Playback PCM Stream" lock true value [ $AES0 $AES1 $AES2 $AES3 ] Index: alsa-lib/src/conf/cards/aliases.conf =================================================================== RCS file: /suse/tiwai/cvs/alsa/alsa-lib/src/conf/cards/aliases.conf,v retrieving revision 1.4 diff -u -r1.4 aliases.conf --- alsa-lib/src/conf/cards/aliases.conf 27 Nov 2003 16:46:35 -0000 1.4 +++ alsa-lib/src/conf/cards/aliases.conf 5 Feb 2004 14:30:09 -0000 @@ -20,3 +20,4 @@ au8810 cards.AU8810 au8820 cards.AU8820 au8830 cards.AU8830 +'H-DSP' cards.RME9652