]> Pileus Git - ~andy/linux/blobdiff - sound/soc/blackfin/bf5xx-ssm2602.c
Merge tag 'pinctrl-for-v3.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git...
[~andy/linux] / sound / soc / blackfin / bf5xx-ssm2602.c
index b39ad356b92b84e2d649c0ea986c2ba23aecbac9..7dbeef1099b48de868d3fd724c93db45a64a0206 100644 (file)
 
 static struct snd_soc_card bf5xx_ssm2602;
 
-static int bf5xx_ssm2602_hw_params(struct snd_pcm_substream *substream,
-       struct snd_pcm_hw_params *params)
+static int bf5xx_ssm2602_dai_init(struct snd_soc_pcm_runtime *rtd)
 {
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_dai *codec_dai = rtd->codec_dai;
-       unsigned int clk = 0;
-       int ret = 0;
-
-       pr_debug("%s rate %d format %x\n", __func__, params_rate(params),
-               params_format(params));
        /*
         * If you are using a crystal source which frequency is not 12MHz
         * then modify the below case statement with frequency of the crystal.
@@ -61,31 +53,10 @@ static int bf5xx_ssm2602_hw_params(struct snd_pcm_substream *substream,
         * If you are using the SPORT to generate clocking then this is
         * where to do it.
         */
-
-       switch (params_rate(params)) {
-       case 8000:
-       case 16000:
-       case 48000:
-       case 96000:
-       case 11025:
-       case 22050:
-       case 44100:
-               clk = 12000000;
-               break;
-       }
-
-       ret = snd_soc_dai_set_sysclk(codec_dai, SSM2602_SYSCLK, clk,
+       return snd_soc_dai_set_sysclk(rtd->codec_dai, SSM2602_SYSCLK, 12000000,
                SND_SOC_CLOCK_IN);
-       if (ret < 0)
-               return ret;
-
-       return 0;
 }
 
-static struct snd_soc_ops bf5xx_ssm2602_ops = {
-       .hw_params = bf5xx_ssm2602_hw_params,
-};
-
 /* CODEC is master for BCLK and LRC in this configuration. */
 #define BF5XX_SSM2602_DAIFMT (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | \
                                SND_SOC_DAIFMT_CBM_CFM)
@@ -98,7 +69,7 @@ static struct snd_soc_dai_link bf5xx_ssm2602_dai[] = {
                .codec_dai_name = "ssm2602-hifi",
                .platform_name = "bfin-i2s-pcm-audio",
                .codec_name = "ssm2602.0-001b",
-               .ops = &bf5xx_ssm2602_ops,
+               .init = bf5xx_ssm2602_dai_init,
                .dai_fmt = BF5XX_SSM2602_DAIFMT,
        },
        {
@@ -108,7 +79,7 @@ static struct snd_soc_dai_link bf5xx_ssm2602_dai[] = {
                .codec_dai_name = "ssm2602-hifi",
                .platform_name = "bfin-i2s-pcm-audio",
                .codec_name = "ssm2602.0-001b",
-               .ops = &bf5xx_ssm2602_ops,
+               .init = bf5xx_ssm2602_dai_init,
                .dai_fmt = BF5XX_SSM2602_DAIFMT,
        },
 };