int snd_soc_dai_set_tristate(struct snd_soc_dai *dai, int tristate);
 
+int snd_soc_dai_prepare(struct snd_soc_dai *dai,
+                       struct snd_pcm_substream *substream);
+
 /* Digital Audio Interface mute */
 int snd_soc_dai_digital_mute(struct snd_soc_dai *dai, int mute,
                             int direction);
 
 }
 EXPORT_SYMBOL_GPL(snd_soc_dai_set_tristate);
 
+int snd_soc_dai_prepare(struct snd_soc_dai *dai,
+                       struct snd_pcm_substream *substream)
+{
+       int ret = 0;
+
+       if (!snd_soc_dai_stream_valid(dai, substream->stream))
+               return 0;
+
+       if (dai->driver->ops &&
+           dai->driver->ops->prepare)
+               ret = dai->driver->ops->prepare(substream, dai);
+
+       return soc_dai_ret(dai, ret);
+}
+EXPORT_SYMBOL_GPL(snd_soc_dai_prepare);
+
 /**
  * snd_soc_dai_digital_mute - configure DAI system or master clock.
  * @dai: DAI
        int i, ret;
 
        for_each_rtd_dais(rtd, i, dai) {
-               if (!snd_soc_dai_stream_valid(dai, substream->stream))
-                       continue;
-               if (dai->driver->ops &&
-                   dai->driver->ops->prepare) {
-                       ret = dai->driver->ops->prepare(substream, dai);
-                       if (ret < 0)
-                               return soc_dai_ret(dai, ret);
-               }
+               ret = snd_soc_dai_prepare(dai, substream);
+               if (ret < 0)
+                       return ret;
        }
 
        return 0;