.hw_params = cht_aif1_hw_params,
 };
 
+SND_SOC_DAILINK_DEF(dummy,
+       DAILINK_COMP_ARRAY(COMP_DUMMY()));
+
+SND_SOC_DAILINK_DEF(media,
+       DAILINK_COMP_ARRAY(COMP_CPU("media-cpu-dai")));
+
+SND_SOC_DAILINK_DEF(deepbuffer,
+       DAILINK_COMP_ARRAY(COMP_CPU("deepbuffer-cpu-dai")));
+
+SND_SOC_DAILINK_DEF(ssp2_port,
+       DAILINK_COMP_ARRAY(COMP_CPU("ssp2-port")));
+SND_SOC_DAILINK_DEF(ssp2_codec,
+       DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10EC5645:00", "rt5645-aif1")));
+
+SND_SOC_DAILINK_DEF(platform,
+       DAILINK_COMP_ARRAY(COMP_PLATFORM("sst-mfld-platform")));
+
 static struct snd_soc_dai_link cht_dailink[] = {
        [MERR_DPCM_AUDIO] = {
                .name = "Audio Port",
                .stream_name = "Audio",
-               .cpu_dai_name = "media-cpu-dai",
-               .codec_dai_name = "snd-soc-dummy-dai",
-               .codec_name = "snd-soc-dummy",
-               .platform_name = "sst-mfld-platform",
                .nonatomic = true,
                .dynamic = 1,
                .dpcm_playback = 1,
                .dpcm_capture = 1,
                .ops = &cht_aif1_ops,
+               SND_SOC_DAILINK_REG(media, dummy, platform),
        },
        [MERR_DPCM_DEEP_BUFFER] = {
                .name = "Deep-Buffer Audio Port",
                .stream_name = "Deep-Buffer Audio",
-               .cpu_dai_name = "deepbuffer-cpu-dai",
-               .codec_dai_name = "snd-soc-dummy-dai",
-               .codec_name = "snd-soc-dummy",
-               .platform_name = "sst-mfld-platform",
                .nonatomic = true,
                .dynamic = 1,
                .dpcm_playback = 1,
                .ops = &cht_aif1_ops,
+               SND_SOC_DAILINK_REG(deepbuffer, dummy, platform),
        },
        /* CODEC<->CODEC link */
        /* back ends */
        {
                .name = "SSP2-Codec",
                .id = 0,
-               .cpu_dai_name = "ssp2-port",
-               .platform_name = "sst-mfld-platform",
                .no_pcm = 1,
-               .codec_dai_name = "rt5645-aif1",
-               .codec_name = "i2c-10EC5645:00",
                .init = cht_codec_init,
                .be_hw_params_fixup = cht_codec_fixup,
                .nonatomic = true,
                .dpcm_playback = 1,
                .dpcm_capture = 1,
                .ops = &cht_be_ssp2_ops,
+               SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform),
        },
 };
 
 
        /* set correct codec name */
        for (i = 0; i < ARRAY_SIZE(cht_dailink); i++)
-               if (!strcmp(card->dai_link[i].codec_name, "i2c-10EC5645:00")) {
-                       card->dai_link[i].codec_name = drv->codec_name;
+               if (!strcmp(card->dai_link[i].codecs->name,
+                           "i2c-10EC5645:00")) {
+                       card->dai_link[i].codecs->name = drv->codec_name;
                        dai_index = i;
                }
 
                snprintf(cht_rt5645_codec_name, sizeof(cht_rt5645_codec_name),
                         "i2c-%s", acpi_dev_name(adev));
                put_device(&adev->dev);
-               cht_dailink[dai_index].codec_name = cht_rt5645_codec_name;
+               cht_dailink[dai_index].codecs->name = cht_rt5645_codec_name;
        }
 
        /*
                        sizeof(cht_rt5645_codec_aif_name),
                        "%s", "rt5645-aif2");
 
-               cht_dailink[dai_index].codec_dai_name =
+               cht_dailink[dai_index].codecs->dai_name =
                        cht_rt5645_codec_aif_name;
        }
 
                        sizeof(cht_rt5645_cpu_dai_name),
                        "%s", "ssp0-port");
 
-               cht_dailink[dai_index].cpu_dai_name =
+               cht_dailink[dai_index].cpus->dai_name =
                        cht_rt5645_cpu_dai_name;
        }