struct asoc_simple_dai dai;
                struct snd_soc_dai_link_component codecs;
                struct snd_soc_dai_link_component platform;
+               struct asoc_simple_card_data adata;
        } *dai_props;
        struct snd_soc_dai_link *dai_link;
        struct asoc_simple_card_data adata;
                                        struct snd_pcm_hw_params *params)
 {
        struct simple_card_data *priv = snd_soc_card_get_drvdata(rtd->card);
+       struct simple_dai_props *dai_props = simple_priv_to_props(priv, rtd->num);
 
+       asoc_simple_card_convert_fixup(&dai_props->adata, params);
+
+       /* overwrite by top level adata if exist */
        asoc_simple_card_convert_fixup(&priv->adata, params);
 
        return 0;
                                                     "prefix");
        }
 
+       asoc_simple_card_parse_convert(dev, link, prefix, &dai_props->adata);
+
        ret = asoc_simple_card_of_parse_tdm(np, &dai_props->dai);
        if (ret)
                return ret;