On Tue, Feb 26, 2019 at 11:31:15AM -0500, Sven Van Asbroeck wrote:

> That's a very good point too. In light of this, I struggle to understand how
> the ssl_ssi can specify this:

> static struct snd_soc_dai_driver fsl_ssi_dai_template = {
>         .playback = {
>                 .stream_name = "CPU-Playback",
>                 .channels_min = 1,
>                 .channels_max = 32,
>         },

> There is talk in the manual about "network mode", which could work by changing
> the LRCLK only at the first slot - thereby allowing clients to receive all
> slots just by counting, as long as they know the slot size?

That's basically what the FSL controllers want to support - they're
generic programmable serial ports, their most native formats are the DSP
modes which only pay attention to one edge of LRCLK and then just have
however many samples one after another.  Several other devices like the
PXA SSP ports are similar.  They can generate I2S style LRCLKs but many
implementations struggle to interpret incoming I2S properly, they often
have issues with triggering on both rising and falling edges so get
confused if there's any unused clock cycles.

For a DSP mode it's more:

LRCLK   /\______________________/\____
DATA    |SLOT1|SLOT2|SLOT3|SLOT4|SLOT1

I2S style it'd end up as more like:

LRCLK   /-------------\_____________/------
DATA    |SLOTL1|SLOTL2|SLOTR1|SLOTR2|SLOTL1

This sort of stuff is why ASoC has a preference for exact clocking - it
improves interoperability with hardware that's generic serial ports as
it means that you only need to pay attention to one edge of the LRCLK
even if it's doing something more than just a simple pulse.

Attachment: signature.asc
Description: PGP signature

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to