Update of /cvsroot/alsa/alsa-kernel/pci
In directory sc8-pr-cvs1:/tmp/cvs-serv2057

Modified Files:
        cmipci.c 
Log Message:
- set XCHGDAC bit implicitly on MC4/6 models for fixing wrong
  playback on some boards.
- removed "Exchange DAC" control from such a model.

  


Index: cmipci.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/cmipci.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- cmipci.c    28 Oct 2003 11:28:01 -0000      1.52
+++ cmipci.c    7 Nov 2003 19:38:09 -0000       1.53
@@ -725,6 +725,7 @@
 
                spin_lock_irqsave(&cm->reg_lock, flags);
                snd_cmipci_set_bit(cm, CM_REG_LEGACY_CTRL, CM_NXCHG);
+               snd_cmipci_set_bit(cm, CM_REG_MISC_CTRL, CM_XCHGDAC);
                if (channels > 4) {
                        snd_cmipci_clear_bit(cm, CM_REG_CHFORMAT, CM_CHB3D);
                        snd_cmipci_set_bit(cm, CM_REG_CHFORMAT, CM_CHB3D5C);
@@ -749,6 +750,7 @@
                        snd_cmipci_clear_bit(cm, CM_REG_CHFORMAT, CM_CHB3D5C);
                        snd_cmipci_clear_bit(cm, CM_REG_LEGACY_CTRL, CM_CHB3D6C);
                        snd_cmipci_clear_bit(cm, CM_REG_MISC_CTRL, CM_ENCENTER);
+                       snd_cmipci_clear_bit(cm, CM_REG_MISC_CTRL, CM_XCHGDAC);
                        spin_unlock_irqrestore(&cm->reg_lock, flags);
                }
        }
@@ -2671,11 +2673,14 @@
 
 /* both for CM8338/8738 */
 static snd_kcontrol_new_t snd_cmipci_mixer_switches[] __devinitdata = {
-       DEFINE_MIXER_SWITCH("Exchange DAC", exchange_dac),
        DEFINE_MIXER_SWITCH("Four Channel Mode", fourch),
        DEFINE_MIXER_SWITCH("Line-In As Rear", line_rear),
 };
 
+/* for non-multichannel chips */
+static snd_kcontrol_new_t snd_cmipci_nomulti_switch __devinitdata =
+DEFINE_MIXER_SWITCH("Exchange DAC", exchange_dac);
+
 /* only for CM8738 */
 static snd_kcontrol_new_t snd_cmipci_8738_mixer_switches[] __devinitdata = {
 #if 0 /* controlled in pcm device */
@@ -2748,6 +2753,11 @@
        sw = snd_cmipci_mixer_switches;
        for (idx = 0; idx < num_controls(snd_cmipci_mixer_switches); idx++, sw++) {
                err = snd_ctl_add(cm->card, snd_ctl_new1(sw, cm));
+               if (err < 0)
+                       return err;
+       }
+       if (! cm->can_multi_ch) {
+               err = snd_ctl_add(cm->card, snd_ctl_new1(&snd_cmipci_nomulti_switch, 
cm));
                if (err < 0)
                        return err;
        }



-------------------------------------------------------
This SF.Net email sponsored by: ApacheCon 2003,
16-19 November in Las Vegas. Learn firsthand the latest
developments in Apache, PHP, Perl, XML, Java, MySQL,
WebDAV, and more! http://www.apachecon.com/
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to