.mask = 0,
 };
 
-static int cz_da7219_startup(struct snd_pcm_substream *substream)
+static int cz_da7219_play_startup(struct snd_pcm_substream *substream)
 {
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
                                   &constraints_rates);
 
-       machine->i2s_instance = I2S_SP_INSTANCE;
+       machine->play_i2s_instance = I2S_SP_INSTANCE;
+       return da7219_clk_enable(substream);
+}
+
+static int cz_da7219_cap_startup(struct snd_pcm_substream *substream)
+{
+       struct snd_pcm_runtime *runtime = substream->runtime;
+       struct snd_soc_pcm_runtime *rtd = substream->private_data;
+       struct snd_soc_card *card = rtd->card;
+       struct acp_platform_info *machine = snd_soc_card_get_drvdata(card);
+
+       /*
+        * On this platform for PCM device we support stereo
+        */
+
+       runtime->hw.channels_max = DUAL_CHANNEL;
+       snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS,
+                                  &constraints_channels);
+       snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
+                                  &constraints_rates);
+
+       machine->cap_i2s_instance = I2S_SP_INSTANCE;
        machine->capture_channel = CAP_CHANNEL1;
        return da7219_clk_enable(substream);
 }
        snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
                                   &constraints_rates);
 
-       machine->i2s_instance = I2S_BT_INSTANCE;
+       machine->play_i2s_instance = I2S_BT_INSTANCE;
        return da7219_clk_enable(substream);
 }
 
        snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
                                   &constraints_rates);
 
-       machine->i2s_instance = I2S_BT_INSTANCE;
+       machine->cap_i2s_instance = I2S_BT_INSTANCE;
        return da7219_clk_enable(substream);
 }
 
        snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
                                   &constraints_rates);
 
-       machine->i2s_instance = I2S_SP_INSTANCE;
+       machine->cap_i2s_instance = I2S_SP_INSTANCE;
        machine->capture_channel = CAP_CHANNEL0;
        return da7219_clk_enable(substream);
 }
        da7219_clk_disable();
 }
 
+static const struct snd_soc_ops cz_da7219_play_ops = {
+       .startup = cz_da7219_play_startup,
+       .shutdown = cz_da7219_shutdown,
+};
+
 static const struct snd_soc_ops cz_da7219_cap_ops = {
-       .startup = cz_da7219_startup,
+       .startup = cz_da7219_cap_startup,
        .shutdown = cz_da7219_shutdown,
 };
 
                                | SND_SOC_DAIFMT_CBM_CFM,
                .init = cz_da7219_init,
                .dpcm_playback = 1,
-               .ops = &cz_da7219_cap_ops,
+               .ops = &cz_da7219_play_ops,
        },
        {
                .name = "amd-da7219-cap",