[alsa-devel] [PATCH v5] ASoC: cs53l30: Add support for Cirrus Logic CS53L30

Caleb Crome caleb at crome.org
Wed Jun 1 00:32:05 CEST 2016


On Tue, May 31, 2016 at 10:35 AM, Mark Brown <broonie at kernel.org> wrote:

> On Tue, May 31, 2016 at 10:10:11AM -0700, Caleb Crome wrote:
> > On Tue, May 31, 2016 at 9:53 AM, Mark Brown <broonie at kernel.org> wrote:
>
> > > That's a really rare thing to have as an option, most things either do
> > > TDM or parallel data signals but not both.
>
> > Interesting comment.  While I'm sure that's true for the moment,
> > microphone arrays are changing this quickly.  I fall into the oddball
> > category that the main chips I use are the TLV320AIC34 and CS53L30,
> > and both of them can switch between TDM mode or dual I2S mode for 4
> > channel support.
>
> I'm not sure why mic arrays would drive that, it's not like they're
> particularly new or innovative technology here and multi channel output
> has been even more widely available for a long time?
>

Good point.  I guess I'm coming from the SoC/mobile world where most SoCs
support stereo only, and a couple microphones at most.  Now phones have 3-4
or more microphones.   Amazon echo has 7 mics.  We're working on arrays of
16 and beyond, and getting those channels into linux has proven to be an
enormous headache given the hardware and software status of many of the
SoCs our customers want to use.


>
> > Since I need to get many channels on board, and SoCs (except for TI)
> > rarely have enough parallel I2S ports for mic arrays, I opt for TDM
> > mode often.
>
> Modern systems all use TDM for the most part ...
>

We must be looking at different sorts of chips :-)  Even on new parts like
the Snapdragon 410, they have a super inflexible I2S only port. (up to 3
parallel I2S for up to 6 channels, but no TDM).

>From my experience, the SoC support for TDM has been essentially
nonexistent, except for TI's McBSP and McASP.  I'd sure welcome a Cortex
A53 or A57 (or even A15 for that matter!) that has good TDM support.

Here are the chips that we've come across lately from our customers:

MX6 (SSI):  hardware supports TDM, but linux didn't until recently (thanks
everybody for help with that!)
MX6 (ESAI): not available on MX6 solo, nor on any SOM modules I've ever
seen, but supported if you can get to the pins.
MX7: (SAI):  hardware supports TDM, linux BSP driver does not.
TI parts (McASP): supported in hardware & software
TI parts (McBSP): supported in hardware & software
Qualcomm Snapdragon 410c (MI2S):  TDM not possible in hardware.  Supports
multiple parallel I2S channels only.
Broadcom:  (forgot part number...)  hardware supports TDM.  software still
in the works but apparently somebody's working on it.

A quick grep for channels_max > 2 in sound/soc shows the following few
drivers that support channels > 2 (not necessarily even in TDM mode).  All
the rest are 2 channels max.

pxa/mmp-sspa: 128/2 (playback/capture).
pxa/pxa-ssp:     8/8
zx286702-i2s.c:  8/2
fsl_esai: 12/8
fsl_ssi: 32/32
blackfin 5:  8/8 channels
blackfin 6:  2/2 channels only.
mcbsp: 16/16
mcasp: 512/512

and a few other chips that I'm not familiar with.  So  there does not seem
to be overwhelming support for TDM in Alsa ASoC.  To what extent this is a
software vs. hardware issue could use a little investigation.

the bummer is that even newer chips like the snapdragon are still using
really inflexible ports.

So... if anybody knows of a Cortex A53 or A57 with good TDM support in
linux (at least 16 channels in and out), I'd love to know about it :-)

-Caleb


More information about the Alsa-devel mailing list