Re: delayed dma trigger

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Mon, 23 Oct 2006 10:49:51 +0200,
Johannes Berg wrote:
> 
> Hi,
> 
> For AOA, there are some DMA engine programming pitfalls I wasn't aware
> of previously (actually, I was aware of the bug it triggered but not
> quite why it happened). But now we have two questions about the trigger
> callback.
> 
> (1)
> When correctly using the i2s bus (aoa isn't at the moment), it is not
> possible to immediately stop doing DMA, the DMA engine has to finish the
> current period first, then go into a stop condition, and only after that
> we can stop the engine completely. Hence, this can take quite a while
> (up to the period length). Is it ok to set the stop condition and return
> from the trigger function without having DMA stopped? It'll be
> completely stopped asynchronously on the next interrupt, and we'd have
> to make the hw_free callback wait for that, I guess.

Yes, but hw_free isn't enough.  You'd need a DMA sync in prepare
callback since a typical repeated play flow is like:
	open -> hw_params -> prepare -> trigger(START) ->
		running -> trigger(STOP) ->
		 prepare -> trigger(START) -> ...

> (2)
> Relating to that, if a start trigger comes in before the DMA engine is
> stopped, it would be nice if we could just clear the stop condition and
> let it continue to run. Can recording start at any arbitrary period in
> the buffer relying only on the pointer callback?
> [Actually, come to think of it, isn't this required for proper 'pause'
> function during playback or recording? I guess aoa is wrong now then?]

Well, you can of course trick in the lowlevel code as if DMA is newly
started.  For PCM middle layer, it doesn't matter.

But, the value returned from pointer callback must be reset to zero
once after prepare callback is called.  So, the lowlevel code should
handle an offset from the actual DMA pointer value in such a case.


Takashi

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux