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