remarkable-linux/include/sound
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
..
ac97_codec.h Fix common misspellings 2011-03-31 11:26:23 -03:00
aci.h
ad1816a.h
ad1843.h
adau1373.h ASoC: Add ADAU1373 codec support 2011-08-17 00:53:54 +09:00
ak4xxx-adda.h
ak4113.h
ak4114.h
ak4117.h
ak4531_codec.h
ak4641.h ASoC: Asahi Kasei AK4641 codec driver 2011-05-19 14:10:45 -07:00
alc5623.h ASoC: add support for alc562[123] codecs 2010-10-21 13:51:13 -07:00
asequencer.h
asound.h ALSA: control: add support for ENUMERATED user space controls 2011-10-09 09:09:11 +02:00
asound_fm.h
asoundef.h
atmel-abdac.h
atmel-ac97c.h
compress_driver.h ALSA: core: add API header and driver header files 2011-12-23 10:08:11 +01:00
compress_offload.h ALSA: core: add API header and driver header files 2011-12-23 10:08:11 +01:00
compress_params.h headers: include linux/types.h where appropriate 2012-03-23 16:58:31 -07:00
control.h Merge branch 'topic/asoc' into for-linus 2012-03-18 18:22:37 +01:00
core.h ALSA: hda - hide HDMI/ELD printks unless snd.debug=2 2012-04-10 14:53:55 +02:00
cs46xx.h
cs46xx_dsp_scb_types.h
cs46xx_dsp_spos.h Fix common misspellings 2011-03-31 11:26:23 -03:00
cs46xx_dsp_task_types.h
cs4231-regs.h
cs4271.h ASoC: CS4271: Move Chip Select control out of the CODEC code. 2011-02-08 11:26:14 +00:00
cs8403.h
cs8427.h
dmaengine_pcm.h ASoC: Add dmaengine PCM helper functions 2012-03-02 13:47:25 +00:00
emu10k1.h ALSA: emu10k1: Fix warning: "CCR" redefined 2010-10-18 07:45:44 +02:00
emu10k1_synth.h
emu8000.h
emu8000_reg.h
emux_legacy.h
emux_synth.h
es1688.h
gus.h
hda_hwdep.h
hdsp.h ALSA: hdsp - Add support for RPM io box 2010-12-01 12:14:47 +01:00
hdspm.h Fix common misspellings 2011-03-31 11:26:23 -03:00
hwdep.h
i2c.h
info.h switch procfs to umode_t use 2012-01-03 22:54:56 -05:00
initval.h sound: irq: Remove IRQF_DISABLED 2011-09-22 11:19:20 +02:00
jack.h ALSA: Use a define for the number of jack switch types 2012-02-27 17:34:44 +01:00
Kbuild ALSA: export compress headers 2011-12-31 17:53:52 +01:00
l3.h
max9768.h ASoC: max9768: add driver for max9768 amplifier 2012-01-30 21:50:55 +00:00
max98088.h ASoC: Restore MAX98088 CODEC driver 2010-10-18 16:46:27 -07:00
max98095.h ASoC: max98095: add jack detection 2012-04-01 11:28:24 +01:00
memalloc.h
minors.h ALSA: core: add support for compressed devices 2011-12-23 10:07:46 +01:00
mixer_oss.h ALSA: core: sparse cleanups 2011-02-14 17:10:11 +01:00
mpu401.h ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
opl3.h
opl4.h
pcm-indirect.h
pcm.h Merge branch 'topic/asoc' into for-linus 2012-03-18 18:22:37 +01:00
pcm_oss.h
pcm_params.h ALSA: Make pcm.h self-contained 2011-07-26 17:21:24 +02:00
pt2258.h
pxa2xx-lib.h
rawmidi.h ALSA: rawmidi - Use workq for event handling 2011-06-14 14:37:06 +02:00
s3c24xx_uda134x.h
saif.h ASoC: mxs-saif: remove function in platform_data 2011-12-02 13:56:42 +08:00
sb.h
sb16_csp.h ALSA: sb16 - Fix build errors on MIPS and others with 13bit ioctl size 2011-06-30 15:33:57 +02:00
seq_device.h
seq_kernel.h treewide: use __printf not __attribute__((format(printf,...))) 2011-10-31 17:30:54 -07:00
seq_midi_emul.h
seq_midi_event.h
seq_oss.h
seq_oss_legacy.h
seq_virmidi.h
sfnt_info.h
sh_dac_audio.h
sh_fsi.h ASoC: sh: fsi: use simple-card instead of fsi-ak4642 2012-04-13 11:29:26 +01:00
simple_card.h ASoC: add generic simple-card support 2012-04-13 11:29:25 +01:00
snd_wavefront.h
soc-dai.h ASoC: core: Add platform DAI widget mapping 2012-04-01 11:28:21 +01:00
soc-dapm.h ASoC: dapm: Add API call to query valid DAPM paths 2012-04-18 18:23:00 +01:00
soc-dpcm.h ASoC: dpcm: Add Dynamic PCM core operations. 2012-04-26 17:48:19 +01:00
soc.h ASoC: dpcm: Add Dynamic PCM core operations. 2012-04-26 17:48:19 +01:00
soundfont.h treewide: fix potentially dangerous trailing ';' in #defined values/expressions 2011-07-21 14:10:00 +02:00
sta32x.h ASoC: sta32x: add workaround for ESD reset issue 2011-11-14 21:36:43 +00:00
tea575x-tuner.h [media] tea575x-tuner: update to latest V4L2 framework requirements 2012-03-19 11:27:21 -03:00
tea6330t.h
timer.h
tlv.h ALSA: tlv - Define numbers in sound/tlv.h 2010-10-17 10:46:14 +02:00
tlv320aic3x.h ASoC: omap: Update e-mail address of Jarkko Nikula 2011-08-12 11:45:10 +09:00
tlv320aic32x4.h ASoC: Add TI tlv320aic32x4 codec support. 2011-03-04 18:21:08 +00:00
tlv320dac33-plat.h ASoC: tlv320dac33: Update e-mail address 2011-05-11 16:12:35 +01:00
tpa6130a2-plat.h ASoC: tpa6130a2: Remove model_id from platform data 2011-09-21 16:07:45 +01:00
trident.h
uda134x.h ASoC: uda134x: replace a macro with a value in platform struct. 2010-06-25 12:29:01 +01:00
uda1380.h
util_mem.h
version.h ALSA: Release v1.0.25 2012-01-25 10:19:35 +01:00
vx_core.h
wavefront.h
wm1250-ev1.h ASoC: Add platform data for WM1250 EV1 GPIOs 2011-09-23 17:05:38 +01:00
wm2000.h
wm2200.h ASoC: wm2200: Add WM2200 CODEC driver 2012-01-26 16:07:55 +00:00
wm5100.h ASoC: Add WM5100 driver 2011-09-20 16:02:16 +01:00
wm8903.h ASoC: WM8903: Fix platform data gpio_cfg confusion 2011-12-06 10:29:22 +00:00
wm8904.h
wm8955.h
wm8960.h
wm8962.h ASoC: wm8962: Optimise power consumption for IN4 DC measurement usage 2012-01-24 21:19:45 +00:00
wm8993.h
wm8996.h ASoC: Rename WM8915 to WM8996 2011-08-08 14:30:37 +09:00
wm9081.h ASoC: Add platform data for WM9081 IRQ pin configuration 2011-03-01 23:30:53 +00:00
wm9090.h
wss.h
ymfpci.h ALSA: ymfpci - Fix legacy registers on S3/S4 resume 2012-03-13 08:12:33 +01:00