浏览代码

ALSA: pcm - Export snd_pcm_lib_default_mmap() helper

Export the default mmap function, snd_pcm_lib_default_mmap().
The upcoming non-snooping support in HD-audio driver will use this
to override the mmap method.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 13 年之前
父节点
当前提交
18a2b96233
共有 2 个文件被更改,包括 6 次插入3 次删除
  1. 2 0
      include/sound/pcm.h
  2. 4 3
      sound/core/pcm_native.c

+ 2 - 0
include/sound/pcm.h

@@ -1035,6 +1035,8 @@ static inline void snd_pcm_mmap_data_close(struct vm_area_struct *area)
 	atomic_dec(&substream->mmap_count);
 	atomic_dec(&substream->mmap_count);
 }
 }
 
 
+int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream,
+			     struct vm_area_struct *area);
 /* mmap for io-memory area */
 /* mmap for io-memory area */
 #if defined(CONFIG_X86) || defined(CONFIG_PPC) || defined(CONFIG_ALPHA)
 #if defined(CONFIG_X86) || defined(CONFIG_PPC) || defined(CONFIG_ALPHA)
 #define SNDRV_PCM_INFO_MMAP_IOMEM	SNDRV_PCM_INFO_MMAP
 #define SNDRV_PCM_INFO_MMAP_IOMEM	SNDRV_PCM_INFO_MMAP

+ 4 - 3
sound/core/pcm_native.c

@@ -3156,8 +3156,8 @@ static const struct vm_operations_struct snd_pcm_vm_ops_data_fault = {
 /*
 /*
  * mmap the DMA buffer on RAM
  * mmap the DMA buffer on RAM
  */
  */
-static int snd_pcm_default_mmap(struct snd_pcm_substream *substream,
-				struct vm_area_struct *area)
+int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream,
+			     struct vm_area_struct *area)
 {
 {
 	area->vm_flags |= VM_RESERVED;
 	area->vm_flags |= VM_RESERVED;
 #ifdef ARCH_HAS_DMA_MMAP_COHERENT
 #ifdef ARCH_HAS_DMA_MMAP_COHERENT
@@ -3177,6 +3177,7 @@ static int snd_pcm_default_mmap(struct snd_pcm_substream *substream,
 	area->vm_ops = &snd_pcm_vm_ops_data_fault;
 	area->vm_ops = &snd_pcm_vm_ops_data_fault;
 	return 0;
 	return 0;
 }
 }
+EXPORT_SYMBOL_GPL(snd_pcm_lib_default_mmap);
 
 
 /*
 /*
  * mmap the DMA buffer on I/O memory area
  * mmap the DMA buffer on I/O memory area
@@ -3242,7 +3243,7 @@ int snd_pcm_mmap_data(struct snd_pcm_substream *substream, struct file *file,
 	if (substream->ops->mmap)
 	if (substream->ops->mmap)
 		err = substream->ops->mmap(substream, area);
 		err = substream->ops->mmap(substream, area);
 	else
 	else
-		err = snd_pcm_default_mmap(substream, area);
+		err = snd_pcm_lib_default_mmap(substream, area);
 	if (!err)
 	if (!err)
 		atomic_inc(&substream->mmap_count);
 		atomic_inc(&substream->mmap_count);
 	return err;
 	return err;