aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/es1968.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-01-08 10:12:25 -0500
committerTakashi Iwai <tiwai@suse.de>2014-01-09 01:32:10 -0500
commit47d98c026ef9a9888c36f3c4f26b81f548a0ca86 (patch)
tree11601d8b6644c5a2dd75469978151d51ef6fb7e9 /sound/pci/es1968.c
parentd7b135410e1b2f5ad64e56df09d133a23aa9fbcb (diff)
ALSA: Remove memory reservation code from memalloc helper
Nowadays we have CMA for obtaining the contiguous memory pages efficiently. Let's kill the old kludge for reserving the memory pages for large buffers. It was rarely useful (only for preserving pages among module reloading or a little help by an early boot scripting), used only by a couple of drivers, and yet it gives too much ugliness than its benefit. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/es1968.c')
-rw-r--r--sound/pci/es1968.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/sound/pci/es1968.c b/sound/pci/es1968.c
index b0e3d92c4656..772cc36f951d 100644
--- a/sound/pci/es1968.c
+++ b/sound/pci/es1968.c
@@ -1422,7 +1422,7 @@ static void snd_es1968_free_dmabuf(struct es1968 *chip)
1422 1422
1423 if (! chip->dma.area) 1423 if (! chip->dma.area)
1424 return; 1424 return;
1425 snd_dma_reserve_buf(&chip->dma, snd_dma_pci_buf_id(chip->pci)); 1425 snd_dma_free_pages(&chip->dma);
1426 while ((p = chip->buf_list.next) != &chip->buf_list) { 1426 while ((p = chip->buf_list.next) != &chip->buf_list) {
1427 struct esm_memory *chunk = list_entry(p, struct esm_memory, list); 1427 struct esm_memory *chunk = list_entry(p, struct esm_memory, list);
1428 list_del(p); 1428 list_del(p);
@@ -1438,20 +1438,18 @@ snd_es1968_init_dmabuf(struct es1968 *chip)
1438 1438
1439 chip->dma.dev.type = SNDRV_DMA_TYPE_DEV; 1439 chip->dma.dev.type = SNDRV_DMA_TYPE_DEV;
1440 chip->dma.dev.dev = snd_dma_pci_data(chip->pci); 1440 chip->dma.dev.dev = snd_dma_pci_data(chip->pci);
1441 if (! snd_dma_get_reserved_buf(&chip->dma, snd_dma_pci_buf_id(chip->pci))) { 1441 err = snd_dma_alloc_pages_fallback(SNDRV_DMA_TYPE_DEV,
1442 err = snd_dma_alloc_pages_fallback(SNDRV_DMA_TYPE_DEV, 1442 snd_dma_pci_data(chip->pci),
1443 snd_dma_pci_data(chip->pci), 1443 chip->total_bufsize, &chip->dma);
1444 chip->total_bufsize, &chip->dma); 1444 if (err < 0 || ! chip->dma.area) {
1445 if (err < 0 || ! chip->dma.area) { 1445 snd_printk(KERN_ERR "es1968: can't allocate dma pages for size %d\n",
1446 snd_printk(KERN_ERR "es1968: can't allocate dma pages for size %d\n", 1446 chip->total_bufsize);
1447 chip->total_bufsize); 1447 return -ENOMEM;
1448 return -ENOMEM; 1448 }
1449 } 1449 if ((chip->dma.addr + chip->dma.bytes - 1) & ~((1 << 28) - 1)) {
1450 if ((chip->dma.addr + chip->dma.bytes - 1) & ~((1 << 28) - 1)) { 1450 snd_dma_free_pages(&chip->dma);
1451 snd_dma_free_pages(&chip->dma); 1451 snd_printk(KERN_ERR "es1968: DMA buffer beyond 256MB.\n");
1452 snd_printk(KERN_ERR "es1968: DMA buffer beyond 256MB.\n"); 1452 return -ENOMEM;
1453 return -ENOMEM;
1454 }
1455 } 1453 }
1456 1454
1457 INIT_LIST_HEAD(&chip->buf_list); 1455 INIT_LIST_HEAD(&chip->buf_list);