diff options
author | mav <mav@FreeBSD.org> | 2008-11-23 20:19:35 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2008-11-23 20:19:35 +0000 |
commit | 954a204664fb098a6a9c46c96fa9fdcfbe71fe0f (patch) | |
tree | fa741a68374a57c047560c9e6f35747e58e98e86 /sys/dev | |
parent | 2d953c4a30798a56ea401da23730a2d89bc5e4e1 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/dev/sound/pci/hda/hdac.c | 12 |
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); |