[alsa-devel] [RFC] I2S and LEFT_J
daniel at caiaq.de
Tue Jun 23 00:14:30 CEST 2009
On Thu, Jun 18, 2009 at 09:30:58AM -0300, Daniel Ribeiro wrote:
> If your codec can work with S16LE and 32bitfs, then i suggest you to use
> this mode. If not, then you need to setup TDM.
> For 2*16 on 64bitfs:
> Call set_tdm_slot(5, 5, 4, 16).
I tried your three patches now, and it doesn't seem to work for me.
Using the mode above, I get the following register values:
And on the oscilloscope, I see an asynchronous LRCLK.
set_tdm_slot(3, 3, 2, 16) gave me slightly better results, but the PSP
values are stil bogus (SFRMWDTH=0x10 and EDMYSTOP=0x7).
When manually forcing (E)DMYSTOP=0xf and SFRMWDTH=0x20, the signal looks
correct at first, but the audio material is played back at half speed.
This is where I stopped for now. I can just tell that I've spent many
hours playing with these bits and never found a fully working networked
mode based setting for that kind of signal output.
What's worth mentioning is this quote from the PXA datasheet - the code
does not currently follow that rule:
"When using Programmable Serial Protocol (PSP) format in network
mode, the parameters SFRMDLY, STRTDLY, DMYSTP, EDMYSTP, DMYSTRT, and
EDMYSTRT must be set to 0b0; the other parameters SFRMP, SCMODE, FSRT,
and SFRMWDTH are programmable."
(4.5.8 SSP Programmable Serial Protocol Registers (SSPSP_x))
AFAIK, Eric and Paul seem to have the exactly same requirements, so
maybe they can test and get back with more results?
Without network mode, these are the register values that do what I need:
(SSTSA/SSRSA don't matter in this case)
Let me know if I can provide any more feedback :)
(2: i2s_txd, 1:i2s_frame, 3:i2s_clk)
More information about the Alsa-devel