aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLiam Girdwood <lrg@ti.com>2012-04-25 07:12:52 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-04-26 12:48:42 -0400
commit07bf84aaf736781a283b1bd36eaa911453b14574 (patch)
treedc20d6d15dd5e90e25ec93146e87e3272e597395 /include
parent47c88ffff73d27425be59b34a6d5a91518b5ebed (diff)
ASoC: dpcm: Add bespoke trigger()
Some on SoC DSP HW is very tightly coupled with DMA and DAI drivers. It's necessary to allow some flexability wrt to PCM operations here so that we can define a bespoke DPCM trigger() PCM operation for such HW. A bespoke DPCM trigger() allows exact ordering and timing of component triggering by allowing a component driver to manage the final enable and disable configurations without adding extra complexity to other component drivers. e.g. The McPDM DAI and ABE are tightly coupled on OMAP4 so we have a bespoke trigger to manage the trigger to improve performance and reduce complexity when triggering new McPDM BEs. Signed-off-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include')
-rw-r--r--include/sound/soc-dai.h2
-rw-r--r--include/sound/soc-dpcm.h1
-rw-r--r--include/sound/soc.h4
3 files changed, 7 insertions, 0 deletions
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h
index 3248fbc3326..bb245f153f9 100644
--- a/include/sound/soc-dai.h
+++ b/include/sound/soc-dai.h
@@ -173,6 +173,8 @@ struct snd_soc_dai_ops {
173 struct snd_soc_dai *); 173 struct snd_soc_dai *);
174 int (*trigger)(struct snd_pcm_substream *, int, 174 int (*trigger)(struct snd_pcm_substream *, int,
175 struct snd_soc_dai *); 175 struct snd_soc_dai *);
176 int (*bespoke_trigger)(struct snd_pcm_substream *, int,
177 struct snd_soc_dai *);
176 /* 178 /*
177 * For hardware based FIFO caused delay reporting. 179 * For hardware based FIFO caused delay reporting.
178 * Optional. 180 * Optional.
diff --git a/include/sound/soc-dpcm.h b/include/sound/soc-dpcm.h
index d1a4b50018d..04598f1efd7 100644
--- a/include/sound/soc-dpcm.h
+++ b/include/sound/soc-dpcm.h
@@ -60,6 +60,7 @@ enum snd_soc_dpcm_state {
60enum snd_soc_dpcm_trigger { 60enum snd_soc_dpcm_trigger {
61 SND_SOC_DPCM_TRIGGER_PRE = 0, 61 SND_SOC_DPCM_TRIGGER_PRE = 0,
62 SND_SOC_DPCM_TRIGGER_POST, 62 SND_SOC_DPCM_TRIGGER_POST,
63 SND_SOC_DPCM_TRIGGER_BESPOKE,
63}; 64};
64 65
65/* 66/*
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 153da5bf261..c703871f5f6 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -377,6 +377,9 @@ int snd_soc_params_to_bclk(struct snd_pcm_hw_params *parms);
377int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream, 377int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream,
378 const struct snd_pcm_hardware *hw); 378 const struct snd_pcm_hardware *hw);
379 379
380int snd_soc_platform_trigger(struct snd_pcm_substream *substream,
381 int cmd, struct snd_soc_platform *platform);
382
380/* Jack reporting */ 383/* Jack reporting */
381int snd_soc_jack_new(struct snd_soc_codec *codec, const char *id, int type, 384int snd_soc_jack_new(struct snd_soc_codec *codec, const char *id, int type,
382 struct snd_soc_jack *jack); 385 struct snd_soc_jack *jack);
@@ -753,6 +756,7 @@ struct snd_soc_platform_driver {
753 /* platform IO - used for platform DAPM */ 756 /* platform IO - used for platform DAPM */
754 unsigned int (*read)(struct snd_soc_platform *, unsigned int); 757 unsigned int (*read)(struct snd_soc_platform *, unsigned int);
755 int (*write)(struct snd_soc_platform *, unsigned int, unsigned int); 758 int (*write)(struct snd_soc_platform *, unsigned int, unsigned int);
759 int (*bespoke_trigger)(struct snd_pcm_substream *, int);
756}; 760};
757 761
758struct snd_soc_platform { 762struct snd_soc_platform {