hi,

        Even thought the SA11xx ARM platform DMA engine has a queueing
mechanism (as you mentioned), it is not being utilized.  Since we are
queueing(or starting) the next dma transfer in the interrupt context, and we
recieve this interrupt only when the previous dma transfer ends.  Queueing
makes sense only when a dma transfer is active and we queue another dma
transfer (to avoid a delay between starting another transfer).  
So for now I think we might have to use the mechanisms suggested by Takashi
to queue extra periods to the dma engine.

regards
-kshitij

-----Original Message-----
From: Jaroslav Kysela [mailto:[EMAIL PROTECTED]
Sent: Thursday, March 11, 2004 11:30 PM
To: Takashi Iwai
Cc: Gupta, Kshitij; [EMAIL PROTECTED]
Subject: Re: FW: [Alsa-devel] DMA producer/consumer


On Thu, 11 Mar 2004, Takashi Iwai wrote:

> At Thu, 11 Mar 2004 18:43:39 +0100 (CET),
> Jaroslav wrote:
> > 
> > On Thu, 11 Mar 2004, Takashi Iwai wrote:
> > 
> > > unfortunately, the current implementation of ALSA PCM middle layer
> > > isn't well suited for this kind of hardwares.  it'll be a bit more
> > > complicated than you think.
> > 
> > I don't think that's this case. I'm not sure, if the basic midlevel 
> > mechanism is understood: The midle level code expects that driver 
> > start/stop the stream in the trigger callback, so if you can queue
> > more 'periods' into the DMA engine, do it and abort/pause the transfer
> > only the trigger callback request. You don't need to check appl/hw_ptr
> > in the lowlevel code.
> 
> hmm, if i understand correctly, this DMA engine needs the update of
> DMA queue.  i.e. the driver needs to feed chunks manually in prior
> to the DMA start, and continues feeding the available chunks after
> that as long as the stream is running.  this is somewhat analogous
> with the case with the external hardware buffer.

It was case for sb8 driver, I think that all newer hardware which can do
DMA transfers is designed to enqueue more blocks to avoid fifo underruns 
at the block boundary. At least the SA11xx ARM platform has the DMA engine 
for two blocks (one can be prepared during transfer of the opposite).

                                                Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to