aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Jiang <scott.jiang@analog.com>2011-03-27 05:33:04 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-03-30 07:17:39 +0900
commitf04cd9cb11469a6a9cbfdad824254143250d78d2 (patch)
tree3e4c4faa6498a46c7fbab48625f09211bf23d74b
parent93547e89b6d2adeec627d2a8d8fc4d4b40b0e2c4 (diff)
downloadkernel_samsung_smdk4412-f04cd9cb11469a6a9cbfdad824254143250d78d2.zip
kernel_samsung_smdk4412-f04cd9cb11469a6a9cbfdad824254143250d78d2.tar.gz
kernel_samsung_smdk4412-f04cd9cb11469a6a9cbfdad824254143250d78d2.tar.bz2
ASoC: Blackfin: add ad193x sysclk configuration
Signed-off-by: Scott Jiang <scott.jiang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org> Acked-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--sound/soc/blackfin/bf5xx-ad193x.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sound/soc/blackfin/bf5xx-ad193x.c b/sound/soc/blackfin/bf5xx-ad193x.c
index d3ccb92..3367882 100644
--- a/sound/soc/blackfin/bf5xx-ad193x.c
+++ b/sound/soc/blackfin/bf5xx-ad193x.c
@@ -60,8 +60,16 @@ static int bf5xx_ad193x_hw_params(struct snd_pcm_substream *substream,
struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
struct snd_soc_dai *codec_dai = rtd->codec_dai;
+ unsigned int clk = 0;
unsigned int channel_map[] = {0, 1, 2, 3, 4, 5, 6, 7};
int ret = 0;
+
+ switch (params_rate(params)) {
+ case 48000:
+ clk = 12288000;
+ break;
+ }
+
/* set cpu DAI configuration */
ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_A |
SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
@@ -74,6 +82,12 @@ static int bf5xx_ad193x_hw_params(struct snd_pcm_substream *substream,
if (ret < 0)
return ret;
+ /* set the codec system clock for DAC and ADC */
+ ret = snd_soc_dai_set_sysclk(codec_dai, 0, clk,
+ SND_SOC_CLOCK_IN);
+ if (ret < 0)
+ return ret;
+
/* set codec DAI slots, 8 channels, all channels are enabled */
ret = snd_soc_dai_set_tdm_slot(codec_dai, 0xFF, 0xFF, 8, 32);
if (ret < 0)