On Wed, Apr 08, 2009 at 09:23:23AM +0300, Jarkko Nikula wrote:
What's actually state of the TDM container format support in ASoC?
It's largely punted to the machine driver.
I see there is that set_tdm_slot callback in struct snd_soc_dai_ops but only pxa-ssp.c is setting it currently.
Right. A large proprortion of the Wolfson codecs could set it too, as could many platforms that generate clocks manually, but it's not widely used since there's relatively few use cases in public hardware.
Am I correct that DSP_x, I2S are not multichannel but should be embedded into TDM if multichannel operation is wanted?
TDM mode is more intended for situations where a device is only going to be paying attention to some of the timeslots - for example, if you have a CPU, CODEC and baseband processor sharing one set of data lines and want to send data between multiple devices.
For I2S the normal multichannel implementation is to use multiple data lines with shared clock lines - there's no natural extension within the one data line - so TDM mode would be needed. For DSP mode there's a more natural extension (just transmit additional channel data after the final one, you're allowed extra bit clocks anyway) so it's less needed.
So should Peter's these two patches take this API into use?
"[PATCH 2/6] ASoC: OMAP mcbsp: Add 4 channel support" "[PATCH 6/6] ASoC: Beagle: Add support for 4 channel mode"
For DSP mode it's up to you; personally I wouldn't bother unless the code supports ignoring some of the timeslots. It's more likely that any other devices sharing the DAI would need TDM to pick out or fill the data streams relevant to them.