On Thursday 09 April 2009 13:16:55 Ujfalusi Peter (Nokia-D/Tampere) wrote:
On Thursday 09 April 2009 13:00:14 Nikula Jarkko (Nokia-D/Helsinki) wrote:
On Thu, 9 Apr 2009 11:34:41 +0200
"Ujfalusi Peter (Nokia-D/Tampere)" peter.ujfalusi@nokia.com wrote:
- case SND_SOC_DAIFMT_DSP_B:
- case SND_SOC_DAIFMT_DSP_A: /* 0-bit data delay */ regs->rcr2 |= RDATDLY(0); regs->xcr2 |= XDATDLY(0);
--
Are you absolutely sure on this? According to WM9713, it's the DSP_A where MSB is valid after 1 bit clock period of the FS.
I think this is correct. The data is going to be valid exactly the same way, as the WM9713 data sheet describes.
As for the DSP_B mode: I think it can be implemented like this: Invert the frame sync polarity, Then: case SND_SOC_DAIFMT_DSP_B: regs->srgr2 |= FPER(wlen * channels - 1); regs->srgr1 |= FWID(0); /* FS pulse width is 1 */ break;
So the MSB will be in the correct place.
BTW: I have draw it to paper the following to verified these: 1) how mcbsp would operate with the osk5912 config (as it was): snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_CBM_CFM);
Than after the change: 2) how mcbsp would operate with the osk5912 config (my proposal): err = snd_soc_dai_set_fmt(codec_dai, snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
3) how mcbsp would operate with the omap3beagle 4 channel mode: fmt = SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_CBM_CFM;
Than I compared these drawings to the pictures in the data sheets (tlv320aic32, twl4030): 1) Does not match at all 2) 100% match 3) 100% match
I think if the osk5912 wants to use the codec with DSP_B mode it should have: snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_CBM_CFM);
Than in omap-mcbsp: case SND_SOC_DAIFMT_DSP_B: regs->srgr2 |= FPER(wlen * channels - 1); regs->srgr1 |= FWID(0); /* FS pulse width is 1 */ break;
Than it would have been correct, I think. Probably I should send the DSP_B support also in the series?