]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ASoC: sdw_utils/intel/amd: refactor dai link init logic
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>
Fri, 1 Nov 2024 02:08:01 +0000 (07:38 +0530)
committerMark Brown <broonie@kernel.org>
Fri, 1 Nov 2024 13:22:47 +0000 (13:22 +0000)
Add 'no_pcm' as parameter for asoc_sdw_init_dai_link() so that
same function can be used for SOF and legacy(No DSP) stack.
Pass 'no_pcm' as 1 for Intel and AMD SOF based machine drivers.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://patch.msgid.link/20241101020802.1103181-2-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc_sdw_utils.h
sound/soc/amd/acp/acp-sdw-sof-mach.c
sound/soc/intel/boards/sof_sdw.c
sound/soc/sdw_utils/soc_sdw_utils.c

index a25f94d6eb678cd03ebbff8f60e43fdd983f0243..0e82598e10af05dfd251da693d8784ce66eb622c 100644 (file)
@@ -152,14 +152,15 @@ void asoc_sdw_init_dai_link(struct device *dev, struct snd_soc_dai_link *dai_lin
                            struct snd_soc_dai_link_component *cpus, int cpus_num,
                            struct snd_soc_dai_link_component *platform_component,
                            int num_platforms, struct snd_soc_dai_link_component *codecs,
-                           int codecs_num, int (*init)(struct snd_soc_pcm_runtime *rtd),
+                           int codecs_num, int no_pcm,
+                           int (*init)(struct snd_soc_pcm_runtime *rtd),
                            const struct snd_soc_ops *ops);
 
 int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *dai_links,
                                  int *be_id, char *name, int playback, int capture,
                                  const char *cpu_dai_name, const char *platform_comp_name,
                                  int num_platforms, const char *codec_name,
-                                 const char *codec_dai_name,
+                                 const char *codec_dai_name, int no_pcm,
                                  int (*init)(struct snd_soc_pcm_runtime *rtd),
                                  const struct snd_soc_ops *ops);
 
index 36e6d6db90c1723dc98012aff541fe7c1c92d715..8fce8cb957c9b8203a5bbb11e3d2a557fcacfc14 100644 (file)
@@ -236,7 +236,7 @@ static int create_sdw_dailink(struct snd_soc_card *card,
                asoc_sdw_init_dai_link(dev, *dai_links, be_id, name, playback, capture,
                                       cpus, num_cpus, platform_component,
                                       ARRAY_SIZE(platform_component), codecs, num_codecs,
-                                      asoc_sdw_rtd_init, &sdw_ops);
+                                      1, asoc_sdw_rtd_init, &sdw_ops);
 
                /*
                 * SoundWire DAILINKs use 'stream' functions and Bank Switch operations
@@ -285,7 +285,7 @@ static int create_sdw_dailinks(struct snd_soc_card *card,
 }
 
 static int create_dmic_dailinks(struct snd_soc_card *card,
-                               struct snd_soc_dai_link **dai_links, int *be_id)
+                               struct snd_soc_dai_link **dai_links, int *be_id, int no_pcm)
 {
        struct device *dev = card->dev;
        int ret;
@@ -294,7 +294,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
                                            0, 1, // DMIC only supports capture
                                            "acp-sof-dmic", platform_component->name,
                                            ARRAY_SIZE(platform_component),
-                                           "dmic-codec", "dmic-hifi",
+                                           "dmic-codec", "dmic-hifi", no_pcm,
                                            asoc_sdw_dmic_init, NULL);
        if (ret)
                return ret;
@@ -377,7 +377,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
                if (ctx->ignore_internal_dmic) {
                        dev_warn(dev, "Ignoring ACP DMIC\n");
                } else {
-                       ret = create_dmic_dailinks(card, &dai_links, &be_id);
+                       ret = create_dmic_dailinks(card, &dai_links, &be_id, 1);
                        if (ret)
                                return ret;
                }
index 5614e706a0bbedfb86d9a8a1cee0e8679ddb868a..9ca284a1d66663a5ddec0b968bae8ba7ceac6880 100644 (file)
@@ -790,7 +790,7 @@ static int create_sdw_dailink(struct snd_soc_card *card,
                asoc_sdw_init_dai_link(dev, *dai_links, be_id, name, playback, capture,
                                       cpus, num_cpus, platform_component,
                                       ARRAY_SIZE(platform_component), codecs, num_codecs,
-                                      asoc_sdw_rtd_init, &sdw_ops);
+                                      1, asoc_sdw_rtd_init, &sdw_ops);
 
                /*
                 * SoundWire DAILINKs use 'stream' functions and Bank Switch operations
@@ -867,7 +867,7 @@ static int create_ssp_dailinks(struct snd_soc_card *card,
                                                    playback, capture, cpu_dai_name,
                                                    platform_component->name,
                                                    ARRAY_SIZE(platform_component), codec_name,
-                                                   ssp_info->dais[0].dai_name, NULL,
+                                                   ssp_info->dais[0].dai_name, 1, NULL,
                                                    ssp_info->ops);
                if (ret)
                        return ret;
@@ -892,7 +892,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
                                            0, 1, // DMIC only supports capture
                                            "DMIC01 Pin", platform_component->name,
                                            ARRAY_SIZE(platform_component),
-                                           "dmic-codec", "dmic-hifi",
+                                           "dmic-codec", "dmic-hifi", 1,
                                            asoc_sdw_dmic_init, NULL);
        if (ret)
                return ret;
@@ -903,7 +903,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
                                            0, 1, // DMIC only supports capture
                                            "DMIC16k Pin", platform_component->name,
                                            ARRAY_SIZE(platform_component),
-                                           "dmic-codec", "dmic-hifi",
+                                           "dmic-codec", "dmic-hifi", 1,
                                            /* don't call asoc_sdw_dmic_init() twice */
                                            NULL, NULL);
        if (ret)
@@ -947,7 +947,7 @@ static int create_hdmi_dailinks(struct snd_soc_card *card,
                                                    1, 0, // HDMI only supports playback
                                                    cpu_dai_name, platform_component->name,
                                                    ARRAY_SIZE(platform_component),
-                                                   codec_name, codec_dai_name,
+                                                   codec_name, codec_dai_name, 1,
                                                    i == 0 ? sof_sdw_hdmi_init : NULL, NULL);
                if (ret)
                        return ret;
@@ -975,7 +975,7 @@ static int create_bt_dailinks(struct snd_soc_card *card,
                                            1, 1, cpu_dai_name, platform_component->name,
                                            ARRAY_SIZE(platform_component),
                                            snd_soc_dummy_dlc.name, snd_soc_dummy_dlc.dai_name,
-                                           NULL, NULL);
+                                           1, NULL, NULL);
        if (ret)
                return ret;
 
index 6610efe8af18513c5dea2cd0b87edcc48600e27f..e7f5938701effab247c82dd35601ed3cc2e108f8 100644 (file)
@@ -1015,7 +1015,8 @@ void asoc_sdw_init_dai_link(struct device *dev, struct snd_soc_dai_link *dai_lin
                            struct snd_soc_dai_link_component *cpus, int cpus_num,
                            struct snd_soc_dai_link_component *platform_component,
                            int num_platforms, struct snd_soc_dai_link_component *codecs,
-                           int codecs_num, int (*init)(struct snd_soc_pcm_runtime *rtd),
+                           int codecs_num, int no_pcm,
+                           int (*init)(struct snd_soc_pcm_runtime *rtd),
                            const struct snd_soc_ops *ops)
 {
        dev_dbg(dev, "create dai link %s, id %d\n", name, *be_id);
@@ -1023,7 +1024,7 @@ void asoc_sdw_init_dai_link(struct device *dev, struct snd_soc_dai_link *dai_lin
        dai_links->name = name;
        dai_links->platforms = platform_component;
        dai_links->num_platforms = num_platforms;
-       dai_links->no_pcm = 1;
+       dai_links->no_pcm = no_pcm;
        dai_links->cpus = cpus;
        dai_links->num_cpus = cpus_num;
        dai_links->codecs = codecs;
@@ -1039,7 +1040,7 @@ int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *d
                                  int *be_id, char *name, int playback, int capture,
                                  const char *cpu_dai_name, const char *platform_comp_name,
                                  int num_platforms, const char *codec_name,
-                                 const char *codec_dai_name,
+                                 const char *codec_dai_name, int no_pcm,
                                  int (*init)(struct snd_soc_pcm_runtime *rtd),
                                  const struct snd_soc_ops *ops)
 {
@@ -1058,7 +1059,7 @@ int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *d
 
        asoc_sdw_init_dai_link(dev, dai_links, be_id, name, playback, capture,
                               &dlc[0], 1, &dlc[1], num_platforms,
-                              &dlc[2], 1, init, ops);
+                              &dlc[2], 1, no_pcm, init, ops);
 
        return 0;
 }