int snd_soc_card_probe(struct snd_soc_card *card);
 int snd_soc_card_late_probe(struct snd_soc_card *card);
+int snd_soc_card_remove(struct snd_soc_card *card);
 
 /* device driver data */
 static inline void snd_soc_card_set_drvdata(struct snd_soc_card *card,
 
 
        return 0;
 }
+
+int snd_soc_card_remove(struct snd_soc_card *card)
+{
+       int ret = 0;
+
+       if (card->probed &&
+           card->remove)
+               ret = card->remove(card);
+
+       card->probed = 0;
+
+       return soc_card_ret(card, ret);
+}
 
        soc_cleanup_card_debugfs(card);
 
        /* remove the card */
-       if (card->probed && card->remove)
-               card->remove(card);
-       card->probed = 0;
+       snd_soc_card_remove(card);
 
        if (card->snd_card) {
                snd_card_free(card->snd_card);