On 03/09/2014 10:11 AM, Mark Brown wrote:
On Fri, Mar 07, 2014 at 02:45:27PM +0200, Jyri Sarha wrote:
However, I think there is a problem with simple-card. It does not invert bitclock-master and frame-master values when converting them to CB[SM] and CF[SM] for cpu_dai as I think it should. I can get around it by setting the both cpu-dai and the codec as bclk and frame masters in the sound node. I volunteer to fix this if you agree.
No, it shouldn't do any inversion. If inversion is required one of the drivers is buggy, they are CODEC bit master and CPU bit master so for a CPU driver the sense should be inverted when parsing.
Yes, that is the problem. The same code in simple-card parses the codec node and cpu-dai node and they produce the same SND_SOC_DAIFMT_C??_C?? flags for both codec and cpu-dai drivers.
For example:
simple-audio-card,cpu { sound-dai = <&mcasp1>; };
causes SND_SOC_DAIFMT_CBS_CFS flags to be set to mcasp driver in set_dai_fmt() call. So omitting the bitclock-master and frame-master parameters from cpu-dai node strangely indicates that the cpu-dai should be the bitclock and frame master. Can this be right?
If you do not want to have the inversion, could we at least call the parameters codec-bitclock-master and codec-frame-master.
Best regards, Jyri