Currently, we have the line
runtime->hw.formats = codec_dai->playback.formats & cpu_dai->playback.formats;
in soc-core.c
This seems to force the two to support a common subset. For example some codec support only big-endian or little-endian
My codec expects the most significant bit to be shifted 1st. I would call that big-endian. But the codec marks itself as only doing little endian, because the cpu_dai converts from little-endian to big-endian. Do all codecs expect the msb 1st? If so, then endianness would seem irrelevant to codecs and both should be set.
The same goes with number of channels. The davinci dma engine can convert a playback stream from mono to stereo, or a capture stream from stereo to mono. The davinci McBsp can also be more efficient if allowed to swap left and right channels. Is there a method to let the codec know to swap them back?
Thanks Troy