svn commit: r185230 - head/sys/dev/sound/pci/hda

Alexander Motin mav at FreeBSD.org
Sun Nov 23 12:19:35 PST 2008


Author: mav
Date: Sun Nov 23 20:19:35 2008
New Revision: 185230
URL: http://svn.freebsd.org/changeset/base/185230

Log:
  Do not use soft PCM volume for digital outputs to allow SPDIF AC3 bypass
  to work. Soft PCM volume (and vchans) unable to bypass AC3 stream now.

Modified:
  head/sys/dev/sound/pci/hda/hdac.c

Modified: head/sys/dev/sound/pci/hda/hdac.c
==============================================================================
--- head/sys/dev/sound/pci/hda/hdac.c	Sun Nov 23 20:17:17 2008	(r185229)
+++ head/sys/dev/sound/pci/hda/hdac.c	Sun Nov 23 20:19:35 2008	(r185230)
@@ -83,7 +83,7 @@
 
 #include "mixer_if.h"
 
-#define HDA_DRV_TEST_REV	"20081122_0117"
+#define HDA_DRV_TEST_REV	"20081123_0118"
 
 SND_DECLARE_FILE("$FreeBSD$");
 
@@ -3549,8 +3549,8 @@ hdac_audio_ctl_ossmixer_init(struct snd_
 		}
 	}
 
-	/* Declare soft PCM and master volume if needed. */
-	if (pdevinfo->play >= 0) {
+	/* Declare soft PCM volume if needed. */
+	if (pdevinfo->play >= 0 && !pdevinfo->digital) {
 		ctl = NULL;
 		if ((mask & SOUND_MASK_PCM) == 0 ||
 		    (devinfo->function.audio.quirks & HDA_QUIRK_SOFTPCMVOL)) {
@@ -3580,8 +3580,12 @@ hdac_audio_ctl_ossmixer_init(struct snd_
 				    (softpcmvol == 1) ? "Forcing" : "Enabling");
 			);
 		}
+	}
 
-		if ((mask & SOUND_MASK_VOLUME) == 0) {
+	/* Declare master volume if needed. */
+	if (pdevinfo->play >= 0) {
+		if ((mask & (SOUND_MASK_VOLUME | SOUND_MASK_PCM)) ==
+		    SOUND_MASK_PCM) {
 			mask |= SOUND_MASK_VOLUME;
 			mix_setparentchild(m, SOUND_MIXER_VOLUME,
 			    SOUND_MASK_PCM);


More information about the svn-src-all mailing list