Oh yes -- I'm soo happy now! :-)

Since the Audigy 2 Ex does not have an AC'97, we should probably not be too surprised if it times out when we try to initialize it... :-) This very simple patch skips the AC'97 initialization for Audigy 2 Ex. I'm not sure if I catch more boards than the Audigy 2 Ex since I could not find the PCI ID anywhere. It would be nice if you *non-Ex* Audigy 2 owners out there could email me the output of "lspci -vn" so I can be sure.

With this patch, the OSS mixer lacks all controls (i.e. is useless), but alsamixer seems to be working, although I would have expected a master volume control somewhere...

I'm don't want this patch to be included in ALSA at this time, but I'm sending it to the list in case someone wants to try it out until there's real support available. The patch is for Linux 2.6.0-test1, but should be easy to apply to the 2.4 ALSA driver as well.

I'm very intersted in your feedback if you decide to test it.

/Tobias
diff -ru linux-2.6.0-test1.orig/include/sound/emu10k1.h 
linux-2.6.0-test1/include/sound/emu10k1.h
--- linux-2.6.0-test1.orig/include/sound/emu10k1.h      2003-07-19 01:25:48.426904643 
+0200
+++ linux-2.6.0-test1/include/sound/emu10k1.h   2003-07-19 01:26:02.131507794 +0200
@@ -931,6 +931,7 @@
        unsigned long port;                     /* I/O port number */
        struct resource *res_port;
        int APS: 1,                             /* APS flag */
+           no_ac97: 1,                         /* no AC'97 */
            tos_link: 1;                        /* tos link detected */
        unsigned int audigy;                    /* is Audigy? */
        unsigned int revision;                  /* chip revision */
diff -ru linux-2.6.0-test1.orig/sound/pci/emu10k1/emu10k1.c 
linux-2.6.0-test1/sound/pci/emu10k1/emu10k1.c
--- linux-2.6.0-test1.orig/sound/pci/emu10k1/emu10k1.c  2003-03-05 04:28:53.000000000 
+0100
+++ linux-2.6.0-test1/sound/pci/emu10k1/emu10k1.c       2003-07-18 23:45:32.000000000 
+0200
@@ -135,7 +135,7 @@
                snd_card_free(card);
                return err;
        }               
-       if (!emu->APS) {        /* APS board has not an AC97 mixer */
+       if (!emu->no_ac97) {
                if ((err = snd_emu10k1_mixer(emu)) < 0) {
                        snd_card_free(card);
                        return err;
diff -ru linux-2.6.0-test1.orig/sound/pci/emu10k1/emu10k1_main.c 
linux-2.6.0-test1/sound/pci/emu10k1/emu10k1_main.c
--- linux-2.6.0-test1.orig/sound/pci/emu10k1/emu10k1_main.c     2003-06-17 
09:04:30.000000000 +0200
+++ linux-2.6.0-test1/sound/pci/emu10k1/emu10k1_main.c  2003-07-19 01:28:19.770347321 
+0200
@@ -674,7 +674,10 @@
        if (emu->serial == 0x40011102) {
                emu->card_type = EMU10K1_CARD_EMUAPS;
                emu->APS = 1;
+               emu->no_ac97 = 1;
        }
+       else if (emu->serial == 0x10051102) /* Audigy 2 Ex (?) */
+               emu->no_ac97 = 1;
        
        emu->fx8010.fxbus_mask = 0x303f;
        if (extin_mask == 0)

Reply via email to