Merge tag 'driver-core-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / sound / soc / rockchip / rk3399_gru_sound.c
index c04c9ed185b738320d6421e003861b52c79ac073..c16b0ffe8cfc54ec83c0328d1cb9d98ab1cc4937 100644 (file)
@@ -55,19 +55,7 @@ static int rockchip_sound_max98357a_hw_params(struct snd_pcm_substream *substrea
        unsigned int mclk;
        int ret;
 
-       /* max98357a supports these sample rates */
-       switch (params_rate(params)) {
-       case 8000:
-       case 16000:
-       case 48000:
-       case 96000:
-               mclk = params_rate(params) * SOUND_FS;
-               break;
-       default:
-               dev_err(rtd->card->dev, "%s() doesn't support this sample rate: %d\n",
-                               __func__, params_rate(params));
-               return -EINVAL;
-       }
+       mclk = params_rate(params) * SOUND_FS;
 
        ret = snd_soc_dai_set_sysclk(rtd->cpu_dai, 0, mclk, 0);
        if (ret) {
@@ -265,56 +253,85 @@ enum {
        DAILINK_RT5514_DSP,
 };
 
+SND_SOC_DAILINK_DEFS(cdndp,
+       DAILINK_COMP_ARRAY(COMP_EMPTY()),
+       DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "spdif-hifi")),
+       DAILINK_COMP_ARRAY(COMP_EMPTY()));
+
+SND_SOC_DAILINK_DEFS(da7219,
+       DAILINK_COMP_ARRAY(COMP_EMPTY()),
+       DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "da7219-hifi")),
+       DAILINK_COMP_ARRAY(COMP_EMPTY()));
+
+SND_SOC_DAILINK_DEFS(dmic,
+       DAILINK_COMP_ARRAY(COMP_EMPTY()),
+       DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "dmic-hifi")),
+       DAILINK_COMP_ARRAY(COMP_EMPTY()));
+
+SND_SOC_DAILINK_DEFS(max98357a,
+       DAILINK_COMP_ARRAY(COMP_EMPTY()),
+       DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "HiFi")),
+       DAILINK_COMP_ARRAY(COMP_EMPTY()));
+
+SND_SOC_DAILINK_DEFS(rt5514,
+       DAILINK_COMP_ARRAY(COMP_EMPTY()),
+       DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "rt5514-aif1")),
+       DAILINK_COMP_ARRAY(COMP_EMPTY()));
+
+SND_SOC_DAILINK_DEFS(rt5514_dsp,
+       DAILINK_COMP_ARRAY(COMP_EMPTY()),
+       DAILINK_COMP_ARRAY(COMP_DUMMY()),
+       DAILINK_COMP_ARRAY(COMP_EMPTY()));
+
 static const struct snd_soc_dai_link rockchip_dais[] = {
        [DAILINK_CDNDP] = {
                .name = "DP",
                .stream_name = "DP PCM",
-               .codec_dai_name = "spdif-hifi",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
                        SND_SOC_DAIFMT_CBS_CFS,
+               SND_SOC_DAILINK_REG(cdndp),
        },
        [DAILINK_DA7219] = {
                .name = "DA7219",
                .stream_name = "DA7219 PCM",
-               .codec_dai_name = "da7219-hifi",
                .init = rockchip_sound_da7219_init,
                .ops = &rockchip_sound_da7219_ops,
                /* set da7219 as slave */
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
                        SND_SOC_DAIFMT_CBS_CFS,
+               SND_SOC_DAILINK_REG(da7219),
        },
        [DAILINK_DMIC] = {
                .name = "DMIC",
                .stream_name = "DMIC PCM",
-               .codec_dai_name = "dmic-hifi",
                .ops = &rockchip_sound_dmic_ops,
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
                        SND_SOC_DAIFMT_CBS_CFS,
+               SND_SOC_DAILINK_REG(dmic),
        },
        [DAILINK_MAX98357A] = {
                .name = "MAX98357A",
                .stream_name = "MAX98357A PCM",
-               .codec_dai_name = "HiFi",
                .ops = &rockchip_sound_max98357a_ops,
                /* set max98357a as slave */
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
                        SND_SOC_DAIFMT_CBS_CFS,
+               SND_SOC_DAILINK_REG(max98357a),
        },
        [DAILINK_RT5514] = {
                .name = "RT5514",
                .stream_name = "RT5514 PCM",
-               .codec_dai_name = "rt5514-aif1",
                .ops = &rockchip_sound_rt5514_ops,
                /* set rt5514 as slave */
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
                        SND_SOC_DAIFMT_CBS_CFS,
+               SND_SOC_DAILINK_REG(rt5514),
        },
        /* RT5514 DSP for voice wakeup via spi bus */
        [DAILINK_RT5514_DSP] = {
                .name = "RT5514 DSP",
                .stream_name = "Wake on Voice",
-               .codec_name = "snd-soc-dummy",
-               .codec_dai_name = "snd-soc-dummy-dai",
+               SND_SOC_DAILINK_REG(rt5514_dsp),
        },
 };
 
@@ -496,10 +513,10 @@ static int rockchip_sound_of_parse_dais(struct device *dev,
                dai = &card->dai_link[card->num_links++];
                *dai = rockchip_dais[index];
 
-               if (!dai->codec_name)
-                       dai->codec_of_node = np_codec;
-               dai->platform_of_node = np_cpu;
-               dai->cpu_of_node = np_cpu;
+               if (!dai->codecs->name)
+                       dai->codecs->of_node = np_codec;
+               dai->platforms->of_node = np_cpu;
+               dai->cpus->of_node = np_cpu;
 
                if (card->num_dapm_routes + rockchip_routes[index].num_routes >
                    num_routes) {