struct snd_soc_component *component =
                snd_soc_rtdcom_lookup(rtd, DRV_NAME);
        struct device *dev = component->dev;
-       struct sprd_compr_data *data = snd_soc_dai_get_drvdata(rtd->cpu_dai);
+       struct sprd_compr_data *data = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0));
        struct sprd_pcm_dma_params *dma_params = data->dma_params;
        struct sprd_compr_dma *dma = &stream->dma[channel];
        struct dma_slave_config config = { };
        struct snd_soc_component *component =
                snd_soc_rtdcom_lookup(rtd, DRV_NAME);
        struct device *dev = component->dev;
-       struct sprd_compr_data *data = snd_soc_dai_get_drvdata(rtd->cpu_dai);
+       struct sprd_compr_data *data = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0));
        struct sprd_compr_stream *stream;
        struct sprd_compr_callback cb;
        int stream_id = cstream->direction, ret;
 
        unsigned long flags;
        int ret, i, j, sg_num;
 
-       dma_params = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
+       dma_params = snd_soc_dai_get_dma_data(asoc_rtd_to_cpu(rtd, 0), substream);
        if (!dma_params) {
                dev_warn(component->dev, "no dma parameters setting\n");
                dma_private->params = NULL;