On Monday 06 April 2009 15:37:58 Ujfalusi Peter (Nokia-D/Tampere) wrote:
On Monday 06 April 2009 15:22:33 ext Mark Brown wrote:
On Mon, Apr 06, 2009 at 03:19:27PM +0300, Peter Ujfalusi wrote:
Add SND_SOC_DAIFMT_DSP_A support for omap-mcbsp. The configuration for DSP_A and DSP_B is the same.
That doesn't sound right - the two formats do differ on the wire. In mode B the MSB of data is transmitted along with the LRC pulse while in mode A it is transmitted after the trailing edge of the LRC pulse.
That is why I have asked previously about these... I'm still a bit confused, but at the end (I think) the configuration in omap-mcbsp is right for the twl4030: regs->srgr2 |= FPER(wlen * channels - 1); regs->srgr1 |= FWID(wlen * channels - 2); and /* 0-bit data delay */ regs->rcr2 |= RDATDLY(0); regs->xcr2 |= XDATDLY(0);
I'll revisit this.
I have taken a look about the DSP_A and DSP_B modes in omap-mcbsp. The only board uses the DSP_B mode is the osk5912 with the tlv320aic23 codec. I have downloaded the data sheet for the tlv320aic23 and I think that the DSP mode in tlv320aic23 is identical to the TDM mode in twl4030 except for the clock polarity twl4030: Samples the data on falling edge, shifts data out (and changes the FS) on rising edge tlv320aic23: Samples the data on rising, shifts data out (and changes the FS) on falling edge
This difference is taken care with the SND_SOC_DAIFMT_NB_IF (osk5912) and SND_SOC_DAIFMT_IB_NF (beagle).
I would say, that I'm still confused over this...
References: tlv320aic23: http://focus.ti.com/lit/ds/slws106d/slws106d.pdf Page 28 (3-8) twl4030: http://focus.tij.co.jp/jp/lit/ug/swcu050b/swcu050b.pdf Page 712 (TDM mode, Sample length 16 bits; Word length 16 bits)