ASoC: Intel: sof_sdw_rt_sdca_jack_common: use helper to get codec dai by name
authorBard Liao <yung-chuan.liao@linux.intel.com>
Thu, 8 Feb 2024 16:55:32 +0000 (10:55 -0600)
committerMark Brown <broonie@kernel.org>
Thu, 8 Feb 2024 21:23:10 +0000 (21:23 +0000)
Use helper to get codec dai by name.

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-12-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/Kconfig
sound/soc/intel/boards/sof_board_helpers.c
sound/soc/intel/boards/sof_board_helpers.h
sound/soc/intel/boards/sof_sdw_rt_sdca_jack_common.c

index 8fd5e7f8305405916b9fabdd696fb25fe265a3f9..18ac3ce0752ec22f293006754f3361a1c3ae1322 100644 (file)
@@ -677,6 +677,7 @@ config SND_SOC_INTEL_SOUNDWIRE_SOF_MACH
        depends on MFD_INTEL_LPSS || COMPILE_TEST
        depends on SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES || COMPILE_TEST
        depends on SOUNDWIRE
+       select SND_SOC_INTEL_SOF_BOARD_HELPERS
        select SND_SOC_MAX98363
        select SND_SOC_MAX98373_I2C
        select SND_SOC_MAX98373_SDW
index 9c08d3e54e3bf3b372e51a714705c0969ececa0a..088894ff416578105975454e5a30acc766f38954 100644 (file)
@@ -585,7 +585,7 @@ int sof_intel_board_set_dai_link(struct device *dev, struct snd_soc_card *card,
 EXPORT_SYMBOL_NS(sof_intel_board_set_dai_link, SND_SOC_INTEL_SOF_BOARD_HELPERS);
 
 struct snd_soc_dai *get_codec_dai_by_name(struct snd_soc_pcm_runtime *rtd,
-                                         const char *dai_name[], int num_dais)
+                                         const char * const dai_name[], int num_dais)
 {
        struct snd_soc_dai *dai;
        int index;
index b626198f685df0b34176504aec74519d4e9cac62..f42d5d6403219e695d5da233d34aeb527dd3efcc 100644 (file)
@@ -119,6 +119,6 @@ int sof_intel_board_set_hdmi_in_link(struct device *dev,
                                     int ssp_hdmi);
 
 struct snd_soc_dai *get_codec_dai_by_name(struct snd_soc_pcm_runtime *rtd,
-                                         const char *dai_name[], int num_dais);
+                                         const char * const dai_name[], int num_dais);
 
 #endif /* __SOF_INTEL_BOARD_HELPERS_H */
index d9c283829fc7ccf5d9b6718b9d1beee91746eaea..4f2e105a1124e84b7bb0f48c440666a65125f4f9 100644 (file)
@@ -15,6 +15,7 @@
 #include <sound/soc-acpi.h>
 #include <sound/soc-dapm.h>
 #include <sound/jack.h>
+#include "sof_board_helpers.h"
 #include "sof_sdw_common.h"
 
 /*
@@ -84,15 +85,24 @@ static struct snd_soc_jack_pin rt_sdca_jack_pins[] = {
        },
 };
 
+static const char * const jack_codecs[] = {
+       "rt711", "rt712", "rt713"
+};
+
 static 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);
-       struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0);
-       struct snd_soc_component *component = codec_dai->component;
+       struct snd_soc_dai *codec_dai;
+       struct snd_soc_component *component;
        struct snd_soc_jack *jack;
        int ret;
 
+       codec_dai = get_codec_dai_by_name(rtd, jack_codecs, ARRAY_SIZE(jack_codecs));
+       if (!codec_dai)
+               return -EINVAL;
+
+       component = codec_dai->component;
        card->components = devm_kasprintf(card->dev, GFP_KERNEL,
                                          "%s hs:%s-sdca",
                                          card->components, component->name_prefix);
@@ -213,3 +223,4 @@ int sof_sdw_rt_sdca_jack_init(struct snd_soc_card *card,
 
        return 0;
 }
+MODULE_IMPORT_NS(SND_SOC_INTEL_SOF_BOARD_HELPERS);