goto err;
                }
 
-               ret = of_parse_phandle_with_args(cpu, "sound-dai",
-                                       "#sound-dai-cells", 0, &args);
-               if (ret) {
-                       dev_err(card->dev, "%s: error getting cpu phandle\n", link->name);
-                       goto err;
-               }
-               link->cpus->of_node = args.np;
-               link->id = args.args[0];
-
-               ret = snd_soc_of_get_dai_name(cpu, &link->cpus->dai_name, 0);
+               ret = snd_soc_of_get_dlc(cpu, &args, link->cpus, 0);
                if (ret) {
                        dev_err_probe(card->dev, ret,
                                      "%s: error getting cpu dai name\n", link->name);
                        goto err;
                }
 
+               link->id = args.args[0];
+
                if (platform) {
                        link->platforms->of_node = of_parse_phandle(platform,
                                        "sound-dai",