{
        struct snd_compr *compr = rtd->compr;
        struct device *dev = compr->card->dev;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[compr->direction];
        size_t size = AUD_RING_SIZE;
        int dma_dir = DMA_FROM_DEVICE, ret;
 {
        struct snd_compr *compr = rtd->compr;
        struct device *dev = compr->card->dev;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[compr->direction];
        int dma_dir = DMA_FROM_DEVICE;
 
 static int uniphier_aio_compr_open(struct snd_compr_stream *cstream)
 {
        struct snd_soc_pcm_runtime *rtd = cstream->private_data;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[cstream->direction];
        int ret;
 
 static int uniphier_aio_compr_free(struct snd_compr_stream *cstream)
 {
        struct snd_soc_pcm_runtime *rtd = cstream->private_data;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[cstream->direction];
        int ret;
 
                                         struct snd_codec *params)
 {
        struct snd_soc_pcm_runtime *rtd = cstream->private_data;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[cstream->direction];
 
        *params = sub->cparams.codec;
                                         struct snd_compr_params *params)
 {
        struct snd_soc_pcm_runtime *rtd = cstream->private_data;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[cstream->direction];
        struct device *dev = &aio->chip->pdev->dev;
        int ret;
 static int uniphier_aio_compr_hw_free(struct snd_compr_stream *cstream)
 {
        struct snd_soc_pcm_runtime *rtd = cstream->private_data;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[cstream->direction];
 
        sub->setting = 0;
 {
        struct snd_soc_pcm_runtime *rtd = cstream->private_data;
        struct snd_compr_runtime *runtime = cstream->runtime;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[cstream->direction];
        int bytes = runtime->fragment_size;
        unsigned long flags;
 {
        struct snd_soc_pcm_runtime *rtd = cstream->private_data;
        struct snd_compr_runtime *runtime = cstream->runtime;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[cstream->direction];
        struct device *dev = &aio->chip->pdev->dev;
        int bytes = runtime->fragment_size, ret = 0;
 {
        struct snd_soc_pcm_runtime *rtd = cstream->private_data;
        struct snd_compr_runtime *runtime = cstream->runtime;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[cstream->direction];
        int bytes = runtime->fragment_size;
        unsigned long flags;
        struct snd_soc_pcm_runtime *rtd = cstream->private_data;
        struct snd_compr_runtime *runtime = cstream->runtime;
        struct device *carddev = rtd->compr->card->dev;
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[cstream->direction];
        size_t cnt = min_t(size_t, count, aio_rb_space_to_end(sub) / 2);
        int bytes = runtime->fragment_size;
 
 {
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[substream->stream];
        int bytes = runtime->period_size *
                runtime->channels * samples_to_bytes(runtime, 1);
 {
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[substream->stream];
        struct device *dev = &aio->chip->pdev->dev;
        int bytes = runtime->period_size *
 {
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
-       struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai);
+       struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0));
        struct uniphier_aio_sub *sub = &aio->sub[substream->stream];
        int bytes = runtime->period_size *
                runtime->channels * samples_to_bytes(runtime, 1);