Thread (9 messages) 9 messages, 3 authors, 2008-07-09

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,
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help