* bailed out on a higher level, since there would be no
                 * CODEC to support the transfer direction in that case.
                 */
-               if (!snd_soc_dai_stream_valid(codec_dai,
-                                             substream->stream))
+               if (!snd_soc_dai_stream_valid(codec_dai, stream))
                        continue;
 
                codec_stream = snd_soc_dai_get_pcm_stream(codec_dai, stream);
 
        dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_FE);
 
-       ret = dpcm_be_dai_startup(fe, fe_substream->stream);
+       ret = dpcm_be_dai_startup(fe, stream);
        if (ret < 0) {
                dev_err(fe->dev,"ASoC: failed to start some BEs %d\n", ret);
                goto be_err;
        return 0;
 
 unwind:
-       dpcm_be_dai_startup_unwind(fe, fe_substream->stream);
+       dpcm_be_dai_startup_unwind(fe, stream);
 be_err:
        dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_NO);
        return ret;
        dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_FE);
 
        /* shutdown the BEs */
-       dpcm_be_dai_shutdown(fe, substream->stream);
+       dpcm_be_dai_shutdown(fe, stream);
 
        dev_dbg(fe->dev, "ASoC: close FE %s\n", fe->dai_link->name);
 
        mutex_lock_nested(&fe->card->mutex, SND_SOC_CARD_CLASS_RUNTIME);
        dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_FE);
 
-       memcpy(&fe->dpcm[substream->stream].hw_params, params,
+       memcpy(&fe->dpcm[stream].hw_params, params,
                        sizeof(struct snd_pcm_hw_params));
-       ret = dpcm_be_dai_hw_params(fe, substream->stream);
+       ret = dpcm_be_dai_hw_params(fe, stream);
        if (ret < 0) {
                dev_err(fe->dev,"ASoC: hw_params BE failed %d\n", ret);
                goto out;
                goto out;
        }
 
-       ret = dpcm_be_dai_prepare(fe, substream->stream);
+       ret = dpcm_be_dai_prepare(fe, stream);
        if (ret < 0)
                goto out;