[PATCH 0/3] ALSA fixes for non-coherent ppc32
Benjamin Herrenschmidt
benh at kernel.crashing.org
Thu Jul 10 06:06:28 EST 2008
> 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.
>
> thanks,
>
> Takashi
>
> ---
> commit 2c8662fde57af4cf928d17e089dc3dd2096f4b30
> Author: Takashi Iwai <tiwai at suse.de>
> 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 <tiwai at suse.de>
>
> 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,
More information about the Linuxppc-dev
mailing list