diff options
Diffstat (limited to 'sound/pci/es1968.c')
-rw-r--r-- | sound/pci/es1968.c | 28 |
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); |