Re: AT32 ASoC Driver Patches on alsa-devel

From: Geoffrey Wossum
Date: Fri Jun 06 2008 - 10:31:52 EST


On Friday 06 June 2008 04:29:15 am Haavard Skinnemoen wrote:
> Geoffrey Wossum <geoffrey@xxxxxxxxx> wrote:
> > On Thursday 05 June 2008 11:24:09 am Haavard Skinnemoen wrote:
> > > Geoffrey Wossum <geoffrey@xxxxxxxxx> wrote:
> > > > On Thursday 05 June 2008 09:22:06 am Haavard Skinnemoen wrote:
> > > > > Geoffrey Wossum <geoffrey@xxxxxxxxx> wrote:

> Ok. Since the SSC module is a multi-purpose module, the SSC driver was
> designed to be as thin and flexible as possible. So we just added some
> platform_driver glue and a request/free interface and left everything
> else up to the higher-level driver.
>
> I suppose we could add a few more helper functions. Suggestions are
> welcome.

It's hard to try to add all the possible permutations of functionality.
Probably just getting register bit field constants defined would help out
tremendously.


> > One issue is the SSC
> > interface, which you have said could be used on the AT91. After that,
> > the main differences are that the DMA buffer has to be allocated
> > differently, and the mmap() implementation is different.
>
> Oh. That's a bit surprising to me...can you elaborate on the
> differences?

Well, I used a coherent DMA buffer on the AVR32. I was trying to rule out
caching effects for the issues I was having at first. Eventually it should
be switched back to a writecombined DMA buffer. I assume this will require
adding some dma_sync_*() calls, which strangely seem to be missing from
at91-pcm.c.

The mmap() would still look different, though. The AT91 uses
dma_mmap_writecombine(), which only exists on the ARM. Glancing at that
routine, it seems to jump through a lot of hoops. I've never worked on an
ARM with an MMU, so I don't really know why it's necessary. But the AVR32
just requires a call to remap_pfn_range().

---
Geoffrey


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/