.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
                .init = cz_da7219_init,
-               .dpcm_playback = 1,
+               .playback_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_da7219_play_ops,
                SND_SOC_DAILINK_REG(designware1, dlgs, platform),
                .stream_name = "Capture",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
-               .dpcm_capture = 1,
+               .capture_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_da7219_cap_ops,
                SND_SOC_DAILINK_REG(designware2, dlgs, platform),
                .stream_name = "HiFi Playback",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
-               .dpcm_playback = 1,
+               .playback_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_max_play_ops,
                SND_SOC_DAILINK_REG(designware3, mx, platform),
                .stream_name = "DMIC0 Capture",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
-               .dpcm_capture = 1,
+               .capture_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_dmic0_cap_ops,
                SND_SOC_DAILINK_REG(designware3, adau, platform),
                .stream_name = "DMIC1 Capture",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
-               .dpcm_capture = 1,
+               .capture_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_dmic1_cap_ops,
                SND_SOC_DAILINK_REG(designware2, adau, platform),
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
                .init = cz_rt5682_init,
-               .dpcm_playback = 1,
+               .playback_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_rt5682_play_ops,
                SND_SOC_DAILINK_REG(designware1, rt5682, platform),
                .stream_name = "Capture",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
-               .dpcm_capture = 1,
+               .capture_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_rt5682_cap_ops,
                SND_SOC_DAILINK_REG(designware2, rt5682, platform),
                .stream_name = "HiFi Playback",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
-               .dpcm_playback = 1,
+               .playback_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_rt5682_max_play_ops,
                SND_SOC_DAILINK_REG(designware3, mx, platform),
                .stream_name = "DMIC0 Capture",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
-               .dpcm_capture = 1,
+               .capture_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_rt5682_dmic0_cap_ops,
                SND_SOC_DAILINK_REG(designware3, adau, platform),
                .stream_name = "DMIC1 Capture",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
-               .dpcm_capture = 1,
+               .capture_only = 1,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
                .ops = &cz_rt5682_dmic1_cap_ops,
                SND_SOC_DAILINK_REG(designware2, adau, platform),
 
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
                .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC,
-               .dpcm_capture = 1,
-               .dpcm_playback = 1,
                .init = st_es8336_init,
                .ops = &st_es8336_ops,
                SND_SOC_DAILINK_REG(designware1, codec, platform),
 
                links[i].num_cpus = ARRAY_SIZE(sof_sp);
                links[i].platforms = sof_component;
                links[i].num_platforms = ARRAY_SIZE(sof_component);
-               links[i].dpcm_playback = 1;
-               links[i].dpcm_capture = 1;
                links[i].nonatomic = true;
                links[i].no_pcm = 1;
                if (!drv_data->hs_codec_id) {
                links[i].num_cpus = ARRAY_SIZE(sof_hs);
                links[i].platforms = sof_component;
                links[i].num_platforms = ARRAY_SIZE(sof_component);
-               links[i].dpcm_playback = 1;
-               links[i].dpcm_capture = 1;
                links[i].nonatomic = true;
                links[i].no_pcm = 1;
                if (!drv_data->hs_codec_id) {
                }
                links[i].platforms = sof_component;
                links[i].num_platforms = ARRAY_SIZE(sof_component);
-               links[i].dpcm_playback = 1;
+               links[i].playback_only = 1;
                links[i].nonatomic = true;
                links[i].no_pcm = 1;
                if (!drv_data->amp_codec_id) {
                links[i].num_cpus = ARRAY_SIZE(sof_hs_virtual);
                links[i].platforms = sof_component;
                links[i].num_platforms = ARRAY_SIZE(sof_component);
-               links[i].dpcm_playback = 1;
+               links[i].playback_only = 1;
                links[i].nonatomic = true;
                links[i].no_pcm = 1;
                if (!drv_data->amp_codec_id) {
                        links[i].init = acp_card_maxim_init;
                }
                if (drv_data->amp_codec_id == MAX98388) {
-                       links[i].dpcm_capture = 1;
+                       links[i].playback_only = 0;
                        links[i].codecs = max98388;
                        links[i].num_codecs = ARRAY_SIZE(max98388);
                        links[i].ops = &acp_max98388_ops;
                links[i].num_cpus = ARRAY_SIZE(sof_bt);
                links[i].platforms = sof_component;
                links[i].num_platforms = ARRAY_SIZE(sof_component);
-               links[i].dpcm_playback = 1;
-               links[i].dpcm_capture = 1;
                links[i].nonatomic = true;
                links[i].no_pcm = 1;
                if (!drv_data->bt_codec_id) {
                links[i].num_cpus = ARRAY_SIZE(sof_dmic);
                links[i].platforms = sof_component;
                links[i].num_platforms = ARRAY_SIZE(sof_component);
-               links[i].dpcm_capture = 1;
+               links[i].capture_only = 1;
                links[i].nonatomic = true;
                links[i].no_pcm = 1;
        }
                links[i].num_cpus = ARRAY_SIZE(i2s_sp);
                links[i].platforms = platform_component;
                links[i].num_platforms = ARRAY_SIZE(platform_component);
-               links[i].dpcm_playback = 1;
-               links[i].dpcm_capture = 1;
                if (!drv_data->hs_codec_id) {
                        /* Use dummy codec if codec id not specified */
                        links[i].codecs = &snd_soc_dummy_dlc;
                        break;
                }
 
-               links[i].dpcm_playback = 1;
-               links[i].dpcm_capture = 1;
                if (!drv_data->hs_codec_id) {
                        /* Use dummy codec if codec id not specified */
                        links[i].codecs = &snd_soc_dummy_dlc;
                links[i].num_cpus = ARRAY_SIZE(i2s_sp);
                links[i].platforms = platform_component;
                links[i].num_platforms = ARRAY_SIZE(platform_component);
-               links[i].dpcm_playback = 1;
+               links[i].playback_only = 1;
                if (!drv_data->amp_codec_id) {
                        /* Use dummy codec if codec id not specified */
                        links[i].codecs = &snd_soc_dummy_dlc;
                        break;
                }
 
-               links[i].dpcm_playback = 1;
+               links[i].playback_only = 1;
                if (!drv_data->amp_codec_id) {
                        /* Use dummy codec if codec id not specified */
                        links[i].codecs = &snd_soc_dummy_dlc;
                        break;
                }
                links[i].ops = &acp_card_dmic_ops;
-               links[i].dpcm_capture = 1;
+               links[i].capture_only = 1;
        }
 
        card->dai_link = links;
 
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBP_CFP,
                .init = acp3x_5682_init,
-               .dpcm_playback = 1,
-               .dpcm_capture = 1,
                .ops = &acp3x_5682_ops,
                SND_SOC_DAILINK_REG(acp3x_i2s, rt5682, platform),
        },
                .stream_name = "HiFi Playback",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBC_CFC,
-               .dpcm_playback = 1,
+               .playback_only = 1,
                .ops = &acp3x_max_play_ops,
                .cpus = acp3x_bt,
                .num_cpus = ARRAY_SIZE(acp3x_bt),
                .stream_name = "Capture DMIC0",
                .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
                                | SND_SOC_DAIFMT_CBC_CFC,
-               .dpcm_capture = 1,
+               .capture_only = 1,
                .ops = &acp3x_ec_cap0_ops,
                SND_SOC_DAILINK_REG(acp3x_bt, cros_ec, platform),
        },
 
                .dai_fmt = SND_SOC_DAIFMT_I2S |
                           SND_SOC_DAIFMT_NB_NF |
                           SND_SOC_DAIFMT_CBC_CFC,
-               .dpcm_playback = 1,
-               .dpcm_capture = 1,
                .ops = &acp5x_8821_ops,
                .init = acp5x_8821_init,
                SND_SOC_DAILINK_REG(acp5x_i2s, nau8821, platform),
                .dai_fmt = SND_SOC_DAIFMT_I2S |
                           SND_SOC_DAIFMT_NB_NF |
                           SND_SOC_DAIFMT_CBC_CFC,
-               .dpcm_playback = 1,
                .playback_only = 1,
                .ops = &acp5x_cs35l41_play_ops,
                SND_SOC_DAILINK_REG(acp5x_bt, cs35l41, platform),
                .dai_fmt = SND_SOC_DAIFMT_I2S |
                           SND_SOC_DAIFMT_NB_NF |
                           SND_SOC_DAIFMT_CBC_CFC,
-               .dpcm_playback = 1,
-               .dpcm_capture = 1,
                .ops = &acp5x_8821_ops,
                .init = acp5x_8821_init,
                SND_SOC_DAILINK_REG(acp5x_i2s, nau8821, platform),
                .dai_fmt = SND_SOC_DAIFMT_I2S |
                           SND_SOC_DAIFMT_NB_NF |
                           SND_SOC_DAIFMT_CBC_CFC,
-               .dpcm_playback = 1,
                .playback_only = 1,
                .ops = &acp5x_max98388_play_ops,
                SND_SOC_DAILINK_REG(acp5x_bt, max98388, platform),