static int soc_compr_open_fe(struct snd_compr_stream *cstream)
 {
        struct snd_soc_pcm_runtime *fe = cstream->private_data;
-       struct snd_pcm_substream *fe_substream = fe->pcm->streams[0].substream;
+       struct snd_pcm_substream *fe_substream =
+                fe->pcm->streams[cstream->direction].substream;
        struct snd_soc_platform *platform = fe->platform;
        struct snd_soc_dai *cpu_dai = fe->cpu_dai;
        struct snd_soc_dpcm *dpcm;
                                        struct snd_compr_params *params)
 {
        struct snd_soc_pcm_runtime *fe = cstream->private_data;
-       struct snd_pcm_substream *fe_substream = fe->pcm->streams[0].substream;
+       struct snd_pcm_substream *fe_substream =
+                fe->pcm->streams[cstream->direction].substream;
        struct snd_soc_platform *platform = fe->platform;
        struct snd_soc_dai *cpu_dai = fe->cpu_dai;
        int ret = 0, stream;