Mark Brown wrote at Wednesday, November 23, 2011 3:46 PM:
On Wed, Nov 23, 2011 at 02:30:12PM -0800, Stephen Warren wrote:
Mark Brown wrote at Wednesday, November 23, 2011 2:59 PM:
That said, while these values are constant right now, I think they won't always be; I think we'll need to switch between DSP mode for mono and I2S mode for stereo here; at least I /think/ that's what I remember our downstream drivers doing...
That would be a surprising restriction for your hardware to have. From the CODEC point of view it really doesn't care at all, all the interface formats are interchangable.
I believe Tegra20 HW "hard-codes" the channel count to 2 in I2S mode, And hence always pulls 2 channels from the FIFO for each frame. So, I2S can't do mono. This appears to be fixed in Tegra30. Tegra can be surprising:-)
If it's got that restriction why not run it in PCM mode all the time?
That's a good idea. The internal feedback is that should work.
Leon, I'd suggest just hard-coding the current values into .dai_fmt as Mark suggested. I'll take an action to investigate switching to DSP/PCM mode, mono support, and switching the machine drivers (and I2S driver) to it.