65 lines
2.2 KiB
Diff
65 lines
2.2 KiB
Diff
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.
|