ASoC: Intel: sof_sdw: add common sdw dai link init
authorBard Liao <yung-chuan.liao@linux.intel.com>
Thu, 8 Feb 2024 16:55:38 +0000 (10:55 -0600)
committerMark Brown <broonie@kernel.org>
Thu, 8 Feb 2024 21:23:17 +0000 (21:23 +0000)
Currently, we set sdw dai link .init callback in the codec_info_list's
dais.init function. This works fine if all codecs in the dai link are
the same. However, we need to do all the .init stuff for all different
codecs in the dai link if not all codecs in the dai link are the same.
Use a common dai link .init callback to call the new rtd_init callback
in sof_sdw_dai_info{} to do rtd_init for each dai.
Some codec init callback will become empty after this change. They will
be removed in the follow up patch.

Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20240208165545.93811-18-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
14 files changed:
sound/soc/intel/boards/sof_sdw.c
sound/soc/intel/boards/sof_sdw_common.h
sound/soc/intel/boards/sof_sdw_cs42l42.c
sound/soc/intel/boards/sof_sdw_cs42l43.c
sound/soc/intel/boards/sof_sdw_cs_amp.c
sound/soc/intel/boards/sof_sdw_maxim.c
sound/soc/intel/boards/sof_sdw_rt5682.c
sound/soc/intel/boards/sof_sdw_rt700.c
sound/soc/intel/boards/sof_sdw_rt711.c
sound/soc/intel/boards/sof_sdw_rt712_sdca.c
sound/soc/intel/boards/sof_sdw_rt715.c
sound/soc/intel/boards/sof_sdw_rt715_sdca.c
sound/soc/intel/boards/sof_sdw_rt_amp.c
sound/soc/intel/boards/sof_sdw_rt_sdca_jack_common.c

index 300391fbc2fc2b29863d6ba19169d60e9a22502c..782b45adb21e2d27df5b9122f254394462bc3e04 100644 (file)
@@ -651,6 +651,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_JACK,
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .init = sof_sdw_rt700_init,
+                               .rtd_init = rt700_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -666,6 +667,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .init = sof_sdw_rt_sdca_jack_init,
                                .exit = sof_sdw_rt_sdca_jack_exit,
+                               .rtd_init = rt_sdca_jack_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -681,6 +683,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .init = sof_sdw_rt711_init,
                                .exit = sof_sdw_rt711_exit,
+                               .rtd_init = rt711_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -696,6 +699,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .init = sof_sdw_rt_sdca_jack_init,
                                .exit = sof_sdw_rt_sdca_jack_exit,
+                               .rtd_init = rt_sdca_jack_rtd_init,
                        },
                        {
                                .direction = {true, false},
@@ -703,6 +707,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_AMP,
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
                                .init = sof_sdw_rt712_spk_init,
+                               .rtd_init = rt712_spk_rtd_init,
                        },
                },
                .dai_num = 2,
@@ -717,6 +722,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_MIC,
                                .dailink = {SDW_UNUSED_DAI_ID, SDW_DMIC_DAI_ID},
                                .init = sof_sdw_rt712_sdca_dmic_init,
+                               .rtd_init = rt712_sdca_dmic_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -732,6 +738,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .init = sof_sdw_rt_sdca_jack_init,
                                .exit = sof_sdw_rt_sdca_jack_exit,
+                               .rtd_init = rt_sdca_jack_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -746,6 +753,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_MIC,
                                .dailink = {SDW_UNUSED_DAI_ID, SDW_DMIC_DAI_ID},
                                .init = sof_sdw_rt712_sdca_dmic_init,
+                               .rtd_init = rt712_sdca_dmic_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -761,6 +769,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
                                .init = sof_sdw_rt_amp_init,
                                .exit = sof_sdw_rt_amp_exit,
+                               .rtd_init = rt_amp_spk_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -776,6 +785,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_AMP_IN_DAI_ID},
                                .init = sof_sdw_rt_amp_init,
                                .exit = sof_sdw_rt_amp_exit,
+                               .rtd_init = rt_amp_spk_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -790,6 +800,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_AMP_IN_DAI_ID},
                                .init = sof_sdw_rt_amp_init,
                                .exit = sof_sdw_rt_amp_exit,
+                               .rtd_init = rt_amp_spk_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -805,6 +816,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_MIC,
                                .dailink = {SDW_UNUSED_DAI_ID, SDW_DMIC_DAI_ID},
                                .init = sof_sdw_rt715_sdca_init,
+                               .rtd_init = rt715_sdca_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -820,6 +832,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_MIC,
                                .dailink = {SDW_UNUSED_DAI_ID, SDW_DMIC_DAI_ID},
                                .init = sof_sdw_rt715_sdca_init,
+                               .rtd_init = rt715_sdca_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -835,6 +848,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_MIC,
                                .dailink = {SDW_UNUSED_DAI_ID, SDW_DMIC_DAI_ID},
                                .init = sof_sdw_rt715_init,
+                               .rtd_init = rt715_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -850,6 +864,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_MIC,
                                .dailink = {SDW_UNUSED_DAI_ID, SDW_DMIC_DAI_ID},
                                .init = sof_sdw_rt715_init,
+                               .rtd_init = rt715_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -893,6 +908,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_AMP,
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_AMP_IN_DAI_ID},
                                .init = sof_sdw_maxim_init,
+                               .rtd_init = maxim_spk_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -906,6 +922,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_AMP,
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
                                .init = sof_sdw_maxim_init,
+                               .rtd_init = maxim_spk_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -919,6 +936,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_JACK,
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .init = sof_sdw_rt5682_init,
+                               .rtd_init = rt5682_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -932,6 +950,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_AMP,
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_AMP_IN_DAI_ID},
                                .init = sof_sdw_cs_amp_init,
+                               .rtd_init = cs_spk_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -945,6 +964,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_JACK,
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .init = sof_sdw_cs42l42_init,
+                               .rtd_init = cs42l42_rtd_init,
                        },
                },
                .dai_num = 1,
@@ -959,6 +979,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_JACK,
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
                                .init = sof_sdw_cs42l43_hs_init,
+                               .rtd_init = cs42l43_hs_rtd_init,
                        },
                        {
                                .direction = {false, true},
@@ -966,6 +987,7 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_MIC,
                                .dailink = {SDW_UNUSED_DAI_ID, SDW_DMIC_DAI_ID},
                                .init = sof_sdw_cs42l43_dmic_init,
+                               .rtd_init = cs42l43_dmic_rtd_init,
                        },
                        {
                                .direction = {false, true},
@@ -1387,6 +1409,56 @@ static void set_dailink_map(struct snd_soc_dai_link_ch_map *sdw_codec_ch_maps,
        }
 }
 
+static inline int find_codec_info_dai(const char *dai_name, int *dai_index)
+{
+       int i, j;
+
+       for (i = 0; i < ARRAY_SIZE(codec_info_list); i++) {
+               for (j = 0; j < codec_info_list[i].dai_num; j++) {
+                       if (!strcmp(codec_info_list[i].dais[j].dai_name, dai_name)) {
+                               *dai_index = j;
+                               return i;
+                       }
+               }
+       }
+
+       return -EINVAL;
+}
+
+static int sof_sdw_rtd_init(struct snd_soc_pcm_runtime *rtd)
+{
+       struct sof_sdw_codec_info *codec_info;
+       struct snd_soc_dai *dai;
+       int codec_index;
+       int dai_index;
+       int ret;
+       int i;
+
+       for_each_rtd_codec_dais(rtd, i, dai) {
+               codec_index = find_codec_info_dai(dai->name, &dai_index);
+               if (codec_index < 0)
+                       return -EINVAL;
+
+               codec_info = &codec_info_list[codec_index];
+               /*
+                * A codec dai can be connected to different dai links for capture and playback,
+                * but we only need to call the rtd_init function once.
+                * The rtd_init for each codec dai is independent. So, the order of rtd_init
+                * doesn't matter.
+                */
+               if (codec_info->dais[dai_index].rtd_init_done)
+                       continue;
+               if (codec_info->dais[dai_index].rtd_init) {
+                       ret = codec_info->dais[dai_index].rtd_init(rtd);
+                       if (ret)
+                               return ret;
+               }
+               codec_info->dais[dai_index].rtd_init_done = true;
+       }
+
+       return 0;
+}
+
 static const char * const type_strings[] = {"SimpleJack", "SmartAmp", "SmartMic"};
 
 static int create_sdw_dailink(struct snd_soc_card *card, int *link_index,
@@ -1547,7 +1619,7 @@ static int create_sdw_dailink(struct snd_soc_card *card, int *link_index,
 
                init_dai_link(dev, dai_links + *link_index, be_id, name,
                              playback, capture, cpus, cpu_dai_num, codecs, codec_num,
-                             NULL, &sdw_ops);
+                             sof_sdw_rtd_init, &sdw_ops);
 
                /*
                 * SoundWire DAILINKs use 'stream' functions and Bank Switch operations
@@ -1880,6 +1952,7 @@ static void mc_dailink_exit_loop(struct snd_soc_card *card)
 
        for (i = 0; i < ARRAY_SIZE(codec_info_list); i++) {
                for (j = 0; j < codec_info_list[i].dai_num; j++) {
+                       codec_info_list[i].dais[j].rtd_init_done = false;
                        /* Check each dai in codec_info_lis to see if it is used in the link */
                        if (!codec_info_list[i].dais[j].exit)
                                continue;
index f16456945edb08e7096a3fd298152a0133d90ad7..ab444dae46ab20f30bbcda081c6c2650d4db3b21 100644 (file)
@@ -78,6 +78,8 @@ struct sof_sdw_dai_info {
                     struct sof_sdw_codec_info *info,
                     bool playback);
        int (*exit)(struct snd_soc_card *card, struct snd_soc_dai_link *dai_link);
+       int (*rtd_init)(struct snd_soc_pcm_runtime *rtd);
+       bool rtd_init_done; /* Indicate that the rtd_init callback is done */
 };
 
 struct sof_sdw_codec_info {
@@ -235,4 +237,22 @@ int sof_sdw_cs_amp_init(struct snd_soc_card *card,
                        struct snd_soc_dai_link *dai_links,
                        struct sof_sdw_codec_info *info,
                        bool playback);
+
+/* dai_link init callbacks */
+
+int cs42l42_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int cs42l43_hs_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int cs42l43_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int cs_spk_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int maxim_spk_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int rt5682_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int rt700_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int rt711_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int rt712_sdca_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int rt712_spk_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int rt715_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int rt715_sdca_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int rt_amp_spk_rtd_init(struct snd_soc_pcm_runtime *rtd);
+int rt_sdca_jack_rtd_init(struct snd_soc_pcm_runtime *rtd);
+
 #endif
index 22f4f9a1908818d78021746e732853287bcef259..5d0915b72c7fbbdeb76b34a35a3f44f6c0c4b7ce 100644 (file)
@@ -51,7 +51,7 @@ static const char * const jack_codecs[] = {
        "cs42l42"
 };
 
-static int cs42l42_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int cs42l42_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        struct mc_private *ctx = snd_soc_card_get_drvdata(card);
@@ -135,8 +135,6 @@ int sof_sdw_cs42l42_init(struct snd_soc_card *card,
        if (!playback)
                return 0;
 
-       dai_links->init = cs42l42_rtd_init;
-
        return 0;
 }
 MODULE_IMPORT_NS(SND_SOC_INTEL_SOF_BOARD_HELPERS);
index 360f11b72aa2eea07eb7af08e08dcad7c9f2ddec..7909ea9c9c14199ddb97b2e2472a56d611a5591a 100644 (file)
@@ -50,7 +50,7 @@ static struct snd_soc_jack_pin sof_jack_pins[] = {
        },
 };
 
-static int cs42l43_hs_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int cs42l43_hs_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_component *component = snd_soc_rtd_to_codec(rtd, 0)->component;
        struct mc_private *ctx = snd_soc_card_get_drvdata(rtd->card);
@@ -116,12 +116,11 @@ int sof_sdw_cs42l43_hs_init(struct snd_soc_card *card, const struct snd_soc_acpi
         * No need to test if (!playback) like other codecs as cs42l43 uses separated dai for
         * playback and capture, and sof_sdw_cs42l43_init is only linked to the playback dai.
         */
-       dai_links->init = cs42l43_hs_rtd_init;
 
        return 0;
 }
 
-static int cs42l43_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int cs42l43_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        int ret;
@@ -150,7 +149,5 @@ int sof_sdw_cs42l43_dmic_init(struct snd_soc_card *card, const struct snd_soc_ac
                              struct snd_soc_dai_link *dai_links, struct sof_sdw_codec_info *info,
                              bool playback)
 {
-       dai_links->init = cs42l43_dmic_rtd_init;
-
        return 0;
 }
index f88c01552a924cd159d8cf0c07fb9638b97a8093..56cf75bc6cc4c50379d8e51bd15efe1d0b29827a 100644 (file)
@@ -18,7 +18,7 @@ static const struct snd_soc_dapm_widget sof_widgets[] = {
        SND_SOC_DAPM_SPK("Speakers", NULL),
 };
 
-static int cs_spk_init(struct snd_soc_pcm_runtime *rtd)
+int cs_spk_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        const char *dai_name = rtd->dai_link->codecs->dai_name;
        struct snd_soc_card *card = rtd->card;
@@ -67,7 +67,6 @@ int sof_sdw_cs_amp_init(struct snd_soc_card *card,
                return 0;
 
        info->amp_num++;
-       dai_links->init = cs_spk_init;
 
        return 0;
 }
index e36b8d8c70c9cca648d4b9ee939672d5fdab8f38..0347304326713aeda3fc05b1d24c050c38595ac4 100644 (file)
@@ -27,7 +27,7 @@ static const struct snd_kcontrol_new maxim_controls[] = {
        SOC_DAPM_PIN_SWITCH("Right Spk"),
 };
 
-static int spk_init(struct snd_soc_pcm_runtime *rtd)
+int maxim_spk_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        int ret;
@@ -145,8 +145,6 @@ int sof_sdw_maxim_init(struct snd_soc_card *card,
                       bool playback)
 {
        info->amp_num++;
-       if (info->amp_num == 2)
-               dai_links->init = spk_init;
 
        maxim_part_id = info->part_id;
        switch (maxim_part_id) {
index 27aca76dbee4255442422c545397a306b2c9f2d3..4e3fcc8610742c93eeb87821d4a6cdbb4ff66f8d 100644 (file)
@@ -50,7 +50,7 @@ static const char * const jack_codecs[] = {
        "rt5682"
 };
 
-static int rt5682_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int rt5682_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        struct mc_private *ctx = snd_soc_card_get_drvdata(card);
@@ -134,8 +134,6 @@ int sof_sdw_rt5682_init(struct snd_soc_card *card,
        if (!playback)
                return 0;
 
-       dai_links->init = rt5682_rtd_init;
-
        return 0;
 }
 MODULE_IMPORT_NS(SND_SOC_INTEL_SOF_BOARD_HELPERS);
index d9a45392bbbf29b51281192e7eafe5e20721c94e..781d41e35191f27bbdf665031431ba7ae6a4e011 100644 (file)
@@ -50,7 +50,7 @@ static const char * const jack_codecs[] = {
        "rt700"
 };
 
-static int rt700_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int rt700_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        struct mc_private *ctx = snd_soc_card_get_drvdata(card);
@@ -133,8 +133,6 @@ int sof_sdw_rt700_init(struct snd_soc_card *card,
        if (!playback)
                return 0;
 
-       dai_links->init = rt700_rtd_init;
-
        return 0;
 }
 MODULE_IMPORT_NS(SND_SOC_INTEL_SOF_BOARD_HELPERS);
index 5d8f90f2bf554a40c82bb4b25025c30e687e001c..cdd1587b246c87aeb91585b7112f08518a61e99c 100644 (file)
@@ -74,7 +74,7 @@ static const char * const jack_codecs[] = {
        "rt711"
 };
 
-static int rt711_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int rt711_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        struct mc_private *ctx = snd_soc_card_get_drvdata(card);
@@ -186,8 +186,6 @@ int sof_sdw_rt711_init(struct snd_soc_card *card,
        }
        ctx->headset_codec_dev = sdw_dev;
 
-       dai_links->init = rt711_rtd_init;
-
        return 0;
 }
 MODULE_IMPORT_NS(SND_SOC_INTEL_SOF_BOARD_HELPERS);
index 27c924885ffc83986b0e465bd1dc6e4fa0ef9f89..dddb27e4c943f06d4658f40fe375211e56095d25 100644 (file)
@@ -35,7 +35,7 @@ static const struct snd_kcontrol_new rt712_spk_controls[] = {
        SOC_DAPM_PIN_SWITCH("Speaker"),
 };
 
-static int rt712_spk_init(struct snd_soc_pcm_runtime *rtd)
+int rt712_spk_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        int ret;
@@ -73,8 +73,6 @@ int sof_sdw_rt712_spk_init(struct snd_soc_card *card,
                           struct sof_sdw_codec_info *info,
                           bool playback)
 {
-       dai_links->init = rt712_spk_init;
-
        return 0;
 }
 
@@ -82,7 +80,7 @@ static const char * const dmics[] = {
        "rt712-sdca-dmic"
 };
 
-static int rt712_sdca_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int rt712_sdca_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        struct snd_soc_dai *codec_dai;
@@ -108,8 +106,6 @@ int sof_sdw_rt712_sdca_dmic_init(struct snd_soc_card *card,
                                 struct sof_sdw_codec_info *info,
                                 bool playback)
 {
-       dai_links->init = rt712_sdca_dmic_rtd_init;
-
        return 0;
 }
 MODULE_IMPORT_NS(SND_SOC_INTEL_SOF_BOARD_HELPERS);
index 7c068dc6b9cf65467effec9efb25be77d90065f3..19194fe92b8e1055b75d3bc0a2b8292deb56855f 100644 (file)
@@ -11,7 +11,7 @@
 #include <sound/soc-acpi.h>
 #include "sof_sdw_common.h"
 
-static int rt715_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int rt715_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
 
@@ -30,7 +30,5 @@ int sof_sdw_rt715_init(struct snd_soc_card *card,
                       struct sof_sdw_codec_info *info,
                       bool playback)
 {
-       dai_links->init = rt715_rtd_init;
-
        return 0;
 }
index ca0cf3db2e4d8b238e3820d96acd5d41e1f22972..3089fa8450fa830d70c1b04b1b9279b50061b0d6 100644 (file)
@@ -11,7 +11,7 @@
 #include <sound/soc-acpi.h>
 #include "sof_sdw_common.h"
 
-static int rt715_sdca_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int rt715_sdca_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
 
@@ -30,7 +30,5 @@ int sof_sdw_rt715_sdca_init(struct snd_soc_card *card,
                            struct sof_sdw_codec_info *info,
                            bool playback)
 {
-       dai_links->init = rt715_sdca_rtd_init;
-
        return 0;
 }
index a4414c9793b46bb7fedcc068fcfbb8c6147f5772..202edab950001dbc61470041db700b674a8b1a57 100644 (file)
@@ -185,7 +185,7 @@ static const struct snd_soc_dapm_route *get_codec_name_and_route(struct snd_soc_
                return rt1318_map;
 }
 
-static int rt_amp_spk_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int rt_amp_spk_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        const struct snd_soc_dapm_route *rt_amp_map;
@@ -295,7 +295,6 @@ int sof_sdw_rt_amp_init(struct snd_soc_card *card,
                return 0;
 
        info->amp_num++;
-       dai_links->init = rt_amp_spk_rtd_init;
 
        if (info->amp_num == 2) {
                sdw_dev1 = bus_find_device_by_name(&sdw_bus_type, NULL, dai_links->codecs[0].name);
index 4f2e105a1124e84b7bb0f48c440666a65125f4f9..5253d8332780f78bb977e1ec1379d3aa4daa3275 100644 (file)
@@ -89,7 +89,7 @@ static const char * const jack_codecs[] = {
        "rt711", "rt712", "rt713"
 };
 
-static int rt_sdca_jack_rtd_init(struct snd_soc_pcm_runtime *rtd)
+int rt_sdca_jack_rtd_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct snd_soc_card *card = rtd->card;
        struct mc_private *ctx = snd_soc_card_get_drvdata(card);
@@ -219,8 +219,6 @@ int sof_sdw_rt_sdca_jack_init(struct snd_soc_card *card,
        }
        ctx->headset_codec_dev = sdw_dev;
 
-       dai_links->init = rt_sdca_jack_rtd_init;
-
        return 0;
 }
 MODULE_IMPORT_NS(SND_SOC_INTEL_SOF_BOARD_HELPERS);