int cpus;
        int codecs;
        int platforms;
-       int c2c;
 };
 
 struct asoc_simple_priv {
                struct snd_soc_dai_link_component *platforms;
                struct asoc_simple_data adata;
                struct snd_soc_codec_conf *codec_conf;
-               struct snd_soc_pcm_stream *c2c_conf;
                struct prop_nums num;
                unsigned int mclk_fs;
        } *dai_props;
        struct snd_soc_dai_link_component *dlcs;
        struct snd_soc_dai_link_component dummy;
        struct snd_soc_codec_conf *codec_conf;
-       struct snd_soc_pcm_stream *c2c_conf;
        struct gpio_desc *pa_gpio;
        const struct snd_soc_ops *ops;
        unsigned int dpcm_selectable:1;
 
         */
        of_property_read_u32(ports, "rate", &val);
        if (val) {
-               struct simple_dai_props *dai_props = simple_priv_to_props(priv, li->link);
-               struct snd_soc_pcm_stream *c2c_conf = dai_props->c2c_conf;
+               struct device *dev = simple_priv_to_dev(priv);
+               struct snd_soc_pcm_stream *c2c_conf;
+
+               c2c_conf = devm_kzalloc(dev, sizeof(*c2c_conf), GFP_KERNEL);
+               if (!c2c_conf)
+                       goto err1;
 
                c2c_conf->formats       = SNDRV_PCM_FMTBIT_S32_LE; /* update ME */
                c2c_conf->rates         = SNDRV_PCM_RATE_8000_384000;
        of_node_put(ep1);
        of_node_put(codec0_port);
        of_node_put(codec1_port);
+err1:
        of_node_put(ports);
        of_node_put(port0);
        of_node_put(port1);
        li->num[li->link].cpus          =
        li->num[li->link].platforms     = graph_counter(codec0);
        li->num[li->link].codecs        = graph_counter(codec1);
-       li->num[li->link].c2c           = 1;
 
        of_node_put(ports);
        of_node_put(port1);
 
        struct asoc_simple_dai *dais;
        struct snd_soc_dai_link_component *dlcs;
        struct snd_soc_codec_conf *cconf = NULL;
-       struct snd_soc_pcm_stream *c2c_conf = NULL;
-       int i, dai_num = 0, dlc_num = 0, cnf_num = 0, c2c_num = 0;
+       int i, dai_num = 0, dlc_num = 0, cnf_num = 0;
 
        dai_props = devm_kcalloc(dev, li->link, sizeof(*dai_props), GFP_KERNEL);
        dai_link  = devm_kcalloc(dev, li->link, sizeof(*dai_link),  GFP_KERNEL);
 
                if (!li->num[i].cpus)
                        cnf_num += li->num[i].codecs;
-
-               c2c_num += li->num[i].c2c;
        }
 
        dais = devm_kcalloc(dev, dai_num, sizeof(*dais), GFP_KERNEL);
                        return -ENOMEM;
        }
 
-       if (c2c_num) {
-               c2c_conf = devm_kcalloc(dev, c2c_num, sizeof(*c2c_conf), GFP_KERNEL);
-               if (!c2c_conf)
-                       return -ENOMEM;
-       }
-
        dev_dbg(dev, "link %d, dais %d, ccnf %d\n",
                li->link, dai_num, cnf_num);
 
        priv->dais              = dais;
        priv->dlcs              = dlcs;
        priv->codec_conf        = cconf;
-       priv->c2c_conf          = c2c_conf;
 
        card->dai_link          = priv->dai_link;
        card->num_links         = li->link;
 
                        dlcs += li->num[i].cpus;
                        dais += li->num[i].cpus;
-
-                       if (li->num[i].c2c) {
-                               /* Codec2Codec */
-                               dai_props[i].c2c_conf = c2c_conf;
-                               c2c_conf += li->num[i].c2c;
-                       }
                } else {
                        /* DPCM Be's CPU = dummy */
                        dai_props[i].cpus       =