On Thu, May 27, 2010 at 03:15:51AM +0200, Eric BĂ©nard wrote:
The problem on the first capture is that the SSI send the data for both channels on one half of the framesync's period => codec outputs sound on only one channel.
By setting the mode to I2S_SLAVE, the SSI send the data the way the codec expect it : one channel when framesync is high and one channel when framesync is low.
Right, this is the thing I was saying about being unable to tolerate extra BCLKs when in I2S mode. In general with these generic serial ports you're much better off using one of the DSP modes, it's what they naturally implement.
If I remember correctly the I2S slave mode isn't exactly I2S compliant either and is actually just setting up similar settings to override other registers. I could be wrong, or this could have changed in later i.MXs.
this is what is written in the comment, but in the iMX manual (at least 25 & 27), there is an I2S_SLAVE mode which seems to set more things than what is actually done in the driver as when I enable this, I get a perfect sound of both channels (and recording also works fine).
That register is present in later i.MX CPUs too, the issue is if it actually does what is expected robustly.