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

Modified Files:
        ac97_pcm.c 
Log Message:
Fixed AC97 slot allocation for 2nd+ PCM in assign function

Index: ac97_pcm.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_pcm.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ac97_pcm.c  28 Nov 2003 14:45:24 -0000      1.6
+++ ac97_pcm.c  30 Nov 2003 18:35:33 -0000      1.7
@@ -408,13 +408,15 @@
        memset(rate_table, 0, sizeof(rate_table));
        for (i = 0; i < 4; i++) {
                codec = bus->codec[i];
-               if (! codec)
+               if (!codec)
                        continue;
                avail_slots[0][i] = get_pslots(codec, &rate_table[0][i]);
                avail_slots[1][i] = get_cslots(codec);
                if (!(codec->scaps & AC97_SCAP_INDEP_SDIN)) {
-                       for (j = 0; j < i; j++)
-                               avail_slots[1][i] &= ~avail_slots[1][j];
+                       for (j = 0; j < i; j++) {
+                               if (bus->codec[j])
+                                       avail_slots[1][i] &= ~avail_slots[1][j];
+                       }
                }
        }
        /* FIXME: add double rate allocation */
@@ -434,12 +436,16 @@
                rpcm->rates = ~0;
                slots = pcm->r[0].slots;
                for (j = 0; j < 4 && slots; j++) {
+                       if (!bus->codec[j])
+                               continue;
                        rates = ~0;
                        if (pcm->exclusive) {
                                /* exclusive access */
                                tmp = avail_slots[pcm->stream][j] & slots;
-                               for (k = 0; k < i; k++)
-                                       tmp &= ~rpcms[k].r[0].rslots[j];
+                               for (k = 0; k < i; k++) {
+                                       if (rpcm->stream == rpcms[k].stream)
+                                               tmp &= ~rpcms[k].r[0].rslots[j];
+                               }
                                if (tmp) {
                                        rpcm->r[0].rslots[j] = tmp;
                                        rpcm->r[0].codec[j] = bus->codec[j];



-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to