struct asoc_simple_jack mic_jack;
        struct snd_soc_dai_link *dai_link;
        struct asoc_simple_dai *dais;
-       struct asoc_simple_card_data adata;
        struct snd_soc_codec_conf *codec_conf;
 };
 
 
        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, top,  PREFIX, &dai_props->adata);
        asoc_simple_card_parse_convert(dev, node, prefix, &dai_props->adata);
+       asoc_simple_card_parse_convert(dev, np,   NULL,   &dai_props->adata);
 
        ret = asoc_simple_card_of_parse_tdm(np, dai);
        if (ret)
        if (ret < 0)
                return ret;
 
-       asoc_simple_card_parse_convert(dev, top, PREFIX, &priv->adata);
-
        /* Single/Muti DAI link(s) & New style of DT node */
        loop            = 1;
        link_idx        = 0;