struct snd_pcm_substream *substream);
 int snd_soc_dai_startup(struct snd_soc_dai *dai,
                        struct snd_pcm_substream *substream);
+void snd_soc_dai_shutdown(struct snd_soc_dai *dai,
+                         struct snd_pcm_substream *substream);
 
 struct snd_soc_dai_ops {
        /*
 
                        snd_soc_dai_hw_free(source, &substream);
 
                        source->active--;
-                       if (source->driver->ops->shutdown)
-                               source->driver->ops->shutdown(&substream,
-                                                             source);
+                       snd_soc_dai_shutdown(source, &substream);
                }
 
                substream.stream = SNDRV_PCM_STREAM_PLAYBACK;
                        snd_soc_dai_hw_free(sink, &substream);
 
                        sink->active--;
-                       if (sink->driver->ops->shutdown)
-                               sink->driver->ops->shutdown(&substream, sink);
+                       snd_soc_dai_shutdown(sink, &substream);
                }
                break;
 
 
        i = rtd->num_codecs;
 
 codec_dai_err:
-       for_each_rtd_codec_dai_rollback(rtd, i, codec_dai) {
-               if (codec_dai->driver->ops->shutdown)
-                       codec_dai->driver->ops->shutdown(substream, codec_dai);
-       }
+       for_each_rtd_codec_dai_rollback(rtd, i, codec_dai)
+               snd_soc_dai_shutdown(codec_dai, substream);
 
 component_err:
        soc_pcm_components_close(substream, component);
 
-       if (cpu_dai->driver->ops->shutdown)
-               cpu_dai->driver->ops->shutdown(substream, cpu_dai);
+       snd_soc_dai_shutdown(cpu_dai, substream);
 out:
        mutex_unlock(&rtd->pcm_mutex);
 
 
        snd_soc_dai_digital_mute(cpu_dai, 1, substream->stream);
 
-       if (cpu_dai->driver->ops->shutdown)
-               cpu_dai->driver->ops->shutdown(substream, cpu_dai);
+       snd_soc_dai_shutdown(cpu_dai, substream);
 
-       for_each_rtd_codec_dai(rtd, i, codec_dai) {
-               if (codec_dai->driver->ops->shutdown)
-                       codec_dai->driver->ops->shutdown(substream, codec_dai);
-       }
+       for_each_rtd_codec_dai(rtd, i, codec_dai)
+               snd_soc_dai_shutdown(codec_dai, substream);
 
        if (rtd->dai_link->ops->shutdown)
                rtd->dai_link->ops->shutdown(substream);