diff options
author | Fabio Estevam <fabio.estevam@freescale.com> | 2013-08-29 10:32:13 -0300 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-09-01 16:29:27 +0100 |
commit | d6bead020d8f8bcaca5cdcb035250c44b21c93e7 (patch) | |
tree | cca1acff1246987d91bffe6906e82f0d38136e6b | |
parent | 6b4c80f947df9d92b97eb62afc29dda6d7220c7d (diff) | |
download | talos-op-linux-d6bead020d8f8bcaca5cdcb035250c44b21c93e7.tar.gz talos-op-linux-d6bead020d8f8bcaca5cdcb035250c44b21c93e7.zip |
ASoC: soc-pcm: Allow to specify unidirectional dai_link
Add 'playback_only' and 'capture_only' fields that can be used for specifying
that a dai_link has a unidirectional capability.
The motivation for this is for the cases of systems, such as Freescale MX28,
that has two unidirectional DAIs.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r-- | include/sound/soc.h | 4 | ||||
-rw-r--r-- | sound/soc/soc-pcm.c | 10 |
2 files changed, 14 insertions, 0 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h index c0ac3bc7b7f4..65414e82c762 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -936,6 +936,10 @@ struct snd_soc_dai_link { /* machine stream operations */ const struct snd_soc_ops *ops; const struct snd_soc_compr_ops *compr_ops; + + /* For unidirectional dai links */ + bool playback_only; + bool capture_only; }; struct snd_soc_codec_conf { diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index b6c640332a17..9abaa52efb2e 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -2027,6 +2027,16 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) capture = 1; } + if (rtd->dai_link->playback_only) { + playback = 1; + capture = 0; + } + + if (rtd->dai_link->capture_only) { + playback = 0; + capture = 1; + } + /* create the PCM */ if (rtd->dai_link->no_pcm) { snprintf(new_name, sizeof(new_name), "(%s)", |