From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 092B1DDF83 for ; Thu, 10 Jul 2008 06:06:38 +1000 (EST) Subject: Re: [PATCH 0/3] ALSA fixes for non-coherent ppc32 From: Benjamin Herrenschmidt To: Takashi Iwai In-Reply-To: References: <20080709083111.44860@gmx.net> <1215593735.8970.361.camel@pasglop> Content-Type: text/plain Date: Thu, 10 Jul 2008 06:06:28 +1000 Message-Id: <1215633988.8970.376.camel@pasglop> Mime-Version: 1.0 Cc: linuxppc-dev@ozlabs.org Reply-To: benh@kernel.crashing.org List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , > 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 > 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 > > 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,