All of lore.kernel.org
 help / color / mirror / Atom feed
* PXA SSP and external clocked I2S again
@ 2009-03-04 20:15 Daniel Mack
  2009-03-04 20:16 ` [PATCH 1/4] pxa-ssp: fix name of register bit Daniel Mack
  0 siblings, 1 reply; 28+ messages in thread
From: Daniel Mack @ 2009-03-04 20:15 UTC (permalink / raw)
  To: alsa-devel; +Cc: Tim Ruetz

Hi,

as denoted yesterday, we've spend some more time on the PXA/SSP/I2S
issue and would like to share conclusions about out utterly frustrating
trial-and-error sessions during the last days, especially as reference
for everyone who tries to get a similar setup running.

The situation on our board is: we have a tunable master clock generator,
a CS4270 codec and an PXA303 connected to each other. In order to use
the master clock, the PXA needs to be set to an external clock mode and
for the CS4270 to operate properly, we need to provide a full 64 bits
I2S stream, even though not all of the data bits (in fact, currently
only 16 of them per channel) carry data.

The above thing was not possible with the pxa-ssp's current approach as
it entirely relyed on the network mode and the time slots mechanism
which is - according to the datasheets - supposed to do exactly this,
but which simply doesn't work at all. It might work for existing boards
without our constrains, but that's more or less due to coincidence.

Hence, we switched over to non-network mode and fiddled around with the
PSP bits a lot until we found a mode that fits our needs, at least as
long as we let the PXA be master in the game (which we did for test
purposes).

As soon as the clock direction changes (codec takes over control for
LRCLK and bitclk), the PSP feature fails badly again. The final solution
is now to never ever set the PXA to a real slave mode (DAIFMT_CBM_CFM)
but only provide the master clock to its input pin (SSPEXTCLK), set the
clock config to SSP_CLK_EXT and let the PXA derive the other clocks from
that one internally.

Another thing is: ALSA doesn't currently provide a way to configure a
DAI format where the I2S protocol has more clock bits than data bits.
One of the upcoming series of 4 patches adds them.

Best regards,
Daniel

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2009-03-10 15:56 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-04 20:15 PXA SSP and external clocked I2S again Daniel Mack
2009-03-04 20:16 ` [PATCH 1/4] pxa-ssp: fix name of register bit Daniel Mack
2009-03-04 20:16   ` [PATCH 2/4] soc-dai: add bitfields for hardware I2S formats Daniel Mack
2009-03-04 20:16     ` [PATCH 3/4] pxa-ssp: don't touch ssp registers when stream is running Daniel Mack
2009-03-04 20:17       ` [PATCH 4/4] pxa-ssp: switch from network mode to psp Daniel Mack
2009-03-04 20:56         ` pHilipp Zabel
2009-03-04 23:03           ` Daniel Mack
2009-03-05 10:36             ` Daniel Mack
2009-03-05 11:21             ` Mark Brown
2009-03-05 11:26               ` Daniel Mack
2009-03-05 16:01             ` pHilipp Zabel
2009-03-05 13:21         ` Daniel Mack
2009-03-05 13:34           ` Mark Brown
2009-03-04 20:33       ` [PATCH 3/4] pxa-ssp: don't touch ssp registers when stream is running Mark Brown
2009-03-04 20:39         ` Daniel Mack
2009-03-04 20:42           ` Mark Brown
2009-03-05 10:23             ` Daniel Mack
2009-03-10 15:41               ` Daniel Mack
2009-03-10 15:56                 ` Mark Brown
2009-03-04 22:30     ` [PATCH 2/4] soc-dai: add bitfields for hardware I2S formats Mark Brown
2009-03-04 23:12       ` Daniel Mack
2009-03-05 10:53         ` Mark Brown
2009-03-05 11:31           ` Daniel Mack
2009-03-05 12:03             ` Mark Brown
2009-03-05 12:55               ` Daniel Mack
2009-03-05 12:57                 ` Mark Brown
2009-03-05 15:58                 ` pHilipp Zabel
2009-03-05 11:40   ` [PATCH 1/4] pxa-ssp: fix name of register bit Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.