summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2010-01-22 09:54:40 +0000
committermav <mav@FreeBSD.org>2010-01-22 09:54:40 +0000
commit60e3675f0f5409e8e8f9197d0c16922f9d7b8b34 (patch)
treea7e706db9ca14dc4b25201fcbd3924bdaf783ec8 /sys/dev/sound
parent78aea9179aef0121c4ac06dae7a3a0a0c44b38cf (diff)
downloadFreeBSD-src-60e3675f0f5409e8e8f9197d0c16922f9d7b8b34.zip
FreeBSD-src-60e3675f0f5409e8e8f9197d0c16922f9d7b8b34.tar.gz
Oops! r202789 broke recording from input mixer. Restore previous "mix"
usage and use "igain" instead for input-to-output monitoring loopback.
Diffstat (limited to 'sys/dev/sound')
-rw-r--r--sys/dev/sound/pci/hda/hdac.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/sys/dev/sound/pci/hda/hdac.c b/sys/dev/sound/pci/hda/hdac.c
index 498153a..84fc322 100644
--- a/sys/dev/sound/pci/hda/hdac.c
+++ b/sys/dev/sound/pci/hda/hdac.c
@@ -6226,6 +6226,15 @@ hdac_audio_assign_mixers(struct hdac_devinfo *devinfo)
hdac_audio_ctl_dest_amp(devinfo, w->nid, -1,
SOUND_MIXER_VOLUME, 0, 1);
}
+ if (w->ossdev == SOUND_MIXER_IMIX) {
+ if (hdac_audio_ctl_source_amp(devinfo, w->nid, -1,
+ w->ossdev, 1, 0, 1)) {
+ /* If we are unable to control input monitor
+ as source - try to control it as destination. */
+ hdac_audio_ctl_dest_amp(devinfo, w->nid, -1,
+ w->ossdev, 0, 1);
+ }
+ }
if (w->pflags & HDA_ADC_MONITOR) {
for (j = 0; j < w->nconns; j++) {
if (!w->connsenable[j])
@@ -6239,7 +6248,7 @@ hdac_audio_assign_mixers(struct hdac_devinfo *devinfo)
as[cw->bindas].dir != HDA_CTL_IN)
continue;
hdac_audio_ctl_dest_amp(devinfo,
- w->nid, j, SOUND_MIXER_IMIX, 0, 1);
+ w->nid, j, SOUND_MIXER_IGAIN, 0, 1);
}
}
}
@@ -6739,8 +6748,8 @@ hdac_dump_ctls(struct hdac_pcm_devinfo *pdevinfo, const char *banner, uint32_t f
if (flag == 0) {
flag = ~(SOUND_MASK_VOLUME | SOUND_MASK_PCM |
SOUND_MASK_CD | SOUND_MASK_LINE | SOUND_MASK_RECLEV |
- SOUND_MASK_MIC | SOUND_MASK_SPEAKER | SOUND_MASK_OGAIN |
- SOUND_MASK_IMIX | SOUND_MASK_MONITOR);
+ SOUND_MASK_MIC | SOUND_MASK_SPEAKER | SOUND_MASK_IGAIN |
+ SOUND_MASK_OGAIN | SOUND_MASK_IMIX | SOUND_MASK_MONITOR);
}
for (j = 0; j < SOUND_MIXER_NRDEVICES; j++) {
@@ -8150,7 +8159,8 @@ hdac_pcm_attach(device_t dev)
hdac_dump_ctls(pdevinfo, "Line-in Volume", SOUND_MASK_LINE);
hdac_dump_ctls(pdevinfo, "Speaker/Beep Volume", SOUND_MASK_SPEAKER);
hdac_dump_ctls(pdevinfo, "Recording Level", SOUND_MASK_RECLEV);
- hdac_dump_ctls(pdevinfo, "Input Monitoring Level", SOUND_MASK_IMIX);
+ hdac_dump_ctls(pdevinfo, "Input Mix Level", SOUND_MASK_IMIX);
+ hdac_dump_ctls(pdevinfo, "Input Monitoring Level", SOUND_MASK_IGAIN);
hdac_dump_ctls(pdevinfo, NULL, 0);
device_printf(dev, "\n");
);
OpenPOWER on IntegriCloud