int snd_soc_get_dai_name(const struct of_phandle_args *args,
                         const char **dai_name);
 int snd_soc_of_get_dai_name(struct device_node *of_node,
-                           const char **dai_name);
+                           const char **dai_name, int index);
 int snd_soc_of_get_dai_link_codecs(struct device *dev,
                                   struct device_node *of_node,
                                   struct snd_soc_dai_link *dai_link);
 
                link->platforms->of_node = link->cpus->of_node;
                link->id = args.args[0];
 
-               ret = snd_soc_of_get_dai_name(cpu, &link->cpus->dai_name);
+               ret = snd_soc_of_get_dai_name(cpu, &link->cpus->dai_name, 0);
                if (ret) {
                        dev_err_probe(card->dev, ret,
                                      "%s: error getting cpu dai name\n", link->name);
 
         * 2) user need to rebind Sound Card everytime
         *    if he unbinded CPU or Codec.
         */
-       ret = snd_soc_of_get_dai_name(node, &dlc->dai_name);
+       ret = snd_soc_of_get_dai_name(node, &dlc->dai_name, 0);
        if (ret < 0)
                return ret;
 
 
        for (i = 0; i < card->num_links; i++)
                loongson_dai_links[i].codecs->of_node = args.np;
 
-       snd_soc_of_get_dai_name(cpu, &cpu_dai_name);
-       snd_soc_of_get_dai_name(codec, &codec_dai_name);
+       snd_soc_of_get_dai_name(cpu, &cpu_dai_name, 0);
+       snd_soc_of_get_dai_name(codec, &codec_dai_name, 0);
        for (i = 0; i < card->num_links; i++) {
                loongson_dai_links[i].cpus->dai_name = cpu_dai_name;
                loongson_dai_links[i].codecs->dai_name = codec_dai_name;
 
 
        np = of_get_child_by_name(pdev->dev.of_node, "codec-capture");
        if (np) {
-               ret = snd_soc_of_get_dai_name(np, &codec_capture_dai);
+               ret = snd_soc_of_get_dai_name(np, &codec_capture_dai, 0);
                of_node_put(np);
                if (ret < 0) {
                        dev_err(&pdev->dev,
 
                link->cpus->of_node = args.np;
                link->id = args.args[0];
 
-               ret = snd_soc_of_get_dai_name(cpu, &link->cpus->dai_name);
+               ret = snd_soc_of_get_dai_name(cpu, &link->cpus->dai_name, 0);
                if (ret) {
                        dev_err_probe(card->dev, ret,
                                      "%s: error getting cpu dai name\n", link->name);
 
 EXPORT_SYMBOL_GPL(snd_soc_get_dai_name);
 
 int snd_soc_of_get_dai_name(struct device_node *of_node,
-                           const char **dai_name)
+                           const char **dai_name, int index)
 {
        struct snd_soc_dai_link_component dlc;
-       int ret = snd_soc_of_get_dlc(of_node, NULL, &dlc, 0);
+       int ret = snd_soc_of_get_dlc(of_node, NULL, &dlc, index);
 
        if (ret == 0)
                *dai_name = dlc.dai_name;