X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=sound%2Fcore%2Fpcm_native.c;h=b71be579c6ecb3a5775d4a48e93adad8f530d2dc;hb=a5606f85611267047206d8ba055bc0e4ba166ad3;hp=a68d4c6d702c80cd461def1c84c4a91a254b21a4;hpb=d4639ebadb758219ccef97d1f37c0ac44c53de5a;p=firefly-linux-kernel-4.4.55.git diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index a68d4c6d702c..b71be579c6ec 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c @@ -3199,6 +3199,14 @@ int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *area) { area->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; +#ifdef CONFIG_GENERIC_ALLOCATOR + if (substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV_IRAM) { + area->vm_page_prot = pgprot_writecombine(area->vm_page_prot); + return remap_pfn_range(area, area->vm_start, + substream->dma_buffer.addr >> PAGE_SHIFT, + area->vm_end - area->vm_start, area->vm_page_prot); + } +#endif /* CONFIG_GENERIC_ALLOCATOR */ #ifdef ARCH_HAS_DMA_MMAP_COHERENT if (!substream->ops->page && substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV)