Re: [RFC/PATCH] Stop Apple i2s DMA gracefully

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

 



On Sun, 2006-10-29 at 15:19 +1100, Paul Mackerras wrote:
> This fixes the problem of getting extra bytes inserted at the
> beginning of a recording when using the Apple i2s interface and DBDMA
> controller.  It turns out that we can't just abort the DMA; we have to
> let it stop at the end of a command, and then wait for the S7 bit to
> be set before turning off the DBDMA controller.  Doing that for
> playback doesn't seem to be necessary, but doesn't hurt either.
> 
> We use the technique used by the Darwin driver: make each transfer
> command branch to a stop command if the S0 status bit is set.  Thus we
> can ask the DMA controller to stop at the end of the current command
> by setting S0.
> 
> The interrupt routine now looks at and clears the status word of the
> DBDMA command ring.  This is necessary so it can know when the DBDMA
> controller has seen that S0 is set, and so when it should look for the
> DBDMA controller being stopped and S7 being set.  This also ended up
> simplifying the calculation in i2sbus_pcm_pointer.
> 
> Tested on a 15 inch albook.

Great!

> +			if (in_le32(&pi->dbdma->status) & ACTIVE) {
> +				/* possible race here? */
> +				udelay(10);
> +				if (in_le32(&pi->dbdma->status) & ACTIVE)
> +					goto out_unlock; /* keep running */

Maybe we should clear the S0 bit and then check if it's active?

Clearing the S0 bit when the DMA engine has already stopped doesn't make
a difference, and when it is still active we want to clear S0 in this
'play again case' anyway. Then if we clear it and check the ACTIVE bit
afterwards we can be sure that if it is still set the engine will
continue running.

Other than that, looks great to me, thanks a lot!

johannes

Attachment: signature.asc
Description: This is a digitally signed message part

-------------------------------------------------------------------------
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