Subject: Re: [PATCH 0/3] ALSA fixes for non-coherent ppc32

From: Benjamin Herrenschmidt <[email-masked]>
Date: Thu, 10 Jul 2008 06:06:28 +1000

> 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 <[email-masked]>
> 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 <[email-masked]>
> 
> 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,