aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/es1968.c
diff options
context:
space:
mode:
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);