linux/sound/soc
Liam Girdwood 01d7584cd2 ASoC: dpcm: Add Dynamic PCM core operations.
The Dynamic PCM core allows digital audio data to be dynamically
routed between different ALSA PCMs and DAI links on SoC CPUs with
on chip DSP devices. e.g. audio data could be played on pcm:0,0 and
routed to any (or all) SoC DAI links.

Dynamic PCM introduces the concept of Front End (FE) PCMs and Back
End (BE) PCMs. The FE PCMs are normal ALSA PCM devices except that
they can dynamically route digital audio data to any supported BE
PCM. A BE PCM has no ALSA device, but represents a DAI link and it's
substream and audio HW parameters.

e.g. pcm:0,0 routing digital data to 2 external codecs.

FE pcm:0,0  ----> BE (McBSP.0) ----> CODEC 0
             +--> BE (McPDM.0) ----> CODEC 1

e.g. pcm:0,0 and pcm:0,1 routing digital data to 1 external codec.

FE pcm:0,0 ---
             +--> BE (McBSP.0) ----> CODEC
FE pcm:0,1 ---

The digital audio routing is controlled by the usual ALSA method
of mixer kcontrols. Dynamic PCM uses a DAPM graph to work out the
routing based upon the mixer settings and configures the BE PCMs
based on routing and the FE HW params.

DPCM is designed so that most ASoC component drivers will need no
modification at all. It's intended that existing CODEC, DAI and
platform drivers can be used in DPCM based audio devices without
any changes. However, there will be some cases where minor changes
are required (e.g. for very tightly coupled HW) and there are
helpers to support this too.

Somethimes the HW params of a FE and BE do not match or are
incompatible, so in these cases the machine driver can reconfigure
any hw_params and make any DSP perform sample rate / format conversion.

This patch adds the core DPCM code and contains :-

 o The FE and BE PCM operations.
 o FE and BE DAI link support.
 o FE and BE PCM creation.
 o BE support API.
 o BE and FE link management.

Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-04-26 17:48:19 +01:00
..
atmel
au1x
blackfin ASoC: bf5xx-ssm2602: Setup sysclock in init callback 2012-04-25 11:19:31 +01:00
codecs ASoC: SSM2602: Convert to direct regmap API usage 2012-04-25 11:28:10 +01:00
davinci
ep93xx
fsl Linux 3.4-rc3 2012-04-16 19:40:27 +01:00
generic
jz4740
kirkwood
mid-x86
mxs
nuc900
omap
pxa Linux 3.4-rc3 2012-04-16 19:40:27 +01:00
s6000
samsung ASoC: samsung: Hook up AIF2 to the CODEC on Littlemill 2012-04-18 18:20:58 +01:00
sh
tegra
txx9
Kconfig
Makefile
soc-cache.c
soc-core.c ASoC: dpcm: Add Dynamic PCM core operations. 2012-04-26 17:48:19 +01:00
soc-dapm.c ASoC: dapm: Add API call to query valid DAPM paths 2012-04-18 18:23:00 +01:00
soc-dmaengine-pcm.c
soc-io.c
soc-jack.c
soc-pcm.c ASoC: dpcm: Add Dynamic PCM core operations. 2012-04-26 17:48:19 +01:00
soc-utils.c