{
        int ret = 0;
 
-       if (!dai->started &&
+       if (!dai->started[substream->stream] &&
            dai->driver->ops->startup)
                ret = dai->driver->ops->startup(substream, dai);
 
        if (ret == 0)
-               dai->started = 1;
+               dai->started[substream->stream] = 1;
 
        return ret;
 }
 void snd_soc_dai_shutdown(struct snd_soc_dai *dai,
                         struct snd_pcm_substream *substream)
 {
-       if (dai->started &&
+       if (dai->started[substream->stream] &&
            dai->driver->ops->shutdown)
                dai->driver->ops->shutdown(substream, dai);
 
-       dai->started = 0;
+       dai->started[substream->stream] = 0;
 }
 
 int snd_soc_dai_prepare(struct snd_soc_dai *dai,