[linux-cirrus] Re: 2.6.20-rcX kernel status
- From: Lennert Buytenhek <buytenh@xxxxxxxxxxxxxx>
- To: "Cory T. Tusar" <ctusar@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 28 Dec 2006 18:55:35 +0100
On Thu, Dec 28, 2006 at 12:13:18PM -0500, Cory T. Tusar wrote:
> >>> * dma
> >>>
> >>> -Lennert have done a dma patch
> >>> -which drivers should use it, is addional work necessary
> >>> -how to use it ?
> >> I2S would probably benefit. IIRC, the original Cirrus driver did use
> >> DMA for I2S, however there were DMA channel issues with underrun. (?)
> >
> > (My AC97 driver does handle underrun correctly :-)
>
> Out of curiosity, what kind of data rates are involved with AC97?
> I've never played around with it, and have only a cursory understanding
> of the format.
The AC-link is clocked at a fixed 12.288 MHz, carrying 48000 256-bit
frames per second in both directions.
The 256-bit frame is divided into a 16 bit "control" frame (slot 0)
and 12 20-bit "data" frames (slots 1-12.)
For the typical stereo audio case, you'd use 2 of those 12 slots.
> >>> * sound i2s
> >>>
> >>> ???
> >> I've been working on this recently in conjunction with a new project.
> >> Given some of the requirements, it was easier for me to start from
> >> scratch in this instance than attempt to port the older Cirrus I2S
> >> driver. I would like to go back at some point and either a) forward
> >> port the older Cirrus driver, or b) use what I've started on as a
> >> basis for an ALSA driver going forward.
> >>
> >> To do this right will probably require DMA, SSP, and FIQ support.
> >
> > Why FIQ support?
>
> Because I've run into instances where I've been unable to service a
> regular (RX-only for now) IRQ in an adequate amount of time. This
> includes setting the FIFO to interrupt at "half-full" rather than
> "full", (note that at "full" the first L/R data sample must be read
> within ~21 usec to avoid overflow).
Right, but you only have this problem if you run in PIO mode. If you
let the DMA controller do the work for you (which is what my driver
does), you don't have this problem.
BTW, I posted my driver to linux-arm-kernel@ for review the other day.
As I said before, it's fairly easy to add I2S support, I'll probably
have a try at that when I get bored.
- Follow-Ups:
- [linux-cirrus] Re: 2.6.20-rcX kernel status
- From: Chase Douglas
- References:
- [linux-cirrus] 2.6.20-rcX kernel status
- From: Manfred Gruber
- [linux-cirrus] Re: 2.6.20-rcX kernel status
- From: Cory T. Tusar
- [linux-cirrus] Re: 2.6.20-rcX kernel status
- From: Lennert Buytenhek
- [linux-cirrus] Re: 2.6.20-rcX kernel status
- From: Cory T. Tusar
Other related posts:
- » [linux-cirrus] 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- » [linux-cirrus] Re: 2.6.20-rcX kernel status
- [linux-cirrus] Re: 2.6.20-rcX kernel status
- From: Chase Douglas
- [linux-cirrus] 2.6.20-rcX kernel status
- From: Manfred Gruber
- [linux-cirrus] Re: 2.6.20-rcX kernel status
- From: Cory T. Tusar
- [linux-cirrus] Re: 2.6.20-rcX kernel status
- From: Lennert Buytenhek
- [linux-cirrus] Re: 2.6.20-rcX kernel status
- From: Cory T. Tusar