On Wed, May 26, 2010 at 11:34:08AM +0200, Eric B?nard wrote:
while trying to get a TI TLV320AIC23B codec configured as I2S master to work with an i.MX27 using the latest git kernel, I noticed there may be a problem in the slave I2S setting in imx-ssi.c
Please find two captures of the I2S bus signals :
- http://eukrea.com/tmp/initial_i2s.png : this is not an I2S signal,
both left & right are sent while Frame Sync is high (so I only get mono output)
- http://eukrea.com/tmp/i2s_slave.png : when I set I2S_MODE to 0x2 in
SCR register (scr |= SSI_SCR_NET | 0x40; at line 101 of imx-ssi.c), thus setting the SSI in "I2S slave mode", I get a real I2S signal as shown on this capture.
What are these captures actually of? The current mainline driver does not support master mode so whatever you're capturing won't have been generated by the i.MX. If you've implemented master mode it'd be nice to post the patch for this...
Am I wrong here ? Shouldn't we use the I2S slave mode of the SSI instead of what is done actually ?
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.
Most of the generic serial ports with an I2S mode aren't actually doing proper I2S but are rather configuring things that look close to it - it's common for them to not be able to tolerate extra BCLKs, for example.