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);
 
 
                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
 }
 
 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;
                                            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;
                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;
                }
 
                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
                                                    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;
                                            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;
                                            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)
                                                    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;
                                            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;
 
 
                            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);
        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;
                                  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)
 {
 
        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;
 }