phonepad: rk29_rt3261.c set BT incall clock.
author宋秀杰 <sxj@rock-chips.com>
Fri, 10 Aug 2012 02:26:17 +0000 (10:26 +0800)
committer宋秀杰 <sxj@rock-chips.com>
Fri, 10 Aug 2012 02:26:17 +0000 (10:26 +0800)
sound/soc/rk29/rk29_rt3261.c

index ff9d3f0995d414b214b7700833647a576e60ca8d..c4573578ba1347ae9cdda9cf5963412dc67a9a69 100644 (file)
@@ -1,7 +1,7 @@
 /*\r
- * rk29_rt5625.c  --  SoC audio for rockchip\r
+ * rk29_rt3261.c  --  SoC audio for rockchip\r
  *\r
- * Driver for rockchip rt5625 audio\r
+ * Driver for rockchip rt3261 audio\r
  *\r
  *  This program is free software; you can redistribute  it and/or modify it\r
  *  under  the terms of  the GNU General  Public License as published by the\r
@@ -101,7 +101,7 @@ static int rk29_hw_params(struct snd_pcm_substream *substream,
        ret = snd_soc_dai_set_sysclk(codec_dai, 0, pll_out, SND_SOC_CLOCK_IN);\r
        if (ret < 0)\r
        {\r
-                      DBG("rk29_hw_params_rt5625:failed to set the sysclk for codec side\n"); \r
+               DBG("rk29_hw_params_rt3261:failed to set the sysclk for codec side\n"); \r
                return ret;\r
        }\r
 \r
@@ -125,19 +125,8 @@ static int rt3261_voice_hw_params(struct snd_pcm_substream *substream,
 \r
        DBG("Enter::%s----%d\n",__FUNCTION__,__LINE__);    \r
        \r
-       /* set codec DAI configuration */\r
-       //#if defined (CONFIG_SND_CODEC_SOC_SLAVE) \r
-       DBG("Enter::%s----codec slave\n",__FUNCTION__);\r
-\r
-       ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A |\r
-                               SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_CBS_CFS);\r
-       /*#endif\r
-       //#if defined (CONFIG_SND_CODEC_SOC_MASTER) \r
-       DBG("Enter::%s----codec master\n",__FUNCTION__);\r
-\r
        ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A |\r
                SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_CBM_CFM ); \r
-       #endif*/\r
 \r
        switch(params_rate(params)) {\r
                case 8000:\r
@@ -158,17 +147,24 @@ static int rt3261_voice_hw_params(struct snd_pcm_substream *substream,
                        break;\r
        }\r
 \r
-       //snd_soc_dai_set_pll(codec_dai, RT5625_PLL_MCLK_TO_VSYSCLK, 0, pll_out, 24576000);???????\r
+       DBG("Enter:%s, %d, rate=%d\n", __FUNCTION__, __LINE__, params_rate(params));\r
 \r
        /*Set the system clk for codec*/\r
-       ret = snd_soc_dai_set_sysclk(codec_dai, 0, 24576000, SND_SOC_CLOCK_IN);\r
+       snd_soc_dai_set_pll(codec_dai, 0, RT3261_PLL1_S_MCLK, pll_out, 256 * 8000);\r
+\r
+       ret = snd_soc_dai_set_sysclk(codec_dai, 0, 256 * 8000, SND_SOC_CLOCK_IN);\r
+\r
 \r
        if (ret < 0) {\r
-               printk("rk29_hw_params_rt5625:failed to set the sysclk for codec side\n"); \r
+               printk("rk29_hw_params_rt3261:failed to set the sysclk for codec side\n"); \r
                return ret;\r
        }\r
 \r
-       ret = snd_soc_dai_set_sysclk(cpu_dai, 0, pll_out, 0);\r
+       snd_soc_dai_set_sysclk(cpu_dai, 0, pll_out, 0);\r
+       snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_BCLK, (pll_out/4)/params_rate(params)-1);\r
+       snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_MCLK, 3);\r
+\r
+       DBG("Enter:%s, %d, pll_out/4/params_rate(params) = %d \n", __FUNCTION__, __LINE__, (pll_out/4)/params_rate(params));\r
  \r
        return 0;\r
 }\r