}
 
 static int create_sdw_dailink(struct snd_soc_card *card,
-                             struct device *dev, int *be_index,
+                             struct device *dev, int *link_index,
                              struct snd_soc_dai_link *dai_links,
                              int sdw_be_num, int sdw_cpu_dai_num,
                              struct snd_soc_dai_link_component *cpus,
                        cpus[cpu_dai_index++].dai_name = cpu_name;
                }
 
-               if (*be_index >= sdw_be_num) {
-                       dev_err(dev, " invalid be dai index %d", *be_index);
+               /*
+                * We create sdw dai links at first stage, so link index should
+                * not be larger than sdw_be_num
+                */
+               if (*link_index >= sdw_be_num) {
+                       dev_err(dev, "invalid dai link index %d", *link_index);
                        return -EINVAL;
                }
 
 
                playback = (stream == SNDRV_PCM_STREAM_PLAYBACK);
                capture = (stream == SNDRV_PCM_STREAM_CAPTURE);
-               init_dai_link(dev, dai_links + *be_index, *be_index, name,
+               init_dai_link(dev, dai_links + *link_index, *link_index, name,
                              playback, capture,
                              cpus + *cpu_id, cpu_dai_num,
                              codecs, codec_num,
                              NULL, &sdw_ops);
+
                /*
                 * SoundWire DAILINKs use 'stream' functions and Bank Switch operations
                 * based on wait_for_completion(), tag them as 'nonatomic'.
                 */
-               dai_links[*be_index].nonatomic = true;
+               dai_links[*link_index].nonatomic = true;
 
-               ret = set_codec_init_func(card, link, dai_links + (*be_index)++,
+               ret = set_codec_init_func(card, link, dai_links + (*link_index)++,
                                          playback, group_id);
                if (ret < 0) {
                        dev_err(dev, "failed to init codec %d", codec_index);
        bool group_generated[SDW_MAX_GROUPS];
        int ssp_codec_index, ssp_mask;
        struct snd_soc_dai_link *links;
-       int num_links, link_id = 0;
+       int num_links, link_index = 0;
        char *name, *cpu_name;
        int total_cpu_dai_num;
        int sdw_cpu_dai_num;
                    group_generated[endpoint->group_id])
                        continue;
 
-               ret = create_sdw_dailink(card, dev, &be_id, links, sdw_be_num,
+               ret = create_sdw_dailink(card, dev, &link_index, links, sdw_be_num,
                                         sdw_cpu_dai_num, cpus, adr_link,
                                         &cpu_id, group_generated,
                                         codec_conf, codec_conf_count,
                                         &codec_conf_index,
                                         &ignore_pch_dmic);
                if (ret < 0) {
-                       dev_err(dev, "failed to create dai link %d", be_id);
+                       dev_err(dev, "failed to create dai link %d", link_index);
                        return ret;
                }
        }
 
-       /* non-sdw DAI follows sdw DAI */
-       link_id = be_id;
-
        /* get BE ID for non-sdw DAI */
-       be_id = get_next_be_id(links, be_id);
+       be_id = get_next_be_id(links, link_index);
 
 SSP:
        /* SSP */
 
                playback = info->direction[SNDRV_PCM_STREAM_PLAYBACK];
                capture = info->direction[SNDRV_PCM_STREAM_CAPTURE];
-               init_dai_link(dev, links + link_id, be_id, name,
+               init_dai_link(dev, links + link_index, be_id, name,
                              playback, capture,
                              cpus + cpu_id, 1,
                              ssp_components, 1,
                              NULL, info->ops);
 
-               ret = info->init(card, NULL, links + link_id, info, 0);
+               ret = info->init(card, NULL, links + link_index, info, 0);
                if (ret < 0)
                        return ret;
 
-               INC_ID(be_id, cpu_id, link_id);
+               INC_ID(be_id, cpu_id, link_index);
        }
 
 DMIC:
                        goto HDMI;
                }
                cpus[cpu_id].dai_name = "DMIC01 Pin";
-               init_dai_link(dev, links + link_id, be_id, "dmic01",
+               init_dai_link(dev, links + link_index, be_id, "dmic01",
                              0, 1, // DMIC only supports capture
                              cpus + cpu_id, 1,
                              dmic_component, 1,
                              sof_sdw_dmic_init, NULL);
-               INC_ID(be_id, cpu_id, link_id);
+               INC_ID(be_id, cpu_id, link_index);
 
                cpus[cpu_id].dai_name = "DMIC16k Pin";
-               init_dai_link(dev, links + link_id, be_id, "dmic16k",
+               init_dai_link(dev, links + link_index, be_id, "dmic16k",
                              0, 1, // DMIC only supports capture
                              cpus + cpu_id, 1,
                              dmic_component, 1,
                              /* don't call sof_sdw_dmic_init() twice */
                              NULL, NULL);
-               INC_ID(be_id, cpu_id, link_id);
+               INC_ID(be_id, cpu_id, link_index);
        }
 
 HDMI:
                        return -ENOMEM;
 
                cpus[cpu_id].dai_name = cpu_name;
-               init_dai_link(dev, links + link_id, be_id, name,
+               init_dai_link(dev, links + link_index, be_id, name,
                              1, 0, // HDMI only supports playback
                              cpus + cpu_id, 1,
                              idisp_components + i, 1,
                              sof_sdw_hdmi_init, NULL);
-               INC_ID(be_id, cpu_id, link_id);
+               INC_ID(be_id, cpu_id, link_index);
        }
 
        if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT) {
                        return -ENOMEM;
 
                cpus[cpu_id].dai_name = cpu_name;
-               init_dai_link(dev, links + link_id, be_id, name, 1, 1,
+               init_dai_link(dev, links + link_index, be_id, name, 1, 1,
                                cpus + cpu_id, 1, ssp_components, 1, NULL, NULL);
        }