linux/include/sound
Mark Brown c74184ed30 ASoC: core: Support transparent CODEC<->CODEC DAI links
Rather than having the user half start a stream but avoid any DMA to
trigger data flow on links which don't pass through the CPU create a
DAPM route between the two DAI widgets using a hw_params configuration
provided by the machine driver with the new 'params' member of the
dai_link struct.  If no configuration is provided in the dai_link then
use the old style even for CODEC<->CODEC links to avoid breaking
systems.

This greatly simplifies the userspace usage of such links, making them
as simple as analogue connections with the stream configuration being
completely transparent to them.

This is achieved by defining a new dai_link widget type which is created
when CODECs are linked and triggering the configuration of the link via
the normal PCM operations from there.  It is expected that the bias
level callbacks will be used for clock configuration.

Currently only the DAI format, rate and channel count can be configured
and currently the only DAI operations which can be called are hw_params
and digital_mute().  This corresponds well to the majority of CODEC
drivers which only use other callbacks for constraint setting but there
is obviously much room for extension here.  We can't simply call
hw_params() on startup as things like the system clocking configuration
may change at runtime and in future it will be desirable to offer some
configurability of the link parameters.

At present we are also restricted to a single DAPM link for the entire
DAI.  Once we have better support for channel mapping it would also be
desirable to extend this feature so that we can propagate per-channel
power state over the link.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
2012-04-16 19:36:29 +01:00
..
ac97_codec.h Fix common misspellings 2011-03-31 11:26:23 -03:00
aci.h ALSA: opti-miro: expose ACI mixer to outside drivers 2009-11-23 09:41:55 +01:00
ad1816a.h ALSA: ad1816a: enable hardware timer 2009-01-21 15:12:40 +01:00
ad1843.h ALSA: ALSA driver for SGI O2 audio board 2008-07-14 09:01:02 +02:00
adau1373.h ASoC: Add ADAU1373 codec support 2011-08-17 00:53:54 +09:00
ak4xxx-adda.h ALSA: ak4620 support, codec regs listed in proc 2009-09-21 15:44:51 +02:00
ak4113.h ALSA: i2c: cleanup: change parameter to pointer 2010-04-04 12:21:39 +02:00
ak4114.h ALSA: ak4114 - fix errors in output selector bits 2009-09-21 15:44:39 +02:00
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_fm.h
asound.h ALSA: control: add support for ENUMERATED user space controls 2011-10-09 09:09:11 +02:00
asoundef.h ALSA: IEC958 definition for consumer status channel update 2008-08-01 13:13:13 +02:00
atmel-abdac.h ALSA: Add ALSA driver for Atmel Audio Bitstream DAC 2009-02-05 15:08:48 +01:00
atmel-ac97c.h ALSA: Add ALSA driver for Atmel AC97 controller 2009-02-05 15:08:51 +01:00
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 The following text was taken from the original review request: 2012-03-24 10:41:37 -07:00
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
cs46xx.h
cs4231-regs.h ALSA: cs4236: update control names 2009-11-18 07:23:16 +01:00
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_synth.h
emu10k1.h ALSA: emu10k1: Fix warning: "CCR" redefined 2010-10-18 07:45:44 +02:00
emu8000_reg.h
emu8000.h
emux_legacy.h
emux_synth.h
es1688.h ALSA: Merge es1688 and es968 drivers 2010-05-10 09:49:30 +02:00
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 ALSA: hwdep - Fix coding style 2009-02-05 09:17:50 +01:00
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 ASoC: UDA134x codec driver 2008-11-17 11:45:39 +00:00
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 ALSA: Fix SG-buffer DMA with non-coherent architectures 2009-07-08 14:20:20 +02:00
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_oss.h ALSA: pcm_lib - cleanup & merge hw_ptr update functions 2010-01-07 15:47:38 +01:00
pcm_params.h ALSA: Make pcm.h self-contained 2011-07-26 17:21:24 +02:00
pcm-indirect.h
pcm.h Merge branch 'topic/asoc' into for-linus 2012-03-18 18:22:37 +01:00
pt2258.h
pxa2xx-lib.h [ARM] pxa: merge AC97 platform data structures 2009-04-15 10:54:06 +08:00
rawmidi.h ALSA: rawmidi - Use workq for event handling 2011-06-14 14:37:06 +02:00
s3c24xx_uda134x.h ASoC: Machine driver for for s3c24xx with uda134x 2008-11-17 11:45:53 +00:00
saif.h ASoC: mxs-saif: remove function in platform_data 2011-12-02 13:56:42 +08:00
sb16_csp.h ALSA: sb16 - Fix build errors on MIPS and others with 13bit ioctl size 2011-06-30 15:33:57 +02:00
sb.h ALSA: jazz16: Add support for Media Vision Jazz16 chipset 2009-12-21 12:09:22 +01: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_legacy.h
seq_oss.h
seq_virmidi.h
sfnt_info.h ALSA: Use define for ioctl definitions 2009-03-11 09:55:03 +01:00
sh_dac_audio.h ALSA: sh: add SuperH DAC audio driver for ALSA V4 2009-11-04 09:17:40 +01:00
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 ALSA: wss_lib: rename cs4231.h into wss.h 2008-08-06 15:39:47 +02:00
soc-dai.h ASoC: core: Add platform DAI widget mapping 2012-04-01 11:28:21 +01:00
soc-dapm.h ASoC: core: Support transparent CODEC<->CODEC DAI links 2012-04-16 19:36:29 +01:00
soc.h ASoC: core: Support transparent CODEC<->CODEC DAI links 2012-04-16 19:36:29 +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
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
tlv.h ALSA: tlv - Define numbers in sound/tlv.h 2010-10-17 10:46:14 +02: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 ASoC: UDA1380: refactor device registration 2009-06-15 21:54:48 +01:00
util_mem.h
version.h ALSA: Release v1.0.25 2012-01-25 10:19:35 +01:00
vx_core.h ALSA: Kill snd_assert() in other places 2008-08-13 11:46:40 +02:00
wavefront.h
wm1250-ev1.h ASoC: Add platform data for WM1250 EV1 GPIOs 2011-09-23 17:05:38 +01:00
wm2000.h ASoC: Add WM2000 driver 2010-02-12 10:31:06 +00:00
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 ASoC: Support GPIO based microphone detection for WM8904 2010-03-16 16:03:30 +00:00
wm8955.h ASoC: Add initial WM8955 CODEC driver 2009-12-18 13:06:47 +00:00
wm8960.h ASoC: Add support for WM8960 capless mode 2010-03-03 17:08:43 +00:00
wm8962.h ASoC: wm8962: Optimise power consumption for IN4 DC measurement usage 2012-01-24 21:19:45 +00:00
wm8993.h tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
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 ASoC: Add WM9090 amplifier driver 2010-04-30 16:12:44 +01:00
wss.h ALSA: cs4236: detect chip in one pass 2009-11-05 18:10:25 +01:00
ymfpci.h ALSA: ymfpci - Fix legacy registers on S3/S4 resume 2012-03-13 08:12:33 +01:00