static int db1200_i2s_startup(struct snd_pcm_substream *substream)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_dai *codec_dai = rtd->codec_dai;
+       struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
 
        /* WM8731 has its own 12MHz crystal */
        snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        int stype = substream->stream, *dmaids;
 
-       dmaids = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
+       dmaids = snd_soc_dai_get_dma_data(asoc_rtd_to_cpu(rtd, 0), substream);
        if (!dmaids)
                return -ENODEV; /* whoa, has ordering changed? */
 
 
        int *dmaids, s = substream->stream;
        char *name;
 
-       dmaids = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
+       dmaids = snd_soc_dai_get_dma_data(asoc_rtd_to_cpu(rtd, 0), substream);
        if (!dmaids)
                return -ENODEV; /* whoa, has ordering changed? */
 
 
 static inline struct au1xpsc_audio_data *ac97_to_pscdata(struct snd_ac97 *x)
 {
        struct snd_soc_card *c = x->bus->card->private_data;
-       return snd_soc_dai_get_drvdata(c->rtd->cpu_dai);
+       return snd_soc_dai_get_drvdata(c->asoc_rtd_to_cpu(rtd, 0));
 }
 
 #else