struct snd_pcm_hw_params *params)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_dai *codec_dai = rtd->codec_dai;
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        u32 rx_ch[SLIM_MAX_RX_PORTS], tx_ch[SLIM_MAX_TX_PORTS];
        u32 rx_ch_cnt = 0, tx_ch_cnt = 0;
        int ret = 0;
 
 static int apq8096_init(struct snd_soc_pcm_runtime *rtd)
 {
-       struct snd_soc_dai *codec_dai = rtd->codec_dai;
+       struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
 
        /*
         * Codec SLIMBUS configuration
 
 {
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct snd_soc_pcm_runtime *soc_prtd = substream->private_data;
-       struct snd_soc_dai *cpu_dai = soc_prtd->cpu_dai;
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(soc_prtd, 0);
        struct q6asm_dai_rtd *prtd;
        struct q6asm_dai_data *pdata;
        struct device *dev = component->dev;
        struct snd_soc_pcm_runtime *rtd = stream->private_data;
        struct snd_soc_component *c = snd_soc_rtdcom_lookup(rtd, DRV_NAME);
        struct snd_compr_runtime *runtime = stream->runtime;
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        struct q6asm_dai_data *pdata;
        struct device *dev = c->dev;
        struct q6asm_dai_rtd *prtd;
 
                                     struct snd_pcm_hw_params *params)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        struct snd_soc_dai *codec_dai;
        struct sdm845_snd_data *pdata = snd_soc_card_get_drvdata(rtd->card);
        u32 rx_ch[SLIM_MAX_RX_PORTS], tx_ch[SLIM_MAX_TX_PORTS];
                                        struct snd_pcm_hw_params *params)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        struct snd_soc_dai *codec_dai;
        int ret = 0, j;
        int channels, slot_width;
                                        struct snd_pcm_hw_params *params)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
-       struct snd_soc_dai *codec_dai = rtd->codec_dai;
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
+       struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
        int ret = 0;
 
        switch (cpu_dai->id) {
 {
        struct snd_soc_component *component;
        struct snd_soc_card *card = rtd->card;
-       struct snd_soc_dai *codec_dai = rtd->codec_dai;
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        struct sdm845_snd_data *pdata = snd_soc_card_get_drvdata(card);
        struct snd_jack *jack;
        /*
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_card *card = rtd->card;
        struct sdm845_snd_data *data = snd_soc_card_get_drvdata(card);
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
-       struct snd_soc_dai *codec_dai = rtd->codec_dai;
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
+       struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
        int j;
        int ret;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_card *card = rtd->card;
        struct sdm845_snd_data *data = snd_soc_card_get_drvdata(card);
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
 
        switch (cpu_dai->id) {
        case PRIMARY_MI2S_RX:
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct sdm845_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id];
        int ret;
 
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct sdm845_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id];
 
        if (sruntime && data->stream_prepared[cpu_dai->id]) {