#define simple_priv_to_link(priv, i)   (simple_priv_to_card(priv)->dai_link + (i))
 
 struct link_info {
-       int dais; /* number of dai  */
        int link; /* number of link */
-       int conf; /* number of codec_conf */
        int cpu;  /* turn for CPU / Codec */
        struct prop_nums num[SNDRV_MINOR_DEVICES];
 };
 
 
        memset(&li, 0, sizeof(li));
        graph_get_dais_count(priv, &li);
-       if (!li.link || !li.dais)
+       if (!li.link)
                return -EINVAL;
 
        ret = asoc_simple_init_priv(priv, &li);
        li->num[li->link].platforms     = 1;
 
        li->link += 1; /* 1xCPU-Codec */
-       li->dais += 2; /* 1xCPU + 1xCodec */
 
        dev_dbg(dev, "Count As Normal\n");
 
                li->num[li->link].platforms     = 1;
 
                li->link++; /* 1xCPU-dummy */
-               li->dais++; /* 1xCPU */
        } else {
                li->num[li->link].codecs        = 1;
 
                li->link++; /* 1xdummy-Codec */
-               li->conf++; /* 1xdummy-Codec */
-               li->dais++; /* 1xCodec */
        }
 
        dev_dbg(dev, "Count As DPCM\n");
 static void graph_get_dais_count(struct asoc_simple_priv *priv,
                                 struct link_info *li)
 {
-       struct device *dev = simple_priv_to_dev(priv);
-
        /*
         * link_num :   number of links.
         *              CPU-Codec / CPU-dummy / dummy-Codec
        graph_for_each_link(priv, li,
                            graph_count_noml,
                            graph_count_dpcm);
-       dev_dbg(dev, "link %d, dais %d, ccnf %d\n",
-               li->link, li->dais, li->conf);
 }
 
 int audio_graph_card_probe(struct snd_soc_card *card)
 
        struct asoc_simple_dai *dais;
        struct snd_soc_dai_link_component *dlcs;
        struct snd_soc_codec_conf *cconf = NULL;
-       int i, dai_num = 0, dlc_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);
 
                dai_num += cc;
                dlc_num += cc + li->num[i].platforms;
+
+               if (!li->num[i].cpus)
+                       cnf_num += li->num[i].codecs;
        }
 
        dais = devm_kcalloc(dev, dai_num, sizeof(*dais),      GFP_KERNEL);
        if (!dais || !dlcs)
                return -ENOMEM;
 
-       if (li->conf) {
-               cconf = devm_kcalloc(dev, li->conf, sizeof(*cconf), GFP_KERNEL);
+       if (cnf_num) {
+               cconf = devm_kcalloc(dev, cnf_num, sizeof(*cconf), GFP_KERNEL);
                if (!cconf)
                        return -ENOMEM;
        }
 
+       dev_dbg(dev, "link %d, dais %d, ccnf %d\n",
+               li->link, dai_num, cnf_num);
+
        /* dummy CPU/Codec */
        priv->dummy.of_node     = NULL;
        priv->dummy.dai_name    = "snd-soc-dummy-dai";
        card->dai_link          = priv->dai_link;
        card->num_links         = li->link;
        card->codec_conf        = cconf;
-       card->num_configs       = li->conf;
+       card->num_configs       = cnf_num;
 
        for (i = 0; i < li->link; i++) {
                if (li->num[i].cpus) {
 
        li->num[li->link].platforms     = 1;
 
        li->link += 1;
-       li->dais += 2;
 
        return 0;
 }
                li->num[li->link].platforms     = 1;
 
                li->link++; /* CPU-dummy */
-               li->dais++;
        } else {
                li->num[li->link].codecs        = 1;
 
                li->link++; /* dummy-Codec */
-               li->dais++;
-               li->conf++;
        }
 
        return 0;
                li->num[0].platforms    = 1;
 
                li->link = 1;
-               li->dais = 2;
-               li->conf = 0;
                return;
        }
 
        simple_for_each_link(priv, li,
                             simple_count_noml,
                             simple_count_dpcm);
-
-       dev_dbg(dev, "link %d, dais %d, ccnf %d\n",
-               li->link, li->dais, li->conf);
 }
 
 static int simple_soc_probe(struct snd_soc_card *card)
 
        memset(&li, 0, sizeof(li));
        simple_get_dais_count(priv, &li);
-       if (!li.link || !li.dais)
+       if (!li.link)
                return -EINVAL;
 
        ret = asoc_simple_init_priv(priv, &li);