Em Seg, 2008-10-27 às 13:44 +0000, Mark Brown escreveu:
On Mon, Oct 27, 2008 at 11:19:34AM -0200, Daniel Ribeiro wrote:
Ok, i will rebase my work on pxa-ssp.c. But a first look shows that pxa_ssp_hw_params sets the ssp frame size depending on the audio stream format even for I2S mode. I think it will not work, as I2S needs to stick to 32bit frame size.
That's not a general requirement of I2S - many devices are OK with scaling the number of bit clocks with the data.
Is there anybody using SND_SOC_DAIFMT_I2S with this driver?
I'd go so far as to say that most of the testing has been in I2S mode. Other modes have been tested but most of the usage is with I2S.
I suspect that what you need to do here to interoperate well with your codec is to set things up to use TDM so that the extra clocks are generated by what the CPU believes are idle TDM slots.
Im trying to setup as you said.
I get correct audio if use one tdm_slot and mono audio, but i couldnt get stereo audio working correctly without changing the ssp frame size.
Here are my test results for stereo S16_LE audio:
set_tdm_slot(cpu_dai, 1, 2), SSCR0_Datasize(16): Only left channel works.
set_tdm_slot(cpu_dai, 2, 2), SSCR0_Datasize(16): No I/O.
set_tdm_slot(cpu_dai, 3, 2), SSCR0_Datasize(16): Only left channel works.
set_tdm_slot(cpu_dai, 1, 1), SSCR0_Datasize(16) | SSCR0_EDSS: Both channels work.
What could be wrong? Can you suggest me how to setup the tdm slots so i can get both channels? On my board CLK and FRM are driven by the codec, pxa is slave. I have no specs for the codec, only a 2.4 kernel driver that works with (SSCR0_Datasize(16) | SSCR0_EDSS | SSCR0_SlotsPerFrm(1)).
I will send you a patch later today. Thanks for the reply! :)
When submitting patches please do try to submit separate patches for separate logical changes - for example, your previous patch mixed in changes for recent PXA APIs with changes in the behaviour of the code.
That was not a patch submission. :)