ASoC: Blackfin: add ad193x sysclk configuration
authorScott Jiang <scott.jiang@analog.com>
Sun, 27 Mar 2011 09:33:04 +0000 (05:33 -0400)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 29 Mar 2011 22:17:39 +0000 (07:17 +0900)
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>
sound/soc/blackfin/bf5xx-ad193x.c

index d3ccb926b5e43c9004a6bf6e35e2606bdfa28629..33678828d57e8d5b3c8e3c0174aa284bc15a379e 100644 (file)
@@ -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)