#ifndef __SOUND_MEMALLOC_H
#define __SOUND_MEMALLOC_H
#include <linux/dma-direction.h>
#include <asm/page.h>
struct device;
struct vm_area_struct;
struct sg_table;
struct snd_dma_device { … };
#define SNDRV_DMA_TYPE_UNKNOWN …
#define SNDRV_DMA_TYPE_CONTINUOUS …
#define SNDRV_DMA_TYPE_DEV …
#define SNDRV_DMA_TYPE_DEV_WC …
#ifdef CONFIG_GENERIC_ALLOCATOR
#define SNDRV_DMA_TYPE_DEV_IRAM …
#else
#define SNDRV_DMA_TYPE_DEV_IRAM …
#endif
#define SNDRV_DMA_TYPE_VMALLOC …
#define SNDRV_DMA_TYPE_NONCONTIG …
#define SNDRV_DMA_TYPE_NONCOHERENT …
#ifdef CONFIG_SND_DMA_SGBUF
#define SNDRV_DMA_TYPE_DEV_SG …
#define SNDRV_DMA_TYPE_DEV_WC_SG …
#else
#define SNDRV_DMA_TYPE_DEV_SG …
#define SNDRV_DMA_TYPE_DEV_WC_SG …
#endif
#ifdef CONFIG_SND_DMA_SGBUF
#define SNDRV_DMA_TYPE_DEV_SG_FALLBACK …
#define SNDRV_DMA_TYPE_DEV_WC_SG_FALLBACK …
#endif
struct snd_dma_buffer { … };
static inline unsigned int snd_sgbuf_aligned_pages(size_t size)
{ … }
int snd_dma_alloc_dir_pages(int type, struct device *dev,
enum dma_data_direction dir, size_t size,
struct snd_dma_buffer *dmab);
static inline int snd_dma_alloc_pages(int type, struct device *dev,
size_t size, struct snd_dma_buffer *dmab)
{ … }
int snd_dma_alloc_pages_fallback(int type, struct device *dev, size_t size,
struct snd_dma_buffer *dmab);
void snd_dma_free_pages(struct snd_dma_buffer *dmab);
int snd_dma_buffer_mmap(struct snd_dma_buffer *dmab,
struct vm_area_struct *area);
enum snd_dma_sync_mode { … };
#ifdef CONFIG_HAS_DMA
void snd_dma_buffer_sync(struct snd_dma_buffer *dmab,
enum snd_dma_sync_mode mode);
#else
static inline void snd_dma_buffer_sync(struct snd_dma_buffer *dmab,
enum snd_dma_sync_mode mode) {}
#endif
dma_addr_t snd_sgbuf_get_addr(struct snd_dma_buffer *dmab, size_t offset);
struct page *snd_sgbuf_get_page(struct snd_dma_buffer *dmab, size_t offset);
unsigned int snd_sgbuf_get_chunk_size(struct snd_dma_buffer *dmab,
unsigned int ofs, unsigned int size);
struct snd_dma_buffer *snd_devm_alloc_dir_pages(struct device *dev, int type,
enum dma_data_direction dir,
size_t size);
static inline struct snd_dma_buffer *
snd_devm_alloc_pages(struct device *dev, int type, size_t size)
{ … }
static inline struct sg_table *
snd_dma_noncontig_sg_table(struct snd_dma_buffer *dmab)
{ … }
#endif