Author: mav
Date: Fri Jan 22 09:54:40 2010
New Revision: 202796
URL: http://svn.freebsd.org/changeset/base/202796

Log:
  Oops! r202789 broke recording from input mixer. Restore previous "mix"
  usage and use "igain" instead for input-to-output monitoring loopback.

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   Fri Jan 22 09:50:17 2010        
(r202795)
+++ head/sys/dev/sound/pci/hda/hdac.c   Fri Jan 22 09:54:40 2010        
(r202796)
@@ -6226,6 +6226,15 @@ hdac_audio_assign_mixers(struct hdac_dev
                        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_dev
                                    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 *
        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");
        );
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to