summaryrefslogtreecommitdiff
path: root/target/linux/brcm2708/patches-3.10/0115-ASoC-core-Add-API-for-configuration-of-DAI-BCLK-rati.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm2708/patches-3.10/0115-ASoC-core-Add-API-for-configuration-of-DAI-BCLK-rati.patch')
-rw-r--r--target/linux/brcm2708/patches-3.10/0115-ASoC-core-Add-API-for-configuration-of-DAI-BCLK-rati.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-3.10/0115-ASoC-core-Add-API-for-configuration-of-DAI-BCLK-rati.patch b/target/linux/brcm2708/patches-3.10/0115-ASoC-core-Add-API-for-configuration-of-DAI-BCLK-rati.patch
new file mode 100644
index 0000000000..3a3f7916c8
--- /dev/null
+++ b/target/linux/brcm2708/patches-3.10/0115-ASoC-core-Add-API-for-configuration-of-DAI-BCLK-rati.patch
@@ -0,0 +1,64 @@
+From 5c080b18934d9dcea2bf902c09d640daf6fe49d4 Mon Sep 17 00:00:00 2001
+From: Liam Girdwood <liam.r.girdwood@linux.intel.com>
+Date: Mon, 16 Sep 2013 13:01:46 +0100
+Subject: [PATCH 115/174] ASoC: core: Add API for configuration of DAI BCLK
+ ratio
+
+Some codec drivers when running in slave mode require that BCLK to sample rate ratio
+is explicitly set by the machine driver as it may not be exactly rate * frame size.
+
+Extend the DAI API by adding :-
+
+int snd_soc_dai_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio);
+
+Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+---
+ include/sound/soc-dai.h | 3 +++
+ sound/soc/soc-core.c | 16 ++++++++++++++++
+ 2 files changed, 19 insertions(+)
+
+--- a/include/sound/soc-dai.h
++++ b/include/sound/soc-dai.h
+@@ -105,6 +105,8 @@ int snd_soc_dai_set_clkdiv(struct snd_so
+ int snd_soc_dai_set_pll(struct snd_soc_dai *dai,
+ int pll_id, int source, unsigned int freq_in, unsigned int freq_out);
+
++int snd_soc_dai_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio);
++
+ /* Digital Audio interface formatting */
+ int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt);
+
+@@ -131,6 +133,7 @@ struct snd_soc_dai_ops {
+ int (*set_pll)(struct snd_soc_dai *dai, int pll_id, int source,
+ unsigned int freq_in, unsigned int freq_out);
+ int (*set_clkdiv)(struct snd_soc_dai *dai, int div_id, int div);
++ int (*set_bclk_ratio)(struct snd_soc_dai *dai, unsigned int ratio);
+
+ /*
+ * DAI format configuration
+--- a/sound/soc/soc-core.c
++++ b/sound/soc/soc-core.c
+@@ -3463,6 +3463,22 @@ int snd_soc_codec_set_pll(struct snd_soc
+ EXPORT_SYMBOL_GPL(snd_soc_codec_set_pll);
+
+ /**
++ * snd_soc_dai_set_bclk_ratio - configure BCLK to sample rate ratio.
++ * @dai: DAI
++ * @ratio Ratio of BCLK to Sample rate.
++ *
++ * Configures the DAI for a preset BCLK to sample rate ratio.
++ */
++int snd_soc_dai_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio)
++{
++ if (dai->driver && dai->driver->ops->set_bclk_ratio)
++ return dai->driver->ops->set_bclk_ratio(dai, ratio);
++ else
++ return -EINVAL;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dai_set_bclk_ratio);
++
++/**
+ * snd_soc_dai_set_fmt - configure DAI hardware audio format.
+ * @dai: DAI
+ * @fmt: SND_SOC_DAIFMT_ format value.