// SPDX-License-Identifier: GPL-2.0-or-later /* * ISA DMA support functions * Copyright (c) by Jaroslav Kysela <[email protected]> */ /* * Defining following add some delay. Maybe this helps for some broken * ISA DMA controllers. */ #undef HAVE_REALLY_SLOW_DMA_CONTROLLER #include <linux/export.h> #include <linux/isa-dma.h> #include <sound/core.h> /** * snd_dma_program - program an ISA DMA transfer * @dma: the dma number * @addr: the physical address of the buffer * @size: the DMA transfer size * @mode: the DMA transfer mode, DMA_MODE_XXX * * Programs an ISA DMA transfer for the given buffer. */ void snd_dma_program(unsigned long dma, unsigned long addr, unsigned int size, unsigned short mode) { … } EXPORT_SYMBOL(…); /** * snd_dma_disable - stop the ISA DMA transfer * @dma: the dma number * * Stops the ISA DMA transfer. */ void snd_dma_disable(unsigned long dma) { … } EXPORT_SYMBOL(…); /** * snd_dma_pointer - return the current pointer to DMA transfer buffer in bytes * @dma: the dma number * @size: the dma transfer size * * Return: The current pointer in DMA transfer buffer in bytes. */ unsigned int snd_dma_pointer(unsigned long dma, unsigned int size) { … } EXPORT_SYMBOL(…); struct snd_dma_data { … }; static void __snd_release_dma(struct device *dev, void *data) { … } /** * snd_devm_request_dma - the managed version of request_dma() * @dev: the device pointer * @dma: the dma number * @name: the name string of the requester * * The requested DMA will be automatically released at unbinding via devres. * * Return: zero on success, or a negative error code */ int snd_devm_request_dma(struct device *dev, int dma, const char *name) { … } EXPORT_SYMBOL_GPL(…);