/* Allocates some kernel memory that we can use for DMA. I think this means that the memory has to map to contiguous pages of physical memory.  */
static struct snd_dma_buffer* get_dmabuf(struct snd_dma_buffer *buf, unsigned long size)
/* Allocates some kernel memory that we can use for DMA. I think this means that the memory has to map to contiguous pages of physical memory.  */
static struct snd_dma_buffer* get_dmabuf(struct snd_dma_buffer *buf, unsigned long size)
{
	if (buf) {
		if (snd_dma_alloc_pages_fallback(SNDRV_DMA_TYPE_DEV,
						 snd_dma_isa_data(),
						 size, buf) < 0) {
			snd_printk(KERN_ERR "sscape: Failed to allocate "
					    "%lu bytes for DMA\n",
					    size);
			return NULL;
		}
	}
	return buf;
}