ASoC: Configure SSP port PLL for Zylonite
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 23 Jan 2009 11:49:45 +0000 (11:49 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 23 Jan 2009 11:49:45 +0000 (11:49 +0000)
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/pxa/zylonite.c

index 8541b679f6ebf367db9d1ee7f36433f81e1c84d8..ec2fb764b241f6a30dacb1558c601ee26822df9e 100644 (file)
@@ -95,6 +95,7 @@ static int zylonite_voice_hw_params(struct snd_pcm_substream *substream,
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
        struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+       unsigned int pll_out = 0;
        unsigned int acds = 0;
        unsigned int wm9713_div = 0;
        int ret = 0;
@@ -102,13 +103,16 @@ static int zylonite_voice_hw_params(struct snd_pcm_substream *substream,
        switch (params_rate(params)) {
        case 8000:
                wm9713_div = 12;
+               pll_out = 2048000;
                break;
        case 16000:
                wm9713_div = 6;
+               pll_out = 4096000;
                break;
        case 48000:
        default:
                wm9713_div = 2;
+               pll_out = 12288000;
                acds = 1;
                break;
        }
@@ -129,6 +133,10 @@ static int zylonite_voice_hw_params(struct snd_pcm_substream *substream,
        if (ret < 0)
                return ret;
 
+       ret = snd_soc_dai_set_pll(cpu_dai, 0, 0, pll_out);
+       if (ret < 0)
+               return ret;
+
        ret = snd_soc_dai_set_clkdiv(cpu_dai, PXA_SSP_AUDIO_DIV_ACDS, acds);
        if (ret < 0)
                return ret;