/[openvortex]/alsa/alsa-kernel/pci/rme9652/rme9652.c
ViewVC logotype

Diff of /alsa/alsa-kernel/pci/rme9652/rme9652.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by vizard, Sat May 31 02:35:12 2003 UTC revision 1.3 by vizard, Mon Aug 11 00:06:40 2003 UTC
# Line 309  static char channel_map_9636_ds[26] = { Line 309  static char channel_map_9636_ds[26] = {
309  #define RME9652_PREALLOCATE_MEMORY      /* via module snd-hammerfall-mem */  #define RME9652_PREALLOCATE_MEMORY      /* via module snd-hammerfall-mem */
310    
311  #ifdef RME9652_PREALLOCATE_MEMORY  #ifdef RME9652_PREALLOCATE_MEMORY
312  extern void *snd_hammerfall_get_buffer(struct pci_dev *, dma_addr_t *dmaaddr);  static void *snd_hammerfall_get_buffer(struct pci_dev *pci, size_t size, dma_addr_t *addrp, int capture)
313  extern void snd_hammerfall_free_buffer(struct pci_dev *, void *ptr);  {
314            struct snd_dma_device pdev;
315            struct snd_dma_buffer dmbuf;
316    
317            snd_dma_device_pci(&pdev, pci, capture);
318            dmbuf.bytes = 0;
319            if (! snd_dma_get_reserved(&pdev, &dmbuf)) {
320                    if (snd_dma_alloc_pages(&pdev, size, &dmbuf) < 0)
321                            return NULL;
322                    snd_dma_set_reserved(&pdev, &dmbuf);
323            }
324            *addrp = dmbuf.addr;
325            return dmbuf.area;
326    }
327    
328    static void snd_hammerfall_free_buffer(struct pci_dev *pci, size_t size, void *ptr, dma_addr_t addr, int capture)
329    {
330            struct snd_dma_device dev;
331            snd_dma_device_pci(&dev, pci, capture);
332            snd_dma_free_reserved(&dev);
333    }
334    
335    #else
336    static void *snd_hammerfall_get_buffer(struct pci_dev *pci, size_t size, dma_addr_t *addrp, int capture)
337    {
338            return snd_malloc_pci_pages(pci, size, addrp);
339    }
340    
341    static void snd_hammerfall_free_buffer(struct pci_dev *pci, size_t size, void *ptr, dma_addr_t addr, int capture)
342    {
343            snd_free_pci_pages(pci, size, ptr, addr);
344    }
345  #endif  #endif
346    
347    
348  static struct pci_device_id snd_rme9652_ids[] __devinitdata = {  static struct pci_device_id snd_rme9652_ids[] __devinitdata = {
349          {          {
350                  .vendor    = 0x10ee,                  .vendor    = 0x10ee,
# Line 1810  static void __devinit snd_rme9652_proc_i Line 1842  static void __devinit snd_rme9652_proc_i
1842  static void snd_rme9652_free_buffers(rme9652_t *rme9652)  static void snd_rme9652_free_buffers(rme9652_t *rme9652)
1843  {  {
1844          if (rme9652->capture_buffer_unaligned) {          if (rme9652->capture_buffer_unaligned) {
1845  #ifndef RME9652_PREALLOCATE_MEMORY                  snd_hammerfall_free_buffer(rme9652->pci, RME9652_DMA_AREA_BYTES,
1846                  snd_free_pci_pages(rme9652->pci,                                             rme9652->capture_buffer_unaligned,
1847                                     RME9652_DMA_AREA_BYTES,                                             rme9652->capture_buffer_addr, 1);
                                    rme9652->capture_buffer_unaligned,  
                                    rme9652->capture_buffer_addr);  
 #else  
                 snd_hammerfall_free_buffer(rme9652->pci, rme9652->capture_buffer_unaligned);  
 #endif  
1848          }          }
1849    
1850          if (rme9652->playback_buffer_unaligned) {          if (rme9652->playback_buffer_unaligned) {
1851  #ifndef RME9652_PREALLOCATE_MEMORY                  snd_hammerfall_free_buffer(rme9652->pci, RME9652_DMA_AREA_BYTES,
1852                  snd_free_pci_pages(rme9652->pci,                                             rme9652->playback_buffer_unaligned,
1853                                     RME9652_DMA_AREA_BYTES,                                             rme9652->playback_buffer_addr, 0);
                                    rme9652->playback_buffer_unaligned,  
                                    rme9652->playback_buffer_addr);  
 #else  
                 snd_hammerfall_free_buffer(rme9652->pci, rme9652->playback_buffer_unaligned);  
 #endif  
1854          }          }
1855  }  }
1856    
# Line 1855  static int __devinit snd_rme9652_initial Line 1877  static int __devinit snd_rme9652_initial
1877          dma_addr_t pb_addr, cb_addr;          dma_addr_t pb_addr, cb_addr;
1878          unsigned long pb_bus, cb_bus;          unsigned long pb_bus, cb_bus;
1879    
1880  #ifndef RME9652_PREALLOCATE_MEMORY          cb = snd_hammerfall_get_buffer(rme9652->pci, RME9652_DMA_AREA_BYTES, &cb_addr, 1);
1881          cb = snd_malloc_pci_pages(rme9652->pci, RME9652_DMA_AREA_BYTES, &cb_addr);          pb = snd_hammerfall_get_buffer(rme9652->pci, RME9652_DMA_AREA_BYTES, &pb_addr, 0);
         pb = snd_malloc_pci_pages(rme9652->pci, RME9652_DMA_AREA_BYTES, &pb_addr);  
 #else  
         cb = snd_hammerfall_get_buffer(rme9652->pci, &cb_addr);  
         pb = snd_hammerfall_get_buffer(rme9652->pci, &pb_addr);  
 #endif  
1882    
1883          if (cb == 0 || pb == 0) {          if (cb == 0 || pb == 0) {
1884                  if (cb) {                  if (cb) {
1885  #ifdef RME9652_PREALLOCATE_MEMORY                          snd_hammerfall_free_buffer(rme9652->pci, RME9652_DMA_AREA_BYTES, cb, cb_addr, 1);
                         snd_hammerfall_free_buffer(rme9652->pci, cb);  
 #else  
                         snd_free_pci_pages(rme9652->pci, RME9652_DMA_AREA_BYTES, cb, cb_addr);  
 #endif  
1886                  }                  }
1887                  if (pb) {                  if (pb) {
1888  #ifdef RME9652_PREALLOCATE_MEMORY                          snd_hammerfall_free_buffer(rme9652->pci, RME9652_DMA_AREA_BYTES, pb, pb_addr, 0);
                         snd_hammerfall_free_buffer(rme9652->pci, pb);  
 #else  
                         snd_free_pci_pages(rme9652->pci, RME9652_DMA_AREA_BYTES, pb, pb_addr);  
 #endif  
1889                  }                  }
1890    
1891                  printk(KERN_ERR "%s: no buffers available\n", rme9652->card_name);                  printk(KERN_ERR "%s: no buffers available\n", rme9652->card_name);

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26