Update of /cvsroot/alsa/alsa-kernel/pci/ymfpci
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18820/alsa-kernel/pci/ymfpci

Modified Files:
        ymfpci_main.c 
Log Message:
Big DMA cleanup originated by Russell King <[EMAIL PROTECTED]>
* Russel
  - introduced 'struct device' support for 2.6 dma_alloc_coherent()
* Jaroslav
  - removed all bus-specific allocation functions
  - extended snd_dma_alloc_pages/snd_dma_free_pages to handle all bus types
  - recoded all (or almost all) device drivers
  - sgbuf functions are bus independent now


Index: ymfpci_main.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ymfpci/ymfpci_main.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- ymfpci_main.c       21 Jan 2004 18:32:48 -0000      1.47
+++ ymfpci_main.c       2 Mar 2004 15:32:38 -0000       1.48
@@ -541,20 +541,15 @@
 
 static int __devinit snd_ymfpci_ac3_init(ymfpci_t *chip)
 {
-       unsigned char *ptr;
-       dma_addr_t ptr_addr;
-
-       if ((ptr = snd_malloc_pci_pages(chip->pci, 4096, &ptr_addr)) == NULL)
+       if (snd_dma_alloc_pages(&chip->dma_dev, 4096, &chip->ac3_tmp_base) < 0)
                return -ENOMEM;
 
-       chip->ac3_tmp_base = ptr;
-       chip->ac3_tmp_base_addr = ptr_addr;
        chip->bank_effect[3][0]->base =
-       chip->bank_effect[3][1]->base = cpu_to_le32(chip->ac3_tmp_base_addr);
+       chip->bank_effect[3][1]->base = cpu_to_le32(chip->ac3_tmp_base.addr);
        chip->bank_effect[3][0]->loop_end =
        chip->bank_effect[3][1]->loop_end = cpu_to_le32(1024);
        chip->bank_effect[4][0]->base =
-       chip->bank_effect[4][1]->base = cpu_to_le32(chip->ac3_tmp_base_addr + 2048);
+       chip->bank_effect[4][1]->base = cpu_to_le32(chip->ac3_tmp_base.addr + 2048);
        chip->bank_effect[4][0]->loop_end =
        chip->bank_effect[4][1]->loop_end = cpu_to_le32(1024);
 
@@ -572,9 +567,9 @@
                          snd_ymfpci_readl(chip, YDSXGR_MAPOFEFFECT) & ~(3 << 3));
        spin_unlock_irq(&chip->reg_lock);
        // snd_ymfpci_irq_wait(chip);
-       if (chip->ac3_tmp_base) {
-               snd_free_pci_pages(chip->pci, 4096, chip->ac3_tmp_base, 
chip->ac3_tmp_base_addr);
-               chip->ac3_tmp_base = NULL;
+       if (chip->ac3_tmp_base.area) {
+               snd_dma_free_pages(&chip->dma_dev, &chip->ac3_tmp_base);
+               chip->ac3_tmp_base.area = NULL;
        }
        return 0;
 }
@@ -1104,7 +1099,8 @@
        strcpy(pcm->name, "YMFPCI");
        chip->pcm = pcm;
 
-       snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, 64*1024, 256*1024);
+       snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_PCI,
+                                             chip->pci, 64*1024, 256*1024);
 
        if (rpcm)
                *rpcm = pcm;
@@ -1149,7 +1145,8 @@
                chip->device_id == PCI_DEVICE_ID_YAMAHA_754 ? "Direct Recording" : 
"AC'97");
        chip->pcm2 = pcm;
 
-       snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, 64*1024, 256*1024);
+       snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_PCI,
+                                             chip->pci, 64*1024, 256*1024);
 
        if (rpcm)
                *rpcm = pcm;
@@ -1193,7 +1190,8 @@
        strcpy(pcm->name, "YMFPCI - IEC958");
        chip->pcm_spdif = pcm;
 
-       snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, 64*1024, 256*1024);
+       snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_PCI,
+                                             chip->pci, 64*1024, 256*1024);
 
        if (rpcm)
                *rpcm = pcm;
@@ -1237,7 +1235,8 @@
        strcpy(pcm->name, "YMFPCI - Rear PCM");
        chip->pcm_4ch = pcm;
 
-       snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, 64*1024, 256*1024);
+       snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_PCI,
+                                             chip->pci, 64*1024, 256*1024);
 
        if (rpcm)
                *rpcm = pcm;
@@ -1976,12 +1975,11 @@
               chip->work_size;
        /* work_ptr must be aligned to 256 bytes, but it's already
           covered with the kernel page allocation mechanism */
-       if ((ptr = snd_malloc_pci_pages(chip->pci, size, &ptr_addr)) == NULL)
+       if (snd_dma_alloc_pages(&chip->dma_dev, size, &chip->work_ptr) < 0) 
                return -ENOMEM;
+       ptr = chip->work_ptr.area;
+       ptr_addr = chip->work_ptr.addr;
        memset(ptr, 0, size);   /* for sure */
-       chip->work_ptr = ptr;
-       chip->work_ptr_addr = ptr_addr;
-       chip->work_ptr_size = size;
 
        chip->bank_base_playback = ptr;
        chip->bank_base_playback_addr = ptr_addr;
@@ -2024,7 +2022,7 @@
        chip->work_base = ptr;
        chip->work_base_addr = ptr_addr;
        
-       snd_assert(ptr + chip->work_size == chip->work_ptr + chip->work_ptr_size, );
+       snd_assert(ptr + chip->work_size == chip->work_ptr.area + 
chip->work_ptr.bytes, );
 
        snd_ymfpci_writel(chip, YDSXGR_PLAYCTRLBASE, chip->bank_base_playback_addr);
        snd_ymfpci_writel(chip, YDSXGR_RECCTRLBASE, chip->bank_base_capture_addr);
@@ -2107,8 +2105,8 @@
 #endif
        if (chip->reg_area_virt)
                iounmap((void *)chip->reg_area_virt);
-       if (chip->work_ptr)
-               snd_free_pci_pages(chip->pci, chip->work_ptr_size, chip->work_ptr, 
chip->work_ptr_addr);
+       if (chip->work_ptr.area)
+               snd_dma_free_pages(&chip->dma_dev, &chip->work_ptr);
        
        if (chip->irq >= 0)
                free_irq(chip->irq, (void *)chip);
@@ -2276,6 +2274,10 @@
        }
        chip->irq = pci->irq;
 
+       memset(&chip->dma_dev, 0, sizeof(chip->dma_dev));
+       chip->dma_dev.type = SNDRV_DMA_TYPE_PCI;
+       chip->dma_dev.dev.pci = pci;
+
        snd_ymfpci_aclink_reset(pci);
        if (snd_ymfpci_codec_ready(chip, 0) < 0) {
                snd_ymfpci_free(chip);



-------------------------------------------------------
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