diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-30 07:53:17 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-30 07:53:17 -0700 |
commit | a8e498b768d912ad3e7069c86b86bdb821d43b5f (patch) | |
tree | 38ae01a72c640c951c071a8bd469d29400ac09d7 /arch/powerpc/kernel/dma.c | |
parent | a8a44921383039bd5387020d035123d21660b309 (diff) | |
parent | d4db35e8dc963cf2aca15fc22cc5e5a7d98f9255 (diff) |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc/qe_ic: Fix another breakage from the irq_data conversion
powerpc/8xx: Fix another breakage from the irq_data conversion
powerpc/cell: Use handle_edge_eoi_irq for real
powerpc/pseries: Enable Chelsio network and iWARP drivers
powerpc/mm: Move the STAB0 location to 0x8000 to make room in low memory
powerpc: Fix accounting of softirq time when idle
powerpc/pseries/smp: query-cpu-stopped-state support won't change
powerpc/xics: Use hwirq for xics domain irq number
powerpc/xics: Fix numberspace mismatch from irq_desc conversion
powerpc: Wire up new syscalls
powerpc/booke: Correct the SPRN_MAS5 definition.
powerpc: ARCH_PFN_OFFSET should be unsigned long
powerpc: Implement dma_mmap_coherent()
powerpc/nvram: Don't overwrite oops/panic report on normal shutdown
powerpc: Restore some misc devices to our configs
Diffstat (limited to 'arch/powerpc/kernel/dma.c')
-rw-r--r-- | arch/powerpc/kernel/dma.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index cf02cad62d9..d238c082c3c 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c @@ -179,3 +179,21 @@ static int __init dma_init(void) return 0; } fs_initcall(dma_init); + +int dma_mmap_coherent(struct device *dev, struct vm_area_struct *vma, + void *cpu_addr, dma_addr_t handle, size_t size) +{ + unsigned long pfn; + +#ifdef CONFIG_NOT_COHERENT_CACHE + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + pfn = __dma_get_coherent_pfn((unsigned long)cpu_addr); +#else + pfn = page_to_pfn(virt_to_page(cpu_addr)); +#endif + return remap_pfn_range(vma, vma->vm_start, + pfn + vma->vm_pgoff, + vma->vm_end - vma->vm_start, + vma->vm_page_prot); +} +EXPORT_SYMBOL_GPL(dma_mmap_coherent); |