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