linux-stable/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 ASoC: Convert afeb9260 to table based DAPM init 2012-02-01 21:52:54 +00:00
au1x Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-01-14 13:05:21 -08:00
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 ASoC: replace 0xffffffff with DMA_BIT_MASK macro 2012-01-20 13:58:26 +00:00
ep93xx ASoC: ep93xx-i2s: use devm_* helpers to cleanup probe 2012-04-01 11:28:29 +01:00
fsl Linux 3.4-rc3 2012-04-16 19:40:27 +01:00
generic ASoC: add generic simple-card support 2012-04-13 11:29:25 +01:00
jz4740 ASoC: JZ4740: Replaced comma operators with semicolons. 2012-04-06 18:22:05 +01:00
kirkwood ASoC: Convert kirkwood-openrd to use snd_soc_register_card() 2012-02-07 19:40:53 +00:00
mid-x86 ASoC: core: Add support for DAI and machine kcontrols. 2012-02-04 12:40:11 +00:00
mxs MTD merge for 3.4 2012-03-30 17:31:56 -07:00
nuc900 Merge branch 'master' into fixes 2012-01-13 15:00:22 +00:00
omap ARM: board specific updates 2012-03-27 16:27:28 -07:00
pxa Linux 3.4-rc3 2012-04-16 19:40:27 +01:00
s6000 ASoC: use proper defines for stream directions in pcm engines 2012-01-20 13:58:25 +00:00
samsung ASoC: samsung: Hook up AIF2 to the CODEC on Littlemill 2012-04-18 18:20:58 +01:00
sh ASoC: sh: fsi: select simple-card on Kconfig 2012-04-13 11:29:28 +01:00
tegra ASoC: convert Tegra20 DAS driver to regmap 2012-04-13 19:16:53 +01:00
txx9 dmaengine/dma_slave: introduce inline wrappers 2012-03-21 19:20:22 +05:30
Kconfig ASoC: add generic simple-card support 2012-04-13 11:29:25 +01:00
Makefile ASoC: add generic simple-card support 2012-04-13 11:29:25 +01:00
soc-cache.c ASoC: Remove rbtree register cache 2011-12-13 00:20:28 +08:00
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 ASoC: dmaengine_pcm: use dmaengine cyclic wrapper 2012-03-26 18:28:11 +01:00
soc-io.c ASoC: io: Retrieve val_bytes from the regmap API 2012-02-21 19:34:47 +00:00
soc-jack.c ASoC: jack: Push locking for jacks down to the jack 2012-04-01 11:28:23 +01:00
soc-pcm.c ASoC: dpcm: Add Dynamic PCM core operations. 2012-04-26 17:48:19 +01:00
soc-utils.c ASoC: utils - Add support for a dummy codec driver. 2012-01-20 13:58:27 +00:00