Update of /cvsroot/alsa/alsa-kernel/core
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21080/core

Modified Files:
        memalloc.c sgbuf.c 
Log Message:
- fixed the lock up with SG-buffer handler.
- removed non-existing export symbol.
- clean up ifdefs.



Index: memalloc.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/core/memalloc.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- memalloc.c  2 Mar 2004 15:32:35 -0000       1.22
+++ memalloc.c  2 Mar 2004 18:06:50 -0000       1.23
@@ -84,10 +84,7 @@
  *  Hacks
  */
 
-#ifdef CONFIG_PCI
-
 #if defined(__i386__) || defined(__ppc__) || defined(__x86_64__)
-#define HACK_PCI_ALLOC_CONSISTENT
 
 /*
  * A hack to allocate large buffers via dma_alloc_coherent()
@@ -111,7 +108,7 @@
        void *ret;
        u64 dma_mask;
 
-       if (dev == NULL)
+       if (dev == NULL || !dev->dma_mask)
                return dma_alloc_coherent(dev, size, dma_handle, flags);
        dma_mask = *dev->dma_mask;
        *dev->dma_mask = 0xffffffff;    /* do without masking */
@@ -137,7 +134,6 @@
 #define dma_alloc_coherent snd_dma_hack_alloc_coherent
 
 #endif /* arch */
-#endif /* CONFIG_PCI */
 
 /*
  *
@@ -937,8 +933,6 @@
 /*
  * exports
  */
-EXPORT_SYMBOL(snd_dma_device_init);
-
 EXPORT_SYMBOL(snd_dma_alloc_pages);
 EXPORT_SYMBOL(snd_dma_alloc_pages_fallback);
 EXPORT_SYMBOL(snd_dma_free_pages);

Index: sgbuf.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/core/sgbuf.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- sgbuf.c     2 Mar 2004 15:32:36 -0000       1.5
+++ sgbuf.c     2 Mar 2004 18:06:50 -0000       1.6
@@ -33,17 +33,17 @@
 int snd_free_sgbuf_pages(struct snd_dma_buffer *dmab)
 {
        struct snd_sg_buf *sgbuf = dmab->private_data;
-       struct snd_dma_buffer dmab;
+       struct snd_dma_buffer tmpb;
        int i;
 
        if (! sgbuf)
                return -EINVAL;
 
        for (i = 0; i < sgbuf->pages; i++) {
-               dmab.area = sgbuf->table[i].buf;
-               dmab.addr = sgbuf->table[i].addr;
-               dmab.bytes = PAGE_SIZE;
-               snd_dma_free_pages(sgbuf->dev, &dmab);
+               tmpb.area = sgbuf->table[i].buf;
+               tmpb.addr = sgbuf->table[i].addr;
+               tmpb.bytes = PAGE_SIZE;
+               snd_dma_free_pages(&sgbuf->dev, &tmpb);
        }
        if (dmab->area)
                vunmap(dmab->area);
@@ -65,9 +65,7 @@
 {
        struct snd_sg_buf *sgbuf;
        unsigned int i, pages;
-       void *ptr;
-       dma_addr_t addr;
-       struct snd_dma_buffer dmab;
+       struct snd_dma_buffer tmpb;
 
        dmab->area = NULL;
        dmab->addr = 0;
@@ -75,7 +73,11 @@
        if (! sgbuf)
                return NULL;
        memset(sgbuf, 0, sizeof(*sgbuf));
-       sgbuf->dev = dev;
+       sgbuf->dev = *dev;
+       if (dev->type == SNDRV_DMA_TYPE_PCI_SG)
+               sgbuf->dev.type = SNDRV_DMA_TYPE_PCI;
+       else
+               sgbuf->dev.type =SNDRV_DMA_TYPE_DEV;
        pages = snd_sgbuf_aligned_pages(size);
        sgbuf->tblsize = sgbuf_align_table(pages);
        sgbuf->table = kmalloc(sizeof(*sgbuf->table) * sgbuf->tblsize, GFP_KERNEL);
@@ -89,15 +91,15 @@
 
        /* allocate each page */
        for (i = 0; i < pages; i++) {
-               if (snd_dma_alloc_pages(dev, PAGE_SIZE, &dmab) < 0) {
+               if (snd_dma_alloc_pages(&sgbuf->dev, PAGE_SIZE, &tmpb) < 0) {
                        if (res_size == NULL)
                                goto _failed;
                        *res_size = size = sgbuf->pages * PAGE_SIZE;
                        break;
                }
-               sgbuf->table[i].buf = dmab.area;
-               sgbuf->table[i].addr = dmab.addr;
-               sgbuf->page_table[i] = virt_to_page(ptr);
+               sgbuf->table[i].buf = tmpb.area;
+               sgbuf->table[i].addr = tmpb.addr;
+               sgbuf->page_table[i] = virt_to_page(tmpb.area);
                sgbuf->pages++;
        }
 



-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to