int ret, i, order;
  
        mutex_lock(&client_mutex);
 -                      soc_cleanup_platform(card);
+       for_each_card_prelinks(card, i, dai_link) {
+               ret = soc_init_dai_link(card, dai_link);
+               if (ret) {
++                      soc_cleanup_card_resources(card);
+                       dev_err(card->dev, "ASoC: failed to init link %s: %d\n",
+                               dai_link->name, ret);
+                       mutex_unlock(&client_mutex);
+                       return ret;
+               }
+       }
        mutex_lock_nested(&card->mutex, SND_SOC_CARD_CLASS_INIT);
  
        card->dapm.bias_level = SND_SOC_BIAS_OFF;