summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2008-11-23 20:19:35 +0000
committermav <mav@FreeBSD.org>2008-11-23 20:19:35 +0000
commit954a204664fb098a6a9c46c96fa9fdcfbe71fe0f (patch)
treefa741a68374a57c047560c9e6f35747e58e98e86 /sys/dev/sound
parent2d953c4a30798a56ea401da23730a2d89bc5e4e1 (diff)
downloadFreeBSD-src-954a204664fb098a6a9c46c96fa9fdcfbe71fe0f.zip
FreeBSD-src-954a204664fb098a6a9c46c96fa9fdcfbe71fe0f.tar.gz
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.
Diffstat (limited to 'sys/dev/sound')
-rw-r--r--sys/dev/sound/pci/hda/hdac.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/sound/pci/hda/hdac.c b/sys/dev/sound/pci/hda/hdac.c
index dfd6cb1..0b71e8a 100644
--- a/sys/dev/sound/pci/hda/hdac.c
+++ b/sys/dev/sound/pci/hda/hdac.c
@@ -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_mixer *m)
}
}
- /* 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_mixer *m)
(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);
OpenPOWER on IntegriCloud