Re: [PATCH 0/3] ALSA fixes for non-coherent ppc32
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-07-09 20:06:38
The changes in ppc are only the patch below. The others are in sound/*. I wrote it as an inline function simply it's so short and I didn't want extra exports.
Thanks. I -may- do something nicer, we'll see, but in any case, I'll try to have something in .27 Cheers, Ben.
quoted hunk ↗ jump to hunk
thanks, Takashi --- commit 2c8662fde57af4cf928d17e089dc3dd2096f4b30 Author: Takashi Iwai [off-list ref] Date: Tue Jun 17 16:39:04 2008 +0200 ppc: Add dma_mmap_coherent() for PPC32 A very lazy version of dma_mmap_coherent() implementation for ppc32. Signed-off-by: Takashi Iwai [off-list ref]diff --git a/include/asm-powerpc/dma-mapping.h b/include/asm-powerpc/dma-mapping.h index bbefb69..a6a9675 100644 --- a/include/asm-powerpc/dma-mapping.h +++ b/include/asm-powerpc/dma-mapping.h@@ -306,6 +306,24 @@ static inline void dma_unmap_sg(struct device *dev, struct scatterlist *sg, /* We don't do anything here. */ } +/* + * A helper to mmap the pages allocated via dma_alloc_coherent() + */ +static inline int dma_mmap_coherent(struct device *dev, + struct vm_area_struct *vma, + void *cpu_addr, dma_addr_t handle, + size_t size) +{ + struct page *pg; +#ifdef CONFIG_NOT_COHERENT_CACHE + /* I'm too lazy and can't stop using bus_to_virt() here... */ + cpu_addr = bus_to_virt(handle); +#endif + pg = virt_to_page(cpu_addr); + return remap_pfn_range(vma, vma->vm_start, + page_to_pfn(pg) + vma->vm_pgoff, + size, vma->vm_page_prot); +} #endif /* CONFIG_PPC64 */ static inline void dma_sync_single_for_cpu(struct device *dev,