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

Modified Files:
        korg1212.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: korg1212.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/korg1212/korg1212.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- korg1212.c  21 Jan 2004 18:32:48 -0000      1.34
+++ korg1212.c  2 Mar 2004 15:32:38 -0000       1.35
@@ -347,9 +347,14 @@
        struct resource *res_ioport;
        struct resource *res_iomem2;
 
+       struct snd_dma_device dma_dev;
+
+       struct snd_dma_buffer dma_dsp;
+        struct snd_dma_buffer dma_play;
+        struct snd_dma_buffer dma_rec;
+       struct snd_dma_buffer dma_shared;
+
         u32 dspCodeSize;
-        u32 dspMemPhy;          // DSP memory block handle (Physical Address)
-        void * dspMemPtr;       //            block memory (Virtual Address)
 
        u32 DataBufsSize;
 
@@ -357,6 +362,7 @@
         KorgAudioBuffer  * recordDataBufsPtr;
 
        KorgSharedBuffer * sharedBufferPtr;
+
        u32 RecDataPhy;
        u32 PlayDataPhy;
        unsigned long sharedBufferPhy;
@@ -1238,10 +1244,10 @@
 
         snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_IN_PROCESS);
 
-        memcpy(korg1212->dspMemPtr, dspCode, korg1212->dspCodeSize);
+        memcpy(korg1212->dma_dsp.area, dspCode, korg1212->dspCodeSize);
 
         rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_StartDSPDownload,
-                                     UpperWordSwap(korg1212->dspMemPhy),
+                                     UpperWordSwap(korg1212->dma_dsp.addr),
                                      0, 0, 0);
 
 #if K1212_DEBUG_LEVEL > 0
@@ -2134,12 +2140,9 @@
         // ----------------------------------------------------
         // free up memory resources used for the DSP download.
         // ----------------------------------------------------
-        if (korg1212->dspMemPtr) {
-                snd_free_pci_pages(korg1212->pci, korg1212->dspCodeSize,
-                                   korg1212->dspMemPtr, 
(dma_addr_t)korg1212->dspMemPhy);
-                korg1212->dspMemPhy = 0;
-                korg1212->dspMemPtr = 0;
-                korg1212->dspCodeSize = 0;
+        if (korg1212->dma_dsp.area) {
+               snd_dma_free_pages(&korg1212->dma_dev, &korg1212->dma_dsp);
+               korg1212->dma_dsp.area = NULL;
         }
 
 #ifndef K1212_LARGEALLOC
@@ -2147,18 +2150,14 @@
         // ------------------------------------------------------
         // free up memory resources used for the Play/Rec Buffers
         // ------------------------------------------------------
-       if (korg1212->playDataBufsPtr) {
-                snd_free_pci_pages(korg1212->pci, korg1212->DataBufsSize,
-                                   korg1212->playDataBufsPtr, 
(dma_addr_t)korg1212->PlayDataPhy);
-               korg1212->PlayDataPhy = 0;
-               korg1212->playDataBufsPtr = NULL;
+       if (korg1212->dma_play.area) {
+               snd_dma_free_pages(&korg1212->dma_dev, &korg1212->dma_play);
+               korg1212->dma_play.area = NULL;
         }
 
-       if (korg1212->recordDataBufsPtr) {
-                snd_free_pci_pages(korg1212->pci, korg1212->DataBufsSize,
-                                   korg1212->recordDataBufsPtr, 
(dma_addr_t)korg1212->RecDataPhy);
-               korg1212->RecDataPhy = 0;
-               korg1212->recordDataBufsPtr = NULL;
+       if (korg1212->dma_rec.area) {
+               snd_dma_free_pages(&korg1212->dma_dev, &korg1212->dma_rec);
+               korg1212->dma_rec.area = NULL;
         }
 
 #endif
@@ -2166,11 +2165,9 @@
         // ----------------------------------------------------
         // free up memory resources used for the Shared Buffers
         // ----------------------------------------------------
-       if (korg1212->sharedBufferPtr) {
-                snd_free_pci_pages(korg1212->pci, (u32) sizeof(KorgSharedBuffer),
-                                   korg1212->sharedBufferPtr, 
(dma_addr_t)korg1212->sharedBufferPhy);
-               korg1212->sharedBufferPhy = 0;
-               korg1212->sharedBufferPtr = NULL;
+       if (korg1212->dma_shared.area) {
+               snd_dma_free_pages(&korg1212->dma_dev, &korg1212->dma_shared);
+               korg1212->dma_shared.area = NULL;
         }
         
         snd_magic_kfree(korg1212);
@@ -2193,7 +2190,6 @@
         int err;
         unsigned int i;
        unsigned ioport_size, iomem_size, iomem2_size;
-       dma_addr_t phys_addr;
         korg1212_t * korg1212;
 
         static snd_device_ops_t ops = {
@@ -2332,13 +2328,16 @@
                   stateName[korg1212->cardState]);
 #endif
 
-       korg1212->sharedBufferPtr = (KorgSharedBuffer *) 
snd_malloc_pci_pages(korg1212->pci, sizeof(KorgSharedBuffer), &phys_addr);
-       korg1212->sharedBufferPhy = (unsigned long)phys_addr;
+       memset(&korg1212->dma_dev, 0, sizeof(korg1212->dma_dev));
+       korg1212->dma_dev.type = SNDRV_DMA_TYPE_PCI;
+       korg1212->dma_dev.dev.pci = korg1212->pci;
 
-        if (korg1212->sharedBufferPtr == NULL) {
+       if (snd_dma_alloc_pages(&korg1212->dma_dev, sizeof(KorgSharedBuffer), 
&korg1212->dma_shared) < 0) {
                snd_printk(KERN_ERR "can not allocate shared buffer memory (%Zd 
bytes)\n", sizeof(KorgSharedBuffer));
                 return -ENOMEM;
         }
+        korg1212->sharedBufferPtr = (KorgSharedBuffer *)korg1212->dma_shared.area;
+        korg1212->sharedBufferPhy = korg1212->dma_shared.addr;
 
 #if K1212_DEBUG_LEVEL > 0
         K1212_DEBUG_PRINTK("K1212_DEBUG: Shared Buffer Area = 0x%p (0x%08lx), %d 
bytes\n", korg1212->sharedBufferPtr, korg1212->sharedBufferPhy, 
sizeof(KorgSharedBuffer));
@@ -2348,30 +2347,28 @@
 
         korg1212->DataBufsSize = sizeof(KorgAudioBuffer) * kNumBuffers;
 
-       korg1212->playDataBufsPtr = (KorgAudioBuffer *) 
snd_malloc_pci_pages(korg1212->pci, korg1212->DataBufsSize, &phys_addr);
-       korg1212->PlayDataPhy = (u32)phys_addr;
-
-        if (korg1212->playDataBufsPtr == NULL) {
+       if (snd_dma_alloc_pages(&korg1212->dma_dev, korg1212->DataBufsSize, 
&korg1212->dma_play) < 0) {
                snd_printk(KERN_ERR "can not allocate play data buffer memory (%d 
bytes)\n", korg1212->DataBufsSize);
                 return -ENOMEM;
         }
+       korg1212->playDataBufsPtr = (KorgAudioBuffer *)korg1212->dma_play.area;
+       korg1212->PlayDataPhy = korg1212->dma_play.addr;
 
 #if K1212_DEBUG_LEVEL > 0
         K1212_DEBUG_PRINTK("K1212_DEBUG: Play Data Area = 0x%p (0x%08x), %d bytes\n",
                korg1212->playDataBufsPtr, korg1212->PlayDataPhy, 
korg1212->DataBufsSize);
 #endif
 
-       korg1212->recordDataBufsPtr = (KorgAudioBuffer *) 
snd_malloc_pci_pages(korg1212->pci, korg1212->DataBufsSize, &phys_addr);
-       korg1212->RecDataPhy = (u32)phys_addr;
-
-        if (korg1212->recordDataBufsPtr == NULL) {
+       if (snd_dma_alloc_pages(&korg1212->dma_dev, korg1212->DataBufsSize, 
&korg1212->dma_rec) < 0) {
                snd_printk(KERN_ERR "can not allocate record data buffer memory (%d 
bytes)\n", korg1212->DataBufsSize);
                 return -ENOMEM;
         }
+        korg1212->recordDataBufsPtr = (KorgAudioBuffer *)korg1212->dma_rec.area;
+        korg1212->RecDataPhy = korg1212->dma_rec.addr;
 
 #if K1212_DEBUG_LEVEL > 0
         K1212_DEBUG_PRINTK("K1212_DEBUG: Record Data Area = 0x%p (0x%08x), %d 
bytes\n",
-               korg1212->recordDataBufsPtr, korg1212->RecDataPhy, 
korg1212->DataBufsSize);
+               korg1212->recordDataBufsPtr, korg1212->RecDataBufsPhy, 
korg1212->DataBufsSize);
 #endif
 
 #else // K1212_LARGEALLOC
@@ -2392,17 +2389,14 @@
         korg1212->AdatTimeCodePhy = korg1212->sharedBufferPhy +
                offsetof(KorgSharedBuffer, AdatTimeCode);
 
-        korg1212->dspMemPtr = snd_malloc_pci_pages(korg1212->pci, 
korg1212->dspCodeSize, &phys_addr);
-       korg1212->dspMemPhy = (u32)phys_addr;
-
-        if (korg1212->dspMemPtr == NULL) {
+       if (snd_dma_alloc_pages(&korg1212->dma_dev, korg1212->dspCodeSize, 
&korg1212->dma_dsp) < 0) {
                snd_printk(KERN_ERR "can not allocate dsp code memory (%d bytes)\n", 
korg1212->dspCodeSize);
                 return -ENOMEM;
         }
 
 #if K1212_DEBUG_LEVEL > 0
         K1212_DEBUG_PRINTK("K1212_DEBUG: DSP Code area = 0x%p (0x%08x) %d bytes 
[%s]\n",
-                  korg1212->dspMemPtr, korg1212->dspMemPhy, korg1212->dspCodeSize,
+                  korg1212->dma_dsp.area, korg1212->dma_dsp.addr, 
korg1212->dspCodeSize,
                   stateName[korg1212->cardState]);
 #endif
 
@@ -2425,7 +2419,7 @@
                "VolumeTablePhy  = %08x L[%08x]\n"
                "RoutingTablePhy = %08x L[%08x]\n"
                "AdatTimeCodePhy = %08x L[%08x]\n",
-              korg1212->dspMemPhy,       UpperWordSwap(korg1212->dspMemPhy),
+              korg1212->dma_dsp.addr,    UpperWordSwap(korg1212->dma_dsp.addr),
                korg1212->PlayDataPhy,     LowerWordSwap(korg1212->PlayDataPhy),
                korg1212->RecDataPhy,      LowerWordSwap(korg1212->RecDataPhy),
                korg1212->VolumeTablePhy,  LowerWordSwap(korg1212->VolumeTablePhy),



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