Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ASoC: remove dpcm_xxx flags

Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

Now, we don't need to use dpcm_playback/capture flags for DPCM since v6.11,
and thus we can use playback/capture_only flags instead too for DPCM,
which is same as non-DPCM.

Let's remove dpcm_playback/capture flags, and use playback/capture_only flags
instead.

[Before] [After]
dpcm_playback = 1; /* no setting is needed */
dpcm_capture = 1;

dpcm_playback = 1; playback_only = 1;
dpcm_capture = 0;

dpcm_playback = 0; capture_only = 1;
dpcm_capture = 1;

And then, because no-one uses dpcm_xxx flags, we don't need to have the code
for both DPCM and non-DPCM. These can be handled by same code.

+317 -583
+3 -8
Documentation/sound/soc/dpcm.rst
··· 157 157 .codec_dai_name = "snd-soc-dummy-dai", 158 158 .dynamic = 1, 159 159 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 160 - .dpcm_playback = 1, 161 160 }, 162 161 .....< other FE and BE DAI links here > 163 162 }; 164 163 165 164 This FE DAI link is pretty similar to a regular DAI link except that we also 166 - set the DAI link to a DPCM FE with the ``dynamic = 1``. The supported FE stream 167 - directions should also be set with the ``dpcm_playback`` and ``dpcm_capture`` 168 - flags. There is also an option to specify the ordering of the trigger call for 165 + set the DAI link to a DPCM FE with the ``dynamic = 1``. 166 + There is also an option to specify the ordering of the trigger call for 169 167 each FE. This allows the ASoC core to trigger the DSP before or after the other 170 168 components (as some DSPs have strong requirements for the ordering DAI/DSP 171 169 start and stop sequences). ··· 187 189 .ignore_pmdown_time = 1, 188 190 .be_hw_params_fixup = hswult_ssp0_fixup, 189 191 .ops = &haswell_ops, 190 - .dpcm_playback = 1, 191 - .dpcm_capture = 1, 192 192 }, 193 193 .....< other BE DAI links here > 194 194 }; 195 195 196 196 This BE DAI link connects DAI0 to the codec (in this case RT5460 AIF1). It sets 197 - the ``no_pcm`` flag to mark it has a BE and sets flags for supported stream 198 - directions using ``dpcm_playback`` and ``dpcm_capture`` above. 197 + the ``no_pcm`` flag to mark it has a BE. 199 198 200 199 The BE has also flags set for ignoring suspend and PM down time. This allows 201 200 the BE to work in a hostless mode where the host CPU is not transferring data
-5
include/sound/soc.h
··· 820 820 /* This DAI link can route to other DAI links at runtime (Frontend)*/ 821 821 unsigned int dynamic:1; 822 822 823 - /* REMOVE ME */ 824 - /* DPCM capture and Playback support */ 825 - unsigned int dpcm_capture:1; 826 - unsigned int dpcm_playback:1; 827 - 828 823 /* DPCM used FE & BE merged format */ 829 824 unsigned int dpcm_merged_format:1; 830 825 /* DPCM used FE & BE merged channel */
+10 -10
sound/soc/amd/acp-da7219-max98357a.c
··· 542 542 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 543 543 | SND_SOC_DAIFMT_CBP_CFP, 544 544 .init = cz_da7219_init, 545 - .dpcm_playback = 1, 545 + .playback_only = 1, 546 546 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 547 547 .ops = &cz_da7219_play_ops, 548 548 SND_SOC_DAILINK_REG(designware1, dlgs, platform), ··· 552 552 .stream_name = "Capture", 553 553 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 554 554 | SND_SOC_DAIFMT_CBP_CFP, 555 - .dpcm_capture = 1, 555 + .capture_only = 1, 556 556 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 557 557 .ops = &cz_da7219_cap_ops, 558 558 SND_SOC_DAILINK_REG(designware2, dlgs, platform), ··· 562 562 .stream_name = "HiFi Playback", 563 563 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 564 564 | SND_SOC_DAIFMT_CBP_CFP, 565 - .dpcm_playback = 1, 565 + .playback_only = 1, 566 566 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 567 567 .ops = &cz_max_play_ops, 568 568 SND_SOC_DAILINK_REG(designware3, mx, platform), ··· 573 573 .stream_name = "DMIC0 Capture", 574 574 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 575 575 | SND_SOC_DAIFMT_CBP_CFP, 576 - .dpcm_capture = 1, 576 + .capture_only = 1, 577 577 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 578 578 .ops = &cz_dmic0_cap_ops, 579 579 SND_SOC_DAILINK_REG(designware3, adau, platform), ··· 584 584 .stream_name = "DMIC1 Capture", 585 585 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 586 586 | SND_SOC_DAIFMT_CBP_CFP, 587 - .dpcm_capture = 1, 587 + .capture_only = 1, 588 588 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 589 589 .ops = &cz_dmic1_cap_ops, 590 590 SND_SOC_DAILINK_REG(designware2, adau, platform), ··· 598 598 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 599 599 | SND_SOC_DAIFMT_CBP_CFP, 600 600 .init = cz_rt5682_init, 601 - .dpcm_playback = 1, 601 + .playback_only = 1, 602 602 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 603 603 .ops = &cz_rt5682_play_ops, 604 604 SND_SOC_DAILINK_REG(designware1, rt5682, platform), ··· 608 608 .stream_name = "Capture", 609 609 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 610 610 | SND_SOC_DAIFMT_CBP_CFP, 611 - .dpcm_capture = 1, 611 + .capture_only = 1, 612 612 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 613 613 .ops = &cz_rt5682_cap_ops, 614 614 SND_SOC_DAILINK_REG(designware2, rt5682, platform), ··· 618 618 .stream_name = "HiFi Playback", 619 619 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 620 620 | SND_SOC_DAIFMT_CBP_CFP, 621 - .dpcm_playback = 1, 621 + .playback_only = 1, 622 622 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 623 623 .ops = &cz_rt5682_max_play_ops, 624 624 SND_SOC_DAILINK_REG(designware3, mx, platform), ··· 629 629 .stream_name = "DMIC0 Capture", 630 630 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 631 631 | SND_SOC_DAIFMT_CBP_CFP, 632 - .dpcm_capture = 1, 632 + .capture_only = 1, 633 633 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 634 634 .ops = &cz_rt5682_dmic0_cap_ops, 635 635 SND_SOC_DAILINK_REG(designware3, adau, platform), ··· 640 640 .stream_name = "DMIC1 Capture", 641 641 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 642 642 | SND_SOC_DAIFMT_CBP_CFP, 643 - .dpcm_capture = 1, 643 + .capture_only = 1, 644 644 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 645 645 .ops = &cz_rt5682_dmic1_cap_ops, 646 646 SND_SOC_DAILINK_REG(designware2, adau, platform),
-2
sound/soc/amd/acp-es8336.c
··· 150 150 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 151 151 | SND_SOC_DAIFMT_CBP_CFP, 152 152 .trigger_stop = SND_SOC_TRIGGER_ORDER_LDC, 153 - .dpcm_capture = 1, 154 - .dpcm_playback = 1, 155 153 .init = st_es8336_init, 156 154 .ops = &st_es8336_ops, 157 155 SND_SOC_DAILINK_REG(designware1, codec, platform),
+7 -17
sound/soc/amd/acp/acp-mach-common.c
··· 1407 1407 links[i].num_cpus = ARRAY_SIZE(sof_sp); 1408 1408 links[i].platforms = sof_component; 1409 1409 links[i].num_platforms = ARRAY_SIZE(sof_component); 1410 - links[i].dpcm_playback = 1; 1411 - links[i].dpcm_capture = 1; 1412 1410 links[i].nonatomic = true; 1413 1411 links[i].no_pcm = 1; 1414 1412 if (!drv_data->hs_codec_id) { ··· 1442 1444 links[i].num_cpus = ARRAY_SIZE(sof_hs); 1443 1445 links[i].platforms = sof_component; 1444 1446 links[i].num_platforms = ARRAY_SIZE(sof_component); 1445 - links[i].dpcm_playback = 1; 1446 - links[i].dpcm_capture = 1; 1447 1447 links[i].nonatomic = true; 1448 1448 links[i].no_pcm = 1; 1449 1449 if (!drv_data->hs_codec_id) { ··· 1476 1480 } 1477 1481 links[i].platforms = sof_component; 1478 1482 links[i].num_platforms = ARRAY_SIZE(sof_component); 1479 - links[i].dpcm_playback = 1; 1483 + links[i].playback_only = 1; 1480 1484 links[i].nonatomic = true; 1481 1485 links[i].no_pcm = 1; 1482 1486 if (!drv_data->amp_codec_id) { ··· 1508 1512 links[i].num_cpus = ARRAY_SIZE(sof_hs_virtual); 1509 1513 links[i].platforms = sof_component; 1510 1514 links[i].num_platforms = ARRAY_SIZE(sof_component); 1511 - links[i].dpcm_playback = 1; 1515 + links[i].playback_only = 1; 1512 1516 links[i].nonatomic = true; 1513 1517 links[i].no_pcm = 1; 1514 1518 if (!drv_data->amp_codec_id) { ··· 1523 1527 links[i].init = acp_card_maxim_init; 1524 1528 } 1525 1529 if (drv_data->amp_codec_id == MAX98388) { 1526 - links[i].dpcm_capture = 1; 1530 + links[i].playback_only = 0; 1527 1531 links[i].codecs = max98388; 1528 1532 links[i].num_codecs = ARRAY_SIZE(max98388); 1529 1533 links[i].ops = &acp_max98388_ops; ··· 1549 1553 links[i].num_cpus = ARRAY_SIZE(sof_bt); 1550 1554 links[i].platforms = sof_component; 1551 1555 links[i].num_platforms = ARRAY_SIZE(sof_component); 1552 - links[i].dpcm_playback = 1; 1553 - links[i].dpcm_capture = 1; 1554 1556 links[i].nonatomic = true; 1555 1557 links[i].no_pcm = 1; 1556 1558 if (!drv_data->bt_codec_id) { ··· 1569 1575 links[i].num_cpus = ARRAY_SIZE(sof_dmic); 1570 1576 links[i].platforms = sof_component; 1571 1577 links[i].num_platforms = ARRAY_SIZE(sof_component); 1572 - links[i].dpcm_capture = 1; 1578 + links[i].capture_only = 1; 1573 1579 links[i].nonatomic = true; 1574 1580 links[i].no_pcm = 1; 1575 1581 } ··· 1608 1614 links[i].num_cpus = ARRAY_SIZE(i2s_sp); 1609 1615 links[i].platforms = platform_component; 1610 1616 links[i].num_platforms = ARRAY_SIZE(platform_component); 1611 - links[i].dpcm_playback = 1; 1612 - links[i].dpcm_capture = 1; 1613 1617 if (!drv_data->hs_codec_id) { 1614 1618 /* Use dummy codec if codec id not specified */ 1615 1619 links[i].codecs = &snd_soc_dummy_dlc; ··· 1655 1663 break; 1656 1664 } 1657 1665 1658 - links[i].dpcm_playback = 1; 1659 - links[i].dpcm_capture = 1; 1660 1666 if (!drv_data->hs_codec_id) { 1661 1667 /* Use dummy codec if codec id not specified */ 1662 1668 links[i].codecs = &snd_soc_dummy_dlc; ··· 1682 1692 links[i].num_cpus = ARRAY_SIZE(i2s_sp); 1683 1693 links[i].platforms = platform_component; 1684 1694 links[i].num_platforms = ARRAY_SIZE(platform_component); 1685 - links[i].dpcm_playback = 1; 1695 + links[i].playback_only = 1; 1686 1696 if (!drv_data->amp_codec_id) { 1687 1697 /* Use dummy codec if codec id not specified */ 1688 1698 links[i].codecs = &snd_soc_dummy_dlc; ··· 1725 1735 break; 1726 1736 } 1727 1737 1728 - links[i].dpcm_playback = 1; 1738 + links[i].playback_only = 1; 1729 1739 if (!drv_data->amp_codec_id) { 1730 1740 /* Use dummy codec if codec id not specified */ 1731 1741 links[i].codecs = &snd_soc_dummy_dlc; ··· 1782 1792 break; 1783 1793 } 1784 1794 links[i].ops = &acp_card_dmic_ops; 1785 - links[i].dpcm_capture = 1; 1795 + links[i].capture_only = 1; 1786 1796 } 1787 1797 1788 1798 card->dai_link = links;
+2 -4
sound/soc/amd/acp3x-rt5682-max9836.c
··· 317 317 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 318 318 | SND_SOC_DAIFMT_CBP_CFP, 319 319 .init = acp3x_5682_init, 320 - .dpcm_playback = 1, 321 - .dpcm_capture = 1, 322 320 .ops = &acp3x_5682_ops, 323 321 SND_SOC_DAILINK_REG(acp3x_i2s, rt5682, platform), 324 322 }, ··· 325 327 .stream_name = "HiFi Playback", 326 328 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 327 329 | SND_SOC_DAIFMT_CBC_CFC, 328 - .dpcm_playback = 1, 330 + .playback_only = 1, 329 331 .ops = &acp3x_max_play_ops, 330 332 .cpus = acp3x_bt, 331 333 .num_cpus = ARRAY_SIZE(acp3x_bt), ··· 337 339 .stream_name = "Capture DMIC0", 338 340 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 339 341 | SND_SOC_DAIFMT_CBC_CFC, 340 - .dpcm_capture = 1, 342 + .capture_only = 1, 341 343 .ops = &acp3x_ec_cap0_ops, 342 344 SND_SOC_DAILINK_REG(acp3x_bt, cros_ec, platform), 343 345 },
-6
sound/soc/amd/vangogh/acp5x-mach.c
··· 276 276 .dai_fmt = SND_SOC_DAIFMT_I2S | 277 277 SND_SOC_DAIFMT_NB_NF | 278 278 SND_SOC_DAIFMT_CBC_CFC, 279 - .dpcm_playback = 1, 280 - .dpcm_capture = 1, 281 279 .ops = &acp5x_8821_ops, 282 280 .init = acp5x_8821_init, 283 281 SND_SOC_DAILINK_REG(acp5x_i2s, nau8821, platform), ··· 286 288 .dai_fmt = SND_SOC_DAIFMT_I2S | 287 289 SND_SOC_DAIFMT_NB_NF | 288 290 SND_SOC_DAIFMT_CBC_CFC, 289 - .dpcm_playback = 1, 290 291 .playback_only = 1, 291 292 .ops = &acp5x_cs35l41_play_ops, 292 293 SND_SOC_DAILINK_REG(acp5x_bt, cs35l41, platform), ··· 372 375 .dai_fmt = SND_SOC_DAIFMT_I2S | 373 376 SND_SOC_DAIFMT_NB_NF | 374 377 SND_SOC_DAIFMT_CBC_CFC, 375 - .dpcm_playback = 1, 376 - .dpcm_capture = 1, 377 378 .ops = &acp5x_8821_ops, 378 379 .init = acp5x_8821_init, 379 380 SND_SOC_DAILINK_REG(acp5x_i2s, nau8821, platform), ··· 382 387 .dai_fmt = SND_SOC_DAIFMT_I2S | 383 388 SND_SOC_DAIFMT_NB_NF | 384 389 SND_SOC_DAIFMT_CBC_CFC, 385 - .dpcm_playback = 1, 386 390 .playback_only = 1, 387 391 .ops = &acp5x_max98388_play_ops, 388 392 SND_SOC_DAILINK_REG(acp5x_bt, max98388, platform),
+10 -14
sound/soc/fsl/fsl-asoc-card.c
··· 317 317 { 318 318 .name = "HiFi-ASRC-FE", 319 319 .stream_name = "HiFi-ASRC-FE", 320 - .dpcm_playback = 1, 321 - .dpcm_capture = 1, 322 320 .dynamic = 1, 323 321 }, 324 322 { ··· 324 326 .stream_name = "HiFi-ASRC-BE", 325 327 .be_hw_params_fixup = be_hw_params_fixup, 326 328 .ops = &fsl_asoc_card_ops, 327 - .dpcm_playback = 1, 328 - .dpcm_capture = 1, 329 329 .no_pcm = 1, 330 330 }, 331 331 }; ··· 500 504 } 501 505 502 506 if (priv->dai_link[0].playback_only) { 503 - priv->dai_link[1].dpcm_capture = false; 504 - priv->dai_link[2].dpcm_capture = false; 507 + priv->dai_link[1].playback_only = true; 508 + priv->dai_link[2].playback_only = true; 505 509 priv->card.dapm_routes = audio_map_tx; 506 510 priv->card.num_dapm_routes = ARRAY_SIZE(audio_map_tx); 507 511 } else if (priv->dai_link[0].capture_only) { 508 - priv->dai_link[1].dpcm_playback = false; 509 - priv->dai_link[2].dpcm_playback = false; 512 + priv->dai_link[1].capture_only = true; 513 + priv->dai_link[2].capture_only = true; 510 514 priv->card.dapm_routes = audio_map_rx; 511 515 priv->card.num_dapm_routes = ARRAY_SIZE(audio_map_rx); 512 516 } ··· 760 764 } else if (of_device_is_compatible(np, "fsl,imx-audio-tlv320aic31xx")) { 761 765 codec_dai_name[0] = "tlv320dac31xx-hifi"; 762 766 priv->dai_fmt |= SND_SOC_DAIFMT_CBS_CFS; 763 - priv->dai_link[1].dpcm_capture = 0; 764 - priv->dai_link[2].dpcm_capture = 0; 767 + priv->dai_link[1].playback_only = 1; 768 + priv->dai_link[2].playback_only = 1; 765 769 priv->cpu_priv.sysclk_dir[TX] = SND_SOC_CLOCK_OUT; 766 770 priv->cpu_priv.sysclk_dir[RX] = SND_SOC_CLOCK_OUT; 767 771 priv->card.dapm_routes = audio_map_tx; ··· 787 791 priv->dai_fmt = SND_SOC_DAIFMT_LEFT_J | 788 792 SND_SOC_DAIFMT_CBC_CFC | 789 793 SND_SOC_DAIFMT_NB_NF; 790 - priv->dai_link[1].dpcm_capture = 0; 791 - priv->dai_link[2].dpcm_capture = 0; 794 + priv->dai_link[1].playback_only = 1; 795 + priv->dai_link[2].playback_only = 1; 792 796 priv->card.dapm_routes = audio_map_tx; 793 797 priv->card.num_dapm_routes = ARRAY_SIZE(audio_map_tx); 794 798 } else if (of_device_is_compatible(np, "fsl,imx-audio-wm8524")) { 795 799 codec_dai_name[0] = "wm8524-hifi"; 796 800 priv->dai_fmt |= SND_SOC_DAIFMT_CBC_CFC; 797 - priv->dai_link[1].dpcm_capture = 0; 798 - priv->dai_link[2].dpcm_capture = 0; 801 + priv->dai_link[1].playback_only = 1; 802 + priv->dai_link[2].playback_only = 1; 799 803 priv->cpu_priv.slot_width = 32; 800 804 priv->card.dapm_routes = audio_map_tx; 801 805 priv->card.num_dapm_routes = ARRAY_SIZE(audio_map_tx);
+8 -10
sound/soc/fsl/imx-audmix.c
··· 264 264 priv->dai[i].cpus->dai_name = name[1][i]; 265 265 266 266 priv->dai[i].dynamic = 1; 267 - priv->dai[i].dpcm_playback = 1; 268 - if (i == num_dai - 1) { 269 - priv->dai[i].dpcm_capture = 1; 270 - priv->dai[i].dpcm_playback = 0; 271 - } 267 + if (i == num_dai - 1) 268 + priv->dai[i].capture_only = 1; 269 + else 270 + priv->dai[i].playback_only = 1; 272 271 priv->dai[i].ignore_pmdown_time = 1; 273 272 priv->dai[i].ops = &imx_audmix_fe_ops; 274 273 ··· 284 285 priv->dai[num_dai + i].cpus->of_node = audmix_np; 285 286 priv->dai[num_dai + i].cpus->dai_name = be_name; 286 287 priv->dai[num_dai + i].no_pcm = 1; 287 - priv->dai[num_dai + i].dpcm_playback = 1; 288 - if (i == num_dai - 1) { 289 - priv->dai[num_dai + i].dpcm_capture = 1; 290 - priv->dai[num_dai + i].dpcm_playback = 0; 291 - } 288 + if (i == num_dai - 1) 289 + priv->dai[num_dai + i].capture_only = 1; 290 + else 291 + priv->dai[num_dai + i].playback_only = 1; 292 292 priv->dai[num_dai + i].ignore_pmdown_time = 1; 293 293 priv->dai[num_dai + i].ops = &imx_audmix_be_ops; 294 294
+2 -2
sound/soc/fsl/imx-card.c
··· 860 860 } 861 861 for_each_card_prelinks(&data->card, i, link) { 862 862 if (link->dynamic == 1 && link_be) { 863 - link->dpcm_playback = link_be->dpcm_playback; 864 - link->dpcm_capture = link_be->dpcm_capture; 863 + link->playback_only = link_be->playback_only; 864 + link->capture_only = link_be->capture_only; 865 865 } 866 866 } 867 867 }
-2
sound/soc/intel/avs/boards/da7219.c
··· 203 203 dl->exit = avs_da7219_codec_exit; 204 204 dl->nonatomic = 1; 205 205 dl->no_pcm = 1; 206 - dl->dpcm_capture = 1; 207 - dl->dpcm_playback = 1; 208 206 209 207 *dai_link = dl; 210 208
+2 -2
sound/soc/intel/avs/boards/dmic.c
··· 22 22 { 23 23 .name = "DMIC", 24 24 .id = 0, 25 - .dpcm_capture = 1, 25 + .capture_only = 1, 26 26 .nonatomic = 1, 27 27 .no_pcm = 1, 28 28 SND_SOC_DAILINK_REG(dmic_pin, dmic_codec, platform), ··· 30 30 { 31 31 .name = "DMIC WoV", 32 32 .id = 1, 33 - .dpcm_capture = 1, 33 + .capture_only = 1, 34 34 .nonatomic = 1, 35 35 .no_pcm = 1, 36 36 .ignore_suspend = 1,
-2
sound/soc/intel/avs/boards/es8336.c
··· 233 233 dl->ops = &avs_es8336_ops; 234 234 dl->nonatomic = 1; 235 235 dl->no_pcm = 1; 236 - dl->dpcm_capture = 1; 237 - dl->dpcm_playback = 1; 238 236 239 237 *dai_link = dl; 240 238
-4
sound/soc/intel/avs/boards/hdaudio.c
··· 39 39 dl[i].id = i; 40 40 dl[i].nonatomic = 1; 41 41 dl[i].no_pcm = 1; 42 - dl[i].dpcm_playback = 1; 43 - dl[i].dpcm_capture = 1; 44 42 dl[i].platforms = platform; 45 43 dl[i].num_platforms = 1; 46 44 dl[i].ignore_pmdown_time = 1; ··· 158 160 .id = -1, 159 161 .nonatomic = 1, 160 162 .no_pcm = 1, 161 - .dpcm_playback = 1, 162 - .dpcm_capture = 1, 163 163 .cpus = &snd_soc_dummy_dlc, 164 164 .num_cpus = 1, 165 165 .init = avs_probing_link_init,
-2
sound/soc/intel/avs/boards/i2s_test.c
··· 46 46 dl->id = 0; 47 47 dl->nonatomic = 1; 48 48 dl->no_pcm = 1; 49 - dl->dpcm_capture = 1; 50 - dl->dpcm_playback = 1; 51 49 52 50 *dai_link = dl; 53 51
+1 -1
sound/soc/intel/avs/boards/max98357a.c
··· 82 82 dl->be_hw_params_fixup = avs_max98357a_be_fixup; 83 83 dl->nonatomic = 1; 84 84 dl->no_pcm = 1; 85 - dl->dpcm_playback = 1; 85 + dl->playback_only = 1; 86 86 87 87 *dai_link = dl; 88 88
-2
sound/soc/intel/avs/boards/max98373.c
··· 134 134 dl->be_hw_params_fixup = avs_max98373_be_fixup; 135 135 dl->nonatomic = 1; 136 136 dl->no_pcm = 1; 137 - dl->dpcm_capture = 1; 138 - dl->dpcm_playback = 1; 139 137 dl->ignore_pmdown_time = 1; 140 138 dl->ops = &avs_max98373_ops; 141 139
-2
sound/soc/intel/avs/boards/max98927.c
··· 131 131 dl->be_hw_params_fixup = avs_max98927_be_fixup; 132 132 dl->nonatomic = 1; 133 133 dl->no_pcm = 1; 134 - dl->dpcm_capture = 1; 135 - dl->dpcm_playback = 1; 136 134 dl->ignore_pmdown_time = 1; 137 135 dl->ops = &avs_max98927_ops; 138 136
-2
sound/soc/intel/avs/boards/nau8825.c
··· 210 210 dl->ops = &avs_nau8825_ops; 211 211 dl->nonatomic = 1; 212 212 dl->no_pcm = 1; 213 - dl->dpcm_capture = 1; 214 - dl->dpcm_playback = 1; 215 213 216 214 *dai_link = dl; 217 215
-2
sound/soc/intel/avs/boards/rt274.c
··· 184 184 dl->be_hw_params_fixup = avs_rt274_be_fixup; 185 185 dl->nonatomic = 1; 186 186 dl->no_pcm = 1; 187 - dl->dpcm_capture = 1; 188 - dl->dpcm_playback = 1; 189 187 190 188 *dai_link = dl; 191 189
-2
sound/soc/intel/avs/boards/rt286.c
··· 153 153 dl->ops = &avs_rt286_ops; 154 154 dl->nonatomic = 1; 155 155 dl->no_pcm = 1; 156 - dl->dpcm_capture = 1; 157 - dl->dpcm_playback = 1; 158 156 159 157 *dai_link = dl; 160 158
-2
sound/soc/intel/avs/boards/rt298.c
··· 173 173 dl->ops = &avs_rt298_ops; 174 174 dl->nonatomic = 1; 175 175 dl->no_pcm = 1; 176 - dl->dpcm_capture = 1; 177 - dl->dpcm_playback = 1; 178 176 179 177 *dai_link = dl; 180 178
+1 -1
sound/soc/intel/avs/boards/rt5514.c
··· 121 121 dl->be_hw_params_fixup = avs_rt5514_be_fixup; 122 122 dl->nonatomic = 1; 123 123 dl->no_pcm = 1; 124 - dl->dpcm_capture = 1; 124 + dl->capture_only = 1; 125 125 dl->ops = &avs_rt5514_ops; 126 126 127 127 *dai_link = dl;
-2
sound/soc/intel/avs/boards/rt5663.c
··· 171 171 dl->be_hw_params_fixup = avs_rt5663_be_fixup; 172 172 dl->nonatomic = 1; 173 173 dl->no_pcm = 1; 174 - dl->dpcm_capture = 1; 175 - dl->dpcm_playback = 1; 176 174 dl->ops = &avs_rt5663_ops; 177 175 178 176 *dai_link = dl;
-2
sound/soc/intel/avs/boards/rt5682.c
··· 242 242 dl->ops = &avs_rt5682_ops; 243 243 dl->nonatomic = 1; 244 244 dl->no_pcm = 1; 245 - dl->dpcm_capture = 1; 246 - dl->dpcm_playback = 1; 247 245 248 246 *dai_link = dl; 249 247
-2
sound/soc/intel/avs/boards/ssm4567.c
··· 121 121 dl->be_hw_params_fixup = avs_ssm4567_be_fixup; 122 122 dl->nonatomic = 1; 123 123 dl->no_pcm = 1; 124 - dl->dpcm_capture = 1; 125 - dl->dpcm_playback = 1; 126 124 dl->ignore_pmdown_time = 1; 127 125 128 126 *dai_link = dl;
-4
sound/soc/intel/boards/bdw-rt5650.c
··· 239 239 SND_SOC_DPCM_TRIGGER_POST, 240 240 SND_SOC_DPCM_TRIGGER_POST 241 241 }, 242 - .dpcm_playback = 1, 243 - .dpcm_capture = 1, 244 242 SND_SOC_DAILINK_REG(fe, dummy, platform), 245 243 }, 246 244 ··· 254 256 .ignore_pmdown_time = 1, 255 257 .be_hw_params_fixup = broadwell_ssp0_fixup, 256 258 .ops = &bdw_rt5650_ops, 257 - .dpcm_playback = 1, 258 - .dpcm_capture = 1, 259 259 .init = bdw_rt5650_init, 260 260 SND_SOC_DAILINK_REG(ssp0_port, be, platform), 261 261 },
-4
sound/soc/intel/boards/bdw-rt5677.c
··· 329 329 SND_SOC_DPCM_TRIGGER_POST, 330 330 SND_SOC_DPCM_TRIGGER_POST 331 331 }, 332 - .dpcm_capture = 1, 333 - .dpcm_playback = 1, 334 332 .ops = &bdw_rt5677_fe_ops, 335 333 SND_SOC_DAILINK_REG(fe, dummy, platform), 336 334 }, ··· 354 356 .ignore_pmdown_time = 1, 355 357 .be_hw_params_fixup = broadwell_ssp0_fixup, 356 358 .ops = &bdw_rt5677_ops, 357 - .dpcm_playback = 1, 358 - .dpcm_capture = 1, 359 359 .init = bdw_rt5677_init, 360 360 .exit = bdw_rt5677_exit, 361 361 SND_SOC_DAILINK_REG(ssp0_port, be, platform),
+3 -7
sound/soc/intel/boards/bdw_rt286.c
··· 133 133 .nonatomic = 1, 134 134 .dynamic = 1, 135 135 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 136 - .dpcm_playback = 1, 137 - .dpcm_capture = 1, 138 136 SND_SOC_DAILINK_REG(system, dummy, platform), 139 137 }, 140 138 { ··· 141 143 .nonatomic = 1, 142 144 .dynamic = 1, 143 145 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 144 - .dpcm_playback = 1, 146 + .playback_only = 1, 145 147 SND_SOC_DAILINK_REG(offload0, dummy, platform), 146 148 }, 147 149 { ··· 150 152 .nonatomic = 1, 151 153 .dynamic = 1, 152 154 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 153 - .dpcm_playback = 1, 155 + .playback_only = 1, 154 156 SND_SOC_DAILINK_REG(offload1, dummy, platform), 155 157 }, 156 158 { ··· 159 161 .nonatomic = 1, 160 162 .dynamic = 1, 161 163 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 162 - .dpcm_capture = 1, 164 + .capture_only = 1, 163 165 SND_SOC_DAILINK_REG(loopback, dummy, platform), 164 166 }, 165 167 /* Back End DAI links */ ··· 175 177 .ignore_pmdown_time = 1, 176 178 .be_hw_params_fixup = codec_link_hw_params_fixup, 177 179 .ops = &codec_link_ops, 178 - .dpcm_playback = 1, 179 - .dpcm_capture = 1, 180 180 SND_SOC_DAILINK_REG(ssp0_port, codec, platform), 181 181 }, 182 182 };
+1 -5
sound/soc/intel/boards/bytcht_cx2072x.c
··· 175 175 .stream_name = "Audio", 176 176 .nonatomic = true, 177 177 .dynamic = 1, 178 - .dpcm_playback = 1, 179 - .dpcm_capture = 1, 180 178 .ops = &byt_cht_cx2072x_aif1_ops, 181 179 SND_SOC_DAILINK_REG(media, dummy, platform), 182 180 }, ··· 183 185 .stream_name = "Deep-Buffer Audio", 184 186 .nonatomic = true, 185 187 .dynamic = 1, 186 - .dpcm_playback = 1, 188 + .playback_only = 1, 187 189 .ops = &byt_cht_cx2072x_aif1_ops, 188 190 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 189 191 }, ··· 196 198 | SND_SOC_DAIFMT_CBC_CFC, 197 199 .init = byt_cht_cx2072x_init, 198 200 .be_hw_params_fixup = byt_cht_cx2072x_fixup, 199 - .dpcm_playback = 1, 200 - .dpcm_capture = 1, 201 201 SND_SOC_DAILINK_REG(ssp2, cx2072x, platform), 202 202 }, 203 203 };
+1 -5
sound/soc/intel/boards/bytcht_da7213.c
··· 174 174 .stream_name = "Audio", 175 175 .nonatomic = true, 176 176 .dynamic = 1, 177 - .dpcm_playback = 1, 178 - .dpcm_capture = 1, 179 177 .ops = &aif1_ops, 180 178 SND_SOC_DAILINK_REG(media, dummy, platform), 181 179 }, ··· 182 184 .stream_name = "Deep-Buffer Audio", 183 185 .nonatomic = true, 184 186 .dynamic = 1, 185 - .dpcm_playback = 1, 187 + .playback_only = 1, 186 188 .ops = &aif1_ops, 187 189 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 188 190 }, ··· 195 197 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 196 198 | SND_SOC_DAIFMT_CBC_CFC, 197 199 .be_hw_params_fixup = codec_fixup, 198 - .dpcm_playback = 1, 199 - .dpcm_capture = 1, 200 200 .ops = &ssp2_ops, 201 201 SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform), 202 202 },
+1 -5
sound/soc/intel/boards/bytcht_es8316.c
··· 315 315 .stream_name = "Audio", 316 316 .nonatomic = true, 317 317 .dynamic = 1, 318 - .dpcm_playback = 1, 319 - .dpcm_capture = 1, 320 318 .ops = &byt_cht_es8316_aif1_ops, 321 319 SND_SOC_DAILINK_REG(media, dummy, platform), 322 320 }, ··· 324 326 .stream_name = "Deep-Buffer Audio", 325 327 .nonatomic = true, 326 328 .dynamic = 1, 327 - .dpcm_playback = 1, 329 + .playback_only = 1, 328 330 .ops = &byt_cht_es8316_aif1_ops, 329 331 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 330 332 }, ··· 337 339 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 338 340 | SND_SOC_DAIFMT_CBC_CFC, 339 341 .be_hw_params_fixup = byt_cht_es8316_codec_fixup, 340 - .dpcm_playback = 1, 341 - .dpcm_capture = 1, 342 342 .init = byt_cht_es8316_init, 343 343 SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform), 344 344 },
+1 -5
sound/soc/intel/boards/bytcht_nocodec.c
··· 119 119 .ignore_suspend = 1, 120 120 .nonatomic = true, 121 121 .dynamic = 1, 122 - .dpcm_playback = 1, 123 - .dpcm_capture = 1, 124 122 .ops = &aif1_ops, 125 123 SND_SOC_DAILINK_REG(media, dummy, platform), 126 124 }, ··· 128 130 .ignore_suspend = 1, 129 131 .nonatomic = true, 130 132 .dynamic = 1, 131 - .dpcm_playback = 1, 133 + .playback_only = 1, 132 134 .ops = &aif1_ops, 133 135 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 134 136 }, ··· 142 144 | SND_SOC_DAIFMT_CBC_CFC, 143 145 .be_hw_params_fixup = codec_fixup, 144 146 .ignore_suspend = 1, 145 - .dpcm_playback = 1, 146 - .dpcm_capture = 1, 147 147 SND_SOC_DAILINK_REG(ssp2_port, dummy, platform), 148 148 }, 149 149 };
+1 -5
sound/soc/intel/boards/bytcr_rt5640.c
··· 1546 1546 .stream_name = "Baytrail Audio", 1547 1547 .nonatomic = true, 1548 1548 .dynamic = 1, 1549 - .dpcm_playback = 1, 1550 - .dpcm_capture = 1, 1551 1549 .ops = &byt_rt5640_aif1_ops, 1552 1550 SND_SOC_DAILINK_REG(media, dummy, platform), 1553 1551 }, ··· 1554 1556 .stream_name = "Deep-Buffer Audio", 1555 1557 .nonatomic = true, 1556 1558 .dynamic = 1, 1557 - .dpcm_playback = 1, 1559 + .playback_only = 1, 1558 1560 .ops = &byt_rt5640_aif1_ops, 1559 1561 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 1560 1562 }, ··· 1566 1568 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 1567 1569 | SND_SOC_DAIFMT_CBC_CFC, 1568 1570 .be_hw_params_fixup = byt_rt5640_codec_fixup, 1569 - .dpcm_playback = 1, 1570 - .dpcm_capture = 1, 1571 1571 .init = byt_rt5640_init, 1572 1572 .exit = byt_rt5640_exit, 1573 1573 .ops = &byt_rt5640_be_ssp2_ops,
+1 -5
sound/soc/intel/boards/bytcr_rt5651.c
··· 770 770 .stream_name = "Audio", 771 771 .nonatomic = true, 772 772 .dynamic = 1, 773 - .dpcm_playback = 1, 774 - .dpcm_capture = 1, 775 773 .ops = &byt_rt5651_aif1_ops, 776 774 SND_SOC_DAILINK_REG(media, dummy, platform), 777 775 }, ··· 778 780 .stream_name = "Deep-Buffer Audio", 779 781 .nonatomic = true, 780 782 .dynamic = 1, 781 - .dpcm_playback = 1, 783 + .playback_only = 1, 782 784 .ops = &byt_rt5651_aif1_ops, 783 785 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 784 786 }, ··· 791 793 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 792 794 | SND_SOC_DAIFMT_CBC_CFC, 793 795 .be_hw_params_fixup = byt_rt5651_codec_fixup, 794 - .dpcm_playback = 1, 795 - .dpcm_capture = 1, 796 796 .init = byt_rt5651_init, 797 797 .ops = &byt_rt5651_be_ssp2_ops, 798 798 SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform),
+1 -5
sound/soc/intel/boards/bytcr_wm5102.c
··· 462 462 .stream_name = "Baytrail Audio", 463 463 .nonatomic = true, 464 464 .dynamic = 1, 465 - .dpcm_playback = 1, 466 - .dpcm_capture = 1, 467 465 .ops = &byt_wm5102_aif1_ops, 468 466 SND_SOC_DAILINK_REG(media, dummy, platform), 469 467 ··· 471 473 .stream_name = "Deep-Buffer Audio", 472 474 .nonatomic = true, 473 475 .dynamic = 1, 474 - .dpcm_playback = 1, 476 + .playback_only = 1, 475 477 .ops = &byt_wm5102_aif1_ops, 476 478 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 477 479 }, ··· 488 490 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 489 491 | SND_SOC_DAIFMT_CBC_CFC, 490 492 .be_hw_params_fixup = byt_wm5102_codec_fixup, 491 - .dpcm_playback = 1, 492 - .dpcm_capture = 1, 493 493 .init = byt_wm5102_init, 494 494 SND_SOC_DAILINK_REG(ssp0_port, ssp0_codec, platform), 495 495 },
+1 -5
sound/soc/intel/boards/cht_bsw_max98090_ti.c
··· 351 351 .stream_name = "Audio", 352 352 .nonatomic = true, 353 353 .dynamic = 1, 354 - .dpcm_playback = 1, 355 - .dpcm_capture = 1, 356 354 .ops = &cht_aif1_ops, 357 355 SND_SOC_DAILINK_REG(media, dummy, platform), 358 356 }, ··· 359 361 .stream_name = "Deep-Buffer Audio", 360 362 .nonatomic = true, 361 363 .dynamic = 1, 362 - .dpcm_playback = 1, 364 + .playback_only = 1, 363 365 .ops = &cht_aif1_ops, 364 366 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 365 367 }, ··· 372 374 | SND_SOC_DAIFMT_CBC_CFC, 373 375 .init = cht_codec_init, 374 376 .be_hw_params_fixup = cht_codec_fixup, 375 - .dpcm_playback = 1, 376 - .dpcm_capture = 1, 377 377 .ops = &cht_be_ssp2_ops, 378 378 SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform), 379 379 },
+1 -5
sound/soc/intel/boards/cht_bsw_nau8824.c
··· 193 193 .stream_name = "Audio", 194 194 .nonatomic = true, 195 195 .dynamic = 1, 196 - .dpcm_playback = 1, 197 - .dpcm_capture = 1, 198 196 .ops = &cht_aif1_ops, 199 197 SND_SOC_DAILINK_REG(media, dummy, platform), 200 198 }, ··· 201 203 .stream_name = "Deep-Buffer Audio", 202 204 .nonatomic = true, 203 205 .dynamic = 1, 204 - .dpcm_playback = 1, 206 + .playback_only = 1, 205 207 .ops = &cht_aif1_ops, 206 208 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 207 209 }, ··· 215 217 | SND_SOC_DAIFMT_CBC_CFC, 216 218 .init = cht_codec_init, 217 219 .be_hw_params_fixup = cht_codec_fixup, 218 - .dpcm_playback = 1, 219 - .dpcm_capture = 1, 220 220 .ops = &cht_be_ssp2_ops, 221 221 SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform), 222 222 },
+1 -5
sound/soc/intel/boards/cht_bsw_rt5645.c
··· 448 448 .stream_name = "Audio", 449 449 .nonatomic = true, 450 450 .dynamic = 1, 451 - .dpcm_playback = 1, 452 - .dpcm_capture = 1, 453 451 .ops = &cht_aif1_ops, 454 452 SND_SOC_DAILINK_REG(media, dummy, platform), 455 453 }, ··· 456 458 .stream_name = "Deep-Buffer Audio", 457 459 .nonatomic = true, 458 460 .dynamic = 1, 459 - .dpcm_playback = 1, 461 + .playback_only = 1, 460 462 .ops = &cht_aif1_ops, 461 463 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 462 464 }, ··· 468 470 .no_pcm = 1, 469 471 .init = cht_codec_init, 470 472 .be_hw_params_fixup = cht_codec_fixup, 471 - .dpcm_playback = 1, 472 - .dpcm_capture = 1, 473 473 .ops = &cht_be_ssp2_ops, 474 474 SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform), 475 475 },
+1 -5
sound/soc/intel/boards/cht_bsw_rt5672.c
··· 358 358 .stream_name = "Audio", 359 359 .nonatomic = true, 360 360 .dynamic = 1, 361 - .dpcm_playback = 1, 362 - .dpcm_capture = 1, 363 361 .ops = &cht_aif1_ops, 364 362 SND_SOC_DAILINK_REG(media, dummy, platform), 365 363 }, ··· 366 368 .stream_name = "Deep-Buffer Audio", 367 369 .nonatomic = true, 368 370 .dynamic = 1, 369 - .dpcm_playback = 1, 371 + .playback_only = 1, 370 372 .ops = &cht_aif1_ops, 371 373 SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), 372 374 }, ··· 379 381 .no_pcm = 1, 380 382 .init = cht_codec_init, 381 383 .be_hw_params_fixup = cht_codec_fixup, 382 - .dpcm_playback = 1, 383 - .dpcm_capture = 1, 384 384 .ops = &cht_be_ssp2_ops, 385 385 SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform), 386 386 },
+6 -8
sound/soc/intel/boards/ehl_rt5660.c
··· 178 178 .name = "SSP0-Codec", 179 179 .id = 0, 180 180 .no_pcm = 1, 181 - .dpcm_playback = 1, 182 - .dpcm_capture = 1, 183 181 .ops = &rt5660_ops, 184 182 SND_SOC_DAILINK_REG(ssp0_pin, rt5660_codec, platform), 185 183 }, ··· 185 187 .name = "dmic48k", 186 188 .id = 1, 187 189 .ignore_suspend = 1, 188 - .dpcm_capture = 1, 190 + .capture_only = 1, 189 191 .no_pcm = 1, 190 192 SND_SOC_DAILINK_REG(dmic_pin, dmic_codec, platform), 191 193 }, ··· 193 195 .name = "dmic16k", 194 196 .id = 2, 195 197 .ignore_suspend = 1, 196 - .dpcm_capture = 1, 198 + .capture_only = 1, 197 199 .no_pcm = 1, 198 200 SND_SOC_DAILINK_REG(dmic16k, dmic_codec, platform), 199 201 }, ··· 201 203 .name = "iDisp1", 202 204 .id = 5, 203 205 .init = hdmi_init, 204 - .dpcm_playback = 1, 206 + .playback_only = 1, 205 207 .no_pcm = 1, 206 208 SND_SOC_DAILINK_REG(idisp1_pin, idisp1_codec, platform), 207 209 }, ··· 209 211 .name = "iDisp2", 210 212 .id = 6, 211 213 .init = hdmi_init, 212 - .dpcm_playback = 1, 214 + .playback_only = 1, 213 215 .no_pcm = 1, 214 216 SND_SOC_DAILINK_REG(idisp2_pin, idisp2_codec, platform), 215 217 }, ··· 217 219 .name = "iDisp3", 218 220 .id = 7, 219 221 .init = hdmi_init, 220 - .dpcm_playback = 1, 222 + .playback_only = 1, 221 223 .no_pcm = 1, 222 224 SND_SOC_DAILINK_REG(idisp3_pin, idisp3_codec, platform), 223 225 }, ··· 225 227 .name = "iDisp4", 226 228 .id = 8, 227 229 .init = hdmi_init, 228 - .dpcm_playback = 1, 230 + .playback_only = 1, 229 231 .no_pcm = 1, 230 232 SND_SOC_DAILINK_REG(idisp4_pin, idisp4_codec, platform), 231 233 },
+3 -7
sound/soc/intel/boards/hsw_rt5640.c
··· 85 85 .nonatomic = 1, 86 86 .dynamic = 1, 87 87 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 88 - .dpcm_playback = 1, 89 - .dpcm_capture = 1, 90 88 SND_SOC_DAILINK_REG(system, dummy, platform), 91 89 }, 92 90 { ··· 93 95 .nonatomic = 1, 94 96 .dynamic = 1, 95 97 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 96 - .dpcm_playback = 1, 98 + .playback_only = 1, 97 99 SND_SOC_DAILINK_REG(offload0, dummy, platform), 98 100 }, 99 101 { ··· 102 104 .nonatomic = 1, 103 105 .dynamic = 1, 104 106 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 105 - .dpcm_playback = 1, 107 + .playback_only = 1, 106 108 SND_SOC_DAILINK_REG(offload1, dummy, platform), 107 109 }, 108 110 { ··· 111 113 .nonatomic = 1, 112 114 .dynamic = 1, 113 115 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 114 - .dpcm_capture = 1, 116 + .capture_only = 1, 115 117 SND_SOC_DAILINK_REG(loopback, dummy, platform), 116 118 }, 117 119 /* Back End DAI links */ ··· 125 127 .ignore_pmdown_time = 1, 126 128 .be_hw_params_fixup = codec_link_hw_params_fixup, 127 129 .ops = &codec_link_ops, 128 - .dpcm_playback = 1, 129 - .dpcm_capture = 1, 130 130 SND_SOC_DAILINK_REG(ssp0_port, codec, platform), 131 131 }, 132 132 };
+4 -11
sound/soc/intel/boards/sof_board_helpers.c
··· 217 217 218 218 link->id = be_id; 219 219 link->no_pcm = 1; 220 - link->dpcm_capture = 1; 221 - link->dpcm_playback = 1; 222 220 223 221 return 0; 224 222 } ··· 266 268 link->init = dmic_init; 267 269 link->ignore_suspend = 1; 268 270 link->no_pcm = 1; 269 - link->dpcm_capture = 1; 271 + link->capture_only = 1; 270 272 271 273 return 0; 272 274 } ··· 324 326 link->id = be_id; 325 327 link->init = (hdmi_id == 1) ? hdmi_init : NULL; 326 328 link->no_pcm = 1; 327 - link->dpcm_playback = 1; 329 + link->playback_only = 1; 328 330 329 331 return 0; 330 332 } ··· 359 361 /* codecs - caller to handle */ 360 362 361 363 /* platforms */ 364 + /* feedback stream or firmware-generated echo reference */ 362 365 link->platforms = platform_component; 363 366 link->num_platforms = ARRAY_SIZE(platform_component); 364 367 365 368 link->id = be_id; 366 369 link->no_pcm = 1; 367 - link->dpcm_capture = 1; /* feedback stream or firmware-generated echo reference */ 368 - link->dpcm_playback = 1; 369 370 370 371 return 0; 371 372 } ··· 404 407 405 408 link->id = be_id; 406 409 link->no_pcm = 1; 407 - link->dpcm_capture = 1; 408 - link->dpcm_playback = 1; 409 410 410 411 return 0; 411 412 } ··· 443 448 444 449 link->id = be_id; 445 450 link->no_pcm = 1; 446 - link->dpcm_capture = 1; 451 + link->capture_only = 1; 447 452 448 453 return 0; 449 454 } ··· 491 496 if (be_type == SOF_HDA_ANALOG) 492 497 link->init = hda_init; 493 498 link->no_pcm = 1; 494 - link->dpcm_capture = 1; 495 - link->dpcm_playback = 1; 496 499 497 500 return 0; 498 501 }
+3 -5
sound/soc/intel/boards/sof_es8336.c
··· 455 455 links[id].exit = sof_es8316_exit; 456 456 links[id].ops = &sof_es8336_ops; 457 457 links[id].nonatomic = true; 458 - links[id].dpcm_playback = 1; 459 - links[id].dpcm_capture = 1; 460 458 links[id].no_pcm = 1; 461 459 links[id].cpus = &cpus[id]; 462 460 links[id].num_cpus = 1; ··· 494 496 links[id].platforms = platform_component; 495 497 links[id].num_platforms = ARRAY_SIZE(platform_component); 496 498 links[id].ignore_suspend = 1; 497 - links[id].dpcm_capture = 1; 499 + links[id].capture_only = 1; 498 500 links[id].no_pcm = 1; 499 501 500 502 id++; ··· 537 539 links[id].platforms = platform_component; 538 540 links[id].num_platforms = ARRAY_SIZE(platform_component); 539 541 links[id].init = sof_hdmi_init; 540 - links[id].dpcm_playback = 1; 542 + links[id].playback_only = 1; 541 543 links[id].no_pcm = 1; 542 544 543 545 id++; ··· 567 569 links[id].num_codecs = 1; 568 570 links[id].platforms = platform_component; 569 571 links[id].num_platforms = ARRAY_SIZE(platform_component); 570 - links[id].dpcm_capture = 1; 572 + links[id].capture_only = 1; 571 573 links[id].no_pcm = 1; 572 574 links[id].num_cpus = 1; 573 575 id++;
+4 -5
sound/soc/intel/boards/sof_pcm512x.c
··· 246 246 links[id].num_platforms = ARRAY_SIZE(platform_component); 247 247 links[id].init = sof_pcm512x_codec_init; 248 248 links[id].ops = &sof_pcm512x_ops; 249 - links[id].dpcm_playback = 1; 250 249 /* 251 250 * capture only supported with specific versions of the Hifiberry DAC+ 252 251 */ 253 - if (sof_pcm512x_quirk & SOF_PCM512X_ENABLE_SSP_CAPTURE) 254 - links[id].dpcm_capture = 1; 252 + if (!(sof_pcm512x_quirk & SOF_PCM512X_ENABLE_SSP_CAPTURE)) 253 + links[id].playback_only = 1; 255 254 links[id].no_pcm = 1; 256 255 links[id].cpus = &cpus[id]; 257 256 links[id].num_cpus = 1; ··· 293 294 links[id].platforms = platform_component; 294 295 links[id].num_platforms = ARRAY_SIZE(platform_component); 295 296 links[id].ignore_suspend = 1; 296 - links[id].dpcm_capture = 1; 297 + links[id].capture_only = 1; 297 298 links[id].no_pcm = 1; 298 299 id++; 299 300 } ··· 340 341 links[id].platforms = platform_component; 341 342 links[id].num_platforms = ARRAY_SIZE(platform_component); 342 343 links[id].init = sof_hdmi_init; 343 - links[id].dpcm_playback = 1; 344 + links[id].playback_only = 1; 344 345 links[id].no_pcm = 1; 345 346 id++; 346 347 }
-2
sound/soc/intel/boards/sof_wm8804.c
··· 167 167 .name = "SSP5-Codec", 168 168 .id = 0, 169 169 .no_pcm = 1, 170 - .dpcm_playback = 1, 171 - .dpcm_capture = 1, 172 170 .ops = &sof_wm8804_ops, 173 171 SND_SOC_DAILINK_REG(ssp5_pin, ssp5_codec, platform), 174 172 },
+5 -15
sound/soc/mediatek/mt2701/mt2701-cs42448.c
··· 221 221 SND_SOC_DPCM_TRIGGER_POST}, 222 222 .ops = &mt2701_cs42448_48k_fe_ops, 223 223 .dynamic = 1, 224 - .dpcm_playback = 1, 224 + .playback_only = 1, 225 225 SND_SOC_DAILINK_REG(fe_multi_ch_out), 226 226 }, 227 227 [DAI_LINK_FE_PCM0_IN] = { ··· 231 231 SND_SOC_DPCM_TRIGGER_POST}, 232 232 .ops = &mt2701_cs42448_48k_fe_ops, 233 233 .dynamic = 1, 234 - .dpcm_capture = 1, 234 + .capture_only = 1, 235 235 SND_SOC_DAILINK_REG(fe_pcm0_in), 236 236 }, 237 237 [DAI_LINK_FE_PCM1_IN] = { ··· 241 241 SND_SOC_DPCM_TRIGGER_POST}, 242 242 .ops = &mt2701_cs42448_48k_fe_ops, 243 243 .dynamic = 1, 244 - .dpcm_capture = 1, 244 + .capture_only = 1, 245 245 SND_SOC_DAILINK_REG(fe_pcm1_in), 246 246 }, 247 247 [DAI_LINK_FE_BT_OUT] = { ··· 250 250 .trigger = {SND_SOC_DPCM_TRIGGER_POST, 251 251 SND_SOC_DPCM_TRIGGER_POST}, 252 252 .dynamic = 1, 253 - .dpcm_playback = 1, 253 + .playback_only = 1, 254 254 SND_SOC_DAILINK_REG(fe_bt_out), 255 255 }, 256 256 [DAI_LINK_FE_BT_IN] = { ··· 259 259 .trigger = {SND_SOC_DPCM_TRIGGER_POST, 260 260 SND_SOC_DPCM_TRIGGER_POST}, 261 261 .dynamic = 1, 262 - .dpcm_capture = 1, 262 + .capture_only = 1, 263 263 SND_SOC_DAILINK_REG(fe_bt_in), 264 264 }, 265 265 /* BE */ ··· 269 269 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS 270 270 | SND_SOC_DAIFMT_GATED, 271 271 .ops = &mt2701_cs42448_be_ops, 272 - .dpcm_playback = 1, 273 - .dpcm_capture = 1, 274 272 SND_SOC_DAILINK_REG(be_i2s0), 275 273 }, 276 274 [DAI_LINK_BE_I2S1] = { ··· 277 279 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS 278 280 | SND_SOC_DAIFMT_GATED, 279 281 .ops = &mt2701_cs42448_be_ops, 280 - .dpcm_playback = 1, 281 - .dpcm_capture = 1, 282 282 SND_SOC_DAILINK_REG(be_i2s1), 283 283 }, 284 284 [DAI_LINK_BE_I2S2] = { ··· 285 289 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS 286 290 | SND_SOC_DAIFMT_GATED, 287 291 .ops = &mt2701_cs42448_be_ops, 288 - .dpcm_playback = 1, 289 - .dpcm_capture = 1, 290 292 SND_SOC_DAILINK_REG(be_i2s2), 291 293 }, 292 294 [DAI_LINK_BE_I2S3] = { ··· 293 299 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS 294 300 | SND_SOC_DAIFMT_GATED, 295 301 .ops = &mt2701_cs42448_be_ops, 296 - .dpcm_playback = 1, 297 - .dpcm_capture = 1, 298 302 SND_SOC_DAILINK_REG(be_i2s3), 299 303 }, 300 304 [DAI_LINK_BE_MRG_BT] = { 301 305 .name = "mt2701-cs42448-MRG-BT", 302 306 .no_pcm = 1, 303 - .dpcm_playback = 1, 304 - .dpcm_capture = 1, 305 307 SND_SOC_DAILINK_REG(be_mrg_bt), 306 308 }, 307 309 };
+2 -4
sound/soc/mediatek/mt2701/mt2701-wm8960.c
··· 67 67 .trigger = {SND_SOC_DPCM_TRIGGER_POST, 68 68 SND_SOC_DPCM_TRIGGER_POST}, 69 69 .dynamic = 1, 70 - .dpcm_playback = 1, 70 + .playback_only = 1, 71 71 SND_SOC_DAILINK_REG(playback), 72 72 }, 73 73 { ··· 76 76 .trigger = {SND_SOC_DPCM_TRIGGER_POST, 77 77 SND_SOC_DPCM_TRIGGER_POST}, 78 78 .dynamic = 1, 79 - .dpcm_capture = 1, 79 + .capture_only = 1, 80 80 SND_SOC_DAILINK_REG(capture), 81 81 }, 82 82 /* BE */ ··· 86 86 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS 87 87 | SND_SOC_DAIFMT_GATED, 88 88 .ops = &mt2701_wm8960_be_ops, 89 - .dpcm_playback = 1, 90 - .dpcm_capture = 1, 91 89 SND_SOC_DAILINK_REG(codec), 92 90 }, 93 91 };
+7 -17
sound/soc/mediatek/mt6797/mt6797-mt6351.c
··· 78 78 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 79 79 SND_SOC_DPCM_TRIGGER_PRE}, 80 80 .dynamic = 1, 81 - .dpcm_playback = 1, 81 + .playback_only = 1, 82 82 SND_SOC_DAILINK_REG(playback_1), 83 83 }, 84 84 { ··· 87 87 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 88 88 SND_SOC_DPCM_TRIGGER_PRE}, 89 89 .dynamic = 1, 90 - .dpcm_playback = 1, 90 + .playback_only = 1, 91 91 SND_SOC_DAILINK_REG(playback_2), 92 92 }, 93 93 { ··· 96 96 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 97 97 SND_SOC_DPCM_TRIGGER_PRE}, 98 98 .dynamic = 1, 99 - .dpcm_playback = 1, 99 + .playback_only = 1, 100 100 SND_SOC_DAILINK_REG(playback_3), 101 101 }, 102 102 { ··· 105 105 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 106 106 SND_SOC_DPCM_TRIGGER_PRE}, 107 107 .dynamic = 1, 108 - .dpcm_capture = 1, 108 + .capture_only = 1, 109 109 SND_SOC_DAILINK_REG(capture_1), 110 110 }, 111 111 { ··· 114 114 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 115 115 SND_SOC_DPCM_TRIGGER_PRE}, 116 116 .dynamic = 1, 117 - .dpcm_capture = 1, 117 + .capture_only = 1, 118 118 SND_SOC_DAILINK_REG(capture_2), 119 119 }, 120 120 { ··· 123 123 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 124 124 SND_SOC_DPCM_TRIGGER_PRE}, 125 125 .dynamic = 1, 126 - .dpcm_capture = 1, 126 + .capture_only = 1, 127 127 SND_SOC_DAILINK_REG(capture_3), 128 128 }, 129 129 { ··· 132 132 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 133 133 SND_SOC_DPCM_TRIGGER_PRE}, 134 134 .dynamic = 1, 135 - .dpcm_capture = 1, 135 + .capture_only = 1, 136 136 SND_SOC_DAILINK_REG(capture_mono_1), 137 137 }, 138 138 { ··· 141 141 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 142 142 SND_SOC_DPCM_TRIGGER_PRE}, 143 143 .dynamic = 1, 144 - .dpcm_playback = 1, 145 - .dpcm_capture = 1, 146 144 .ignore_suspend = 1, 147 145 SND_SOC_DAILINK_REG(hostless_lpbk), 148 146 }, ··· 150 152 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 151 153 SND_SOC_DPCM_TRIGGER_PRE}, 152 154 .dynamic = 1, 153 - .dpcm_playback = 1, 154 - .dpcm_capture = 1, 155 155 .ignore_suspend = 1, 156 156 SND_SOC_DAILINK_REG(hostless_speech), 157 157 }, ··· 157 161 { 158 162 .name = "Primary Codec", 159 163 .no_pcm = 1, 160 - .dpcm_playback = 1, 161 - .dpcm_capture = 1, 162 164 .ignore_suspend = 1, 163 165 SND_SOC_DAILINK_REG(primary_codec), 164 166 }, 165 167 { 166 168 .name = "PCM 1", 167 169 .no_pcm = 1, 168 - .dpcm_playback = 1, 169 - .dpcm_capture = 1, 170 170 .ignore_suspend = 1, 171 171 SND_SOC_DAILINK_REG(pcm1), 172 172 }, 173 173 { 174 174 .name = "PCM 2", 175 175 .no_pcm = 1, 176 - .dpcm_playback = 1, 177 - .dpcm_capture = 1, 178 176 .ignore_suspend = 1, 179 177 SND_SOC_DAILINK_REG(pcm2), 180 178 },
+2 -4
sound/soc/mediatek/mt7986/mt7986-wm8960.c
··· 45 45 .trigger = {SND_SOC_DPCM_TRIGGER_POST, 46 46 SND_SOC_DPCM_TRIGGER_POST}, 47 47 .dynamic = 1, 48 - .dpcm_playback = 1, 48 + .playback_only = 1, 49 49 SND_SOC_DAILINK_REG(playback), 50 50 }, 51 51 { ··· 54 54 .trigger = {SND_SOC_DPCM_TRIGGER_POST, 55 55 SND_SOC_DPCM_TRIGGER_POST}, 56 56 .dynamic = 1, 57 - .dpcm_capture = 1, 57 + .capture_only = 1, 58 58 SND_SOC_DAILINK_REG(capture), 59 59 }, 60 60 /* BE */ ··· 65 65 SND_SOC_DAIFMT_NB_NF | 66 66 SND_SOC_DAIFMT_CBS_CFS | 67 67 SND_SOC_DAIFMT_GATED, 68 - .dpcm_playback = 1, 69 - .dpcm_capture = 1, 70 68 SND_SOC_DAILINK_REG(codec), 71 69 }, 72 70 };
+2 -4
sound/soc/mediatek/mt8173/mt8173-max98090.c
··· 104 104 .stream_name = "MAX98090 Playback", 105 105 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 106 106 .dynamic = 1, 107 - .dpcm_playback = 1, 107 + .playback_only = 1, 108 108 SND_SOC_DAILINK_REG(playback), 109 109 }, 110 110 { ··· 112 112 .stream_name = "MAX98090 Capture", 113 113 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 114 114 .dynamic = 1, 115 - .dpcm_capture = 1, 115 + .capture_only = 1, 116 116 SND_SOC_DAILINK_REG(capture), 117 117 }, 118 118 /* Back End DAI links */ ··· 123 123 .ops = &mt8173_max98090_ops, 124 124 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | 125 125 SND_SOC_DAIFMT_CBS_CFS, 126 - .dpcm_playback = 1, 127 - .dpcm_capture = 1, 128 126 SND_SOC_DAILINK_REG(hifi), 129 127 }, 130 128 };
+2 -4
sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c
··· 139 139 .stream_name = "rt5650_rt5514 Playback", 140 140 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 141 141 .dynamic = 1, 142 - .dpcm_playback = 1, 142 + .playback_only = 1, 143 143 SND_SOC_DAILINK_REG(playback), 144 144 }, 145 145 [DAI_LINK_CAPTURE] = { ··· 147 147 .stream_name = "rt5650_rt5514 Capture", 148 148 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 149 149 .dynamic = 1, 150 - .dpcm_capture = 1, 150 + .capture_only = 1, 151 151 SND_SOC_DAILINK_REG(capture), 152 152 }, 153 153 /* Back End DAI links */ ··· 159 159 SND_SOC_DAIFMT_CBS_CFS, 160 160 .ops = &mt8173_rt5650_rt5514_ops, 161 161 .ignore_pmdown_time = 1, 162 - .dpcm_playback = 1, 163 - .dpcm_capture = 1, 164 162 SND_SOC_DAILINK_REG(codec), 165 163 }, 166 164 };
+4 -6
sound/soc/mediatek/mt8173/mt8173-rt5650-rt5676.c
··· 171 171 .stream_name = "rt5650_rt5676 Playback", 172 172 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 173 173 .dynamic = 1, 174 - .dpcm_playback = 1, 174 + .playback_only = 1, 175 175 SND_SOC_DAILINK_REG(playback), 176 176 }, 177 177 [DAI_LINK_CAPTURE] = { ··· 179 179 .stream_name = "rt5650_rt5676 Capture", 180 180 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 181 181 .dynamic = 1, 182 - .dpcm_capture = 1, 182 + .capture_only = 1, 183 183 SND_SOC_DAILINK_REG(capture), 184 184 }, 185 185 [DAI_LINK_HDMI] = { ··· 187 187 .stream_name = "HDMI PCM", 188 188 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 189 189 .dynamic = 1, 190 - .dpcm_playback = 1, 190 + .playback_only = 1, 191 191 SND_SOC_DAILINK_REG(hdmi_pcm), 192 192 }, 193 193 ··· 200 200 SND_SOC_DAIFMT_CBS_CFS, 201 201 .ops = &mt8173_rt5650_rt5676_ops, 202 202 .ignore_pmdown_time = 1, 203 - .dpcm_playback = 1, 204 - .dpcm_capture = 1, 205 203 SND_SOC_DAILINK_REG(codec), 206 204 }, 207 205 [DAI_LINK_HDMI_I2S] = { 208 206 .name = "HDMI BE", 209 207 .no_pcm = 1, 210 - .dpcm_playback = 1, 208 + .playback_only = 1, 211 209 SND_SOC_DAILINK_REG(hdmi_be), 212 210 }, 213 211 /* rt5676 <-> rt5650 intercodec link: Sets rt5676 I2S2 as master */
+4 -6
sound/soc/mediatek/mt8173/mt8173-rt5650.c
··· 210 210 .stream_name = "rt5650 Playback", 211 211 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 212 212 .dynamic = 1, 213 - .dpcm_playback = 1, 213 + .playback_only = 1, 214 214 SND_SOC_DAILINK_REG(playback), 215 215 }, 216 216 [DAI_LINK_CAPTURE] = { ··· 218 218 .stream_name = "rt5650 Capture", 219 219 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 220 220 .dynamic = 1, 221 - .dpcm_capture = 1, 221 + .capture_only = 1, 222 222 SND_SOC_DAILINK_REG(capture), 223 223 }, 224 224 [DAI_LINK_HDMI] = { ··· 226 226 .stream_name = "HDMI PCM", 227 227 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 228 228 .dynamic = 1, 229 - .dpcm_playback = 1, 229 + .playback_only = 1, 230 230 SND_SOC_DAILINK_REG(hdmi_pcm), 231 231 }, 232 232 /* Back End DAI links */ ··· 238 238 SND_SOC_DAIFMT_CBS_CFS, 239 239 .ops = &mt8173_rt5650_ops, 240 240 .ignore_pmdown_time = 1, 241 - .dpcm_playback = 1, 242 - .dpcm_capture = 1, 243 241 SND_SOC_DAILINK_REG(codec), 244 242 }, 245 243 [DAI_LINK_HDMI_I2S] = { 246 244 .name = "HDMI BE", 247 245 .no_pcm = 1, 248 - .dpcm_playback = 1, 246 + .playback_only = 1, 249 247 .init = mt8173_rt5650_hdmi_init, 250 248 SND_SOC_DAILINK_REG(hdmi_be), 251 249 },
+14 -20
sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c
··· 425 425 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 426 426 SND_SOC_DPCM_TRIGGER_PRE}, 427 427 .dynamic = 1, 428 - .dpcm_playback = 1, 428 + .playback_only = 1, 429 429 .ops = &mt8183_da7219_max98357_ops, 430 430 SND_SOC_DAILINK_REG(playback1), 431 431 }, ··· 435 435 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 436 436 SND_SOC_DPCM_TRIGGER_PRE}, 437 437 .dynamic = 1, 438 - .dpcm_playback = 1, 438 + .playback_only = 1, 439 439 .ops = &mt8183_da7219_max98357_bt_sco_ops, 440 440 SND_SOC_DAILINK_REG(playback2), 441 441 }, ··· 445 445 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 446 446 SND_SOC_DPCM_TRIGGER_PRE}, 447 447 .dynamic = 1, 448 - .dpcm_playback = 1, 448 + .playback_only = 1, 449 449 SND_SOC_DAILINK_REG(playback3), 450 450 }, 451 451 { ··· 454 454 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 455 455 SND_SOC_DPCM_TRIGGER_PRE}, 456 456 .dynamic = 1, 457 - .dpcm_capture = 1, 457 + .capture_only = 1, 458 458 .ops = &mt8183_da7219_max98357_bt_sco_ops, 459 459 SND_SOC_DAILINK_REG(capture1), 460 460 }, ··· 464 464 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 465 465 SND_SOC_DPCM_TRIGGER_PRE}, 466 466 .dynamic = 1, 467 - .dpcm_capture = 1, 467 + .capture_only = 1, 468 468 SND_SOC_DAILINK_REG(capture2), 469 469 }, 470 470 { ··· 473 473 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 474 474 SND_SOC_DPCM_TRIGGER_PRE}, 475 475 .dynamic = 1, 476 - .dpcm_capture = 1, 476 + .capture_only = 1, 477 477 .ops = &mt8183_da7219_max98357_ops, 478 478 SND_SOC_DAILINK_REG(capture3), 479 479 }, ··· 483 483 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 484 484 SND_SOC_DPCM_TRIGGER_PRE}, 485 485 .dynamic = 1, 486 - .dpcm_capture = 1, 486 + .capture_only = 1, 487 487 SND_SOC_DAILINK_REG(capture_mono), 488 488 }, 489 489 { ··· 492 492 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 493 493 SND_SOC_DPCM_TRIGGER_PRE}, 494 494 .dynamic = 1, 495 - .dpcm_playback = 1, 495 + .playback_only = 1, 496 496 SND_SOC_DAILINK_REG(playback_hdmi), 497 497 }, 498 498 /* BE */ 499 499 { 500 500 .name = "Primary Codec", 501 501 .no_pcm = 1, 502 - .dpcm_playback = 1, 503 - .dpcm_capture = 1, 504 502 .ignore_suspend = 1, 505 503 SND_SOC_DAILINK_REG(primary_codec), 506 504 }, 507 505 { 508 506 .name = "PCM 1", 509 507 .no_pcm = 1, 510 - .dpcm_playback = 1, 511 - .dpcm_capture = 1, 512 508 .ignore_suspend = 1, 513 509 SND_SOC_DAILINK_REG(pcm1), 514 510 }, 515 511 { 516 512 .name = "PCM 2", 517 513 .no_pcm = 1, 518 - .dpcm_playback = 1, 519 - .dpcm_capture = 1, 520 514 .ignore_suspend = 1, 521 515 SND_SOC_DAILINK_REG(pcm2), 522 516 }, 523 517 { 524 518 .name = "I2S0", 525 519 .no_pcm = 1, 526 - .dpcm_capture = 1, 520 + .capture_only = 1, 527 521 .ignore_suspend = 1, 528 522 .be_hw_params_fixup = mt8183_i2s_hw_params_fixup, 529 523 .ops = &mt8183_mt6358_i2s_ops, ··· 526 532 { 527 533 .name = "I2S1", 528 534 .no_pcm = 1, 529 - .dpcm_playback = 1, 535 + .playback_only = 1, 530 536 .ignore_suspend = 1, 531 537 .be_hw_params_fixup = mt8183_i2s_hw_params_fixup, 532 538 .ops = &mt8183_mt6358_i2s_ops, ··· 535 541 { 536 542 .name = "I2S2", 537 543 .no_pcm = 1, 538 - .dpcm_capture = 1, 544 + .capture_only = 1, 539 545 .ignore_suspend = 1, 540 546 .be_hw_params_fixup = mt8183_i2s_hw_params_fixup, 541 547 .ops = &mt8183_da7219_i2s_ops, ··· 545 551 { 546 552 .name = "I2S3", 547 553 .no_pcm = 1, 548 - .dpcm_playback = 1, 554 + .playback_only = 1, 549 555 .ignore_suspend = 1, 550 556 }, 551 557 { 552 558 .name = "I2S5", 553 559 .no_pcm = 1, 554 - .dpcm_playback = 1, 560 + .playback_only = 1, 555 561 .ignore_suspend = 1, 556 562 .be_hw_params_fixup = mt8183_i2s_hw_params_fixup, 557 563 .ops = &mt8183_mt6358_i2s_ops, ··· 564 570 .dai_fmt = SND_SOC_DAIFMT_I2S | 565 571 SND_SOC_DAIFMT_IB_IF | 566 572 SND_SOC_DAIFMT_CBM_CFM, 567 - .dpcm_playback = 1, 573 + .playback_only = 1, 568 574 .ignore_suspend = 1, 569 575 .be_hw_params_fixup = mt8183_i2s_hw_params_fixup, 570 576 .ignore = 1,
+14 -20
sound/soc/mediatek/mt8183/mt8183-mt6358-ts3a227-max98357.c
··· 430 430 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 431 431 SND_SOC_DPCM_TRIGGER_PRE}, 432 432 .dynamic = 1, 433 - .dpcm_playback = 1, 433 + .playback_only = 1, 434 434 .ops = &mt8183_mt6358_ops, 435 435 SND_SOC_DAILINK_REG(playback1), 436 436 }, ··· 440 440 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 441 441 SND_SOC_DPCM_TRIGGER_PRE}, 442 442 .dynamic = 1, 443 - .dpcm_playback = 1, 443 + .playback_only = 1, 444 444 .ops = &mt8183_mt6358_ts3a227_max98357_bt_sco_ops, 445 445 SND_SOC_DAILINK_REG(playback2), 446 446 }, ··· 450 450 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 451 451 SND_SOC_DPCM_TRIGGER_PRE}, 452 452 .dynamic = 1, 453 - .dpcm_playback = 1, 453 + .playback_only = 1, 454 454 SND_SOC_DAILINK_REG(playback3), 455 455 }, 456 456 { ··· 459 459 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 460 460 SND_SOC_DPCM_TRIGGER_PRE}, 461 461 .dynamic = 1, 462 - .dpcm_capture = 1, 462 + .capture_only = 1, 463 463 .ops = &mt8183_mt6358_ts3a227_max98357_bt_sco_ops, 464 464 SND_SOC_DAILINK_REG(capture1), 465 465 }, ··· 469 469 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 470 470 SND_SOC_DPCM_TRIGGER_PRE}, 471 471 .dynamic = 1, 472 - .dpcm_capture = 1, 472 + .capture_only = 1, 473 473 SND_SOC_DAILINK_REG(capture2), 474 474 }, 475 475 { ··· 478 478 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 479 479 SND_SOC_DPCM_TRIGGER_PRE}, 480 480 .dynamic = 1, 481 - .dpcm_capture = 1, 481 + .capture_only = 1, 482 482 .ops = &mt8183_mt6358_ops, 483 483 SND_SOC_DAILINK_REG(capture3), 484 484 }, ··· 488 488 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 489 489 SND_SOC_DPCM_TRIGGER_PRE}, 490 490 .dynamic = 1, 491 - .dpcm_capture = 1, 491 + .capture_only = 1, 492 492 SND_SOC_DAILINK_REG(capture_mono), 493 493 }, 494 494 { ··· 497 497 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 498 498 SND_SOC_DPCM_TRIGGER_PRE}, 499 499 .dynamic = 1, 500 - .dpcm_playback = 1, 500 + .playback_only = 1, 501 501 SND_SOC_DAILINK_REG(playback_hdmi), 502 502 }, 503 503 { ··· 513 513 { 514 514 .name = "Primary Codec", 515 515 .no_pcm = 1, 516 - .dpcm_playback = 1, 517 - .dpcm_capture = 1, 518 516 .ignore_suspend = 1, 519 517 SND_SOC_DAILINK_REG(primary_codec), 520 518 }, 521 519 { 522 520 .name = "PCM 1", 523 521 .no_pcm = 1, 524 - .dpcm_playback = 1, 525 - .dpcm_capture = 1, 526 522 .ignore_suspend = 1, 527 523 SND_SOC_DAILINK_REG(pcm1), 528 524 }, 529 525 { 530 526 .name = "PCM 2", 531 527 .no_pcm = 1, 532 - .dpcm_playback = 1, 533 - .dpcm_capture = 1, 534 528 .ignore_suspend = 1, 535 529 SND_SOC_DAILINK_REG(pcm2), 536 530 }, 537 531 { 538 532 .name = "I2S0", 539 533 .no_pcm = 1, 540 - .dpcm_capture = 1, 534 + .capture_only = 1, 541 535 .ignore_suspend = 1, 542 536 .ops = &mt8183_mt6358_i2s_ops, 543 537 SND_SOC_DAILINK_REG(i2s0), ··· 539 545 { 540 546 .name = "I2S1", 541 547 .no_pcm = 1, 542 - .dpcm_playback = 1, 548 + .playback_only = 1, 543 549 .ignore_suspend = 1, 544 550 .be_hw_params_fixup = mt8183_i2s_hw_params_fixup, 545 551 .ops = &mt8183_mt6358_i2s_ops, ··· 548 554 { 549 555 .name = "I2S2", 550 556 .no_pcm = 1, 551 - .dpcm_capture = 1, 557 + .capture_only = 1, 552 558 .ignore_suspend = 1, 553 559 .be_hw_params_fixup = mt8183_i2s_hw_params_fixup, 554 560 .ops = &mt8183_mt6358_i2s_ops, ··· 558 564 { 559 565 .name = "I2S3", 560 566 .no_pcm = 1, 561 - .dpcm_playback = 1, 567 + .playback_only = 1, 562 568 .ignore_suspend = 1, 563 569 }, 564 570 { 565 571 .name = "I2S5", 566 572 .no_pcm = 1, 567 - .dpcm_playback = 1, 573 + .playback_only = 1, 568 574 .ignore_suspend = 1, 569 575 .ops = &mt8183_mt6358_i2s_ops, 570 576 .init = &mt8183_bt_init, ··· 576 582 .dai_fmt = SND_SOC_DAIFMT_I2S | 577 583 SND_SOC_DAIFMT_IB_IF | 578 584 SND_SOC_DAIFMT_CBM_CFM, 579 - .dpcm_playback = 1, 585 + .playback_only = 1, 580 586 .ignore_suspend = 1, 581 587 .be_hw_params_fixup = mt8183_i2s_hw_params_fixup, 582 588 .ops = &mt8183_mt6358_tdm_ops,
+32 -54
sound/soc/mediatek/mt8186/mt8186-mt6366.c
··· 647 647 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 648 648 SND_SOC_DPCM_TRIGGER_PRE}, 649 649 .dynamic = 1, 650 - .dpcm_playback = 1, 650 + .playback_only = 1, 651 651 .dpcm_merged_format = 1, 652 652 .dpcm_merged_chan = 1, 653 653 .dpcm_merged_rate = 1, ··· 660 660 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 661 661 SND_SOC_DPCM_TRIGGER_PRE}, 662 662 .dynamic = 1, 663 - .dpcm_playback = 1, 663 + .playback_only = 1, 664 664 SND_SOC_DAILINK_REG(playback12), 665 665 }, 666 666 { ··· 669 669 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 670 670 SND_SOC_DPCM_TRIGGER_PRE}, 671 671 .dynamic = 1, 672 - .dpcm_playback = 1, 672 + .playback_only = 1, 673 673 .dpcm_merged_format = 1, 674 674 .dpcm_merged_chan = 1, 675 675 .dpcm_merged_rate = 1, ··· 681 681 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 682 682 SND_SOC_DPCM_TRIGGER_PRE}, 683 683 .dynamic = 1, 684 - .dpcm_playback = 1, 684 + .playback_only = 1, 685 685 .dpcm_merged_format = 1, 686 686 .dpcm_merged_chan = 1, 687 687 .dpcm_merged_rate = 1, ··· 694 694 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 695 695 SND_SOC_DPCM_TRIGGER_PRE}, 696 696 .dynamic = 1, 697 - .dpcm_playback = 1, 697 + .playback_only = 1, 698 698 SND_SOC_DAILINK_REG(playback4), 699 699 }, 700 700 { ··· 703 703 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 704 704 SND_SOC_DPCM_TRIGGER_PRE}, 705 705 .dynamic = 1, 706 - .dpcm_playback = 1, 706 + .playback_only = 1, 707 707 SND_SOC_DAILINK_REG(playback5), 708 708 }, 709 709 { ··· 712 712 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 713 713 SND_SOC_DPCM_TRIGGER_PRE}, 714 714 .dynamic = 1, 715 - .dpcm_playback = 1, 715 + .playback_only = 1, 716 716 SND_SOC_DAILINK_REG(playback6), 717 717 }, 718 718 { ··· 721 721 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 722 722 SND_SOC_DPCM_TRIGGER_PRE}, 723 723 .dynamic = 1, 724 - .dpcm_playback = 1, 724 + .playback_only = 1, 725 725 SND_SOC_DAILINK_REG(playback7), 726 726 }, 727 727 { ··· 730 730 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 731 731 SND_SOC_DPCM_TRIGGER_PRE}, 732 732 .dynamic = 1, 733 - .dpcm_playback = 1, 733 + .playback_only = 1, 734 734 SND_SOC_DAILINK_REG(playback8), 735 735 }, 736 736 { ··· 739 739 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 740 740 SND_SOC_DPCM_TRIGGER_PRE}, 741 741 .dynamic = 1, 742 - .dpcm_capture = 1, 742 + .capture_only = 1, 743 743 SND_SOC_DAILINK_REG(capture1), 744 744 }, 745 745 { ··· 748 748 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 749 749 SND_SOC_DPCM_TRIGGER_PRE}, 750 750 .dynamic = 1, 751 - .dpcm_capture = 1, 751 + .capture_only = 1, 752 752 .dpcm_merged_format = 1, 753 753 .dpcm_merged_chan = 1, 754 754 .dpcm_merged_rate = 1, ··· 761 761 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 762 762 SND_SOC_DPCM_TRIGGER_PRE}, 763 763 .dynamic = 1, 764 - .dpcm_capture = 1, 764 + .capture_only = 1, 765 765 SND_SOC_DAILINK_REG(capture3), 766 766 }, 767 767 { ··· 770 770 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 771 771 SND_SOC_DPCM_TRIGGER_PRE}, 772 772 .dynamic = 1, 773 - .dpcm_capture = 1, 773 + .capture_only = 1, 774 774 .dpcm_merged_format = 1, 775 775 .dpcm_merged_chan = 1, 776 776 .dpcm_merged_rate = 1, ··· 783 783 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 784 784 SND_SOC_DPCM_TRIGGER_PRE}, 785 785 .dynamic = 1, 786 - .dpcm_capture = 1, 786 + .capture_only = 1, 787 787 SND_SOC_DAILINK_REG(capture5), 788 788 }, 789 789 { ··· 792 792 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 793 793 SND_SOC_DPCM_TRIGGER_PRE}, 794 794 .dynamic = 1, 795 - .dpcm_capture = 1, 795 + .capture_only = 1, 796 796 .dpcm_merged_format = 1, 797 797 .dpcm_merged_chan = 1, 798 798 .dpcm_merged_rate = 1, ··· 804 804 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 805 805 SND_SOC_DPCM_TRIGGER_PRE}, 806 806 .dynamic = 1, 807 - .dpcm_capture = 1, 807 + .capture_only = 1, 808 808 SND_SOC_DAILINK_REG(capture7), 809 809 }, 810 810 { ··· 813 813 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 814 814 SND_SOC_DPCM_TRIGGER_PRE}, 815 815 .dynamic = 1, 816 - .dpcm_playback = 1, 817 - .dpcm_capture = 1, 818 816 .ignore_suspend = 1, 819 817 SND_SOC_DAILINK_REG(hostless_lpbk), 820 818 }, ··· 822 824 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 823 825 SND_SOC_DPCM_TRIGGER_PRE}, 824 826 .dynamic = 1, 825 - .dpcm_playback = 1, 826 - .dpcm_capture = 1, 827 827 .ignore_suspend = 1, 828 828 SND_SOC_DAILINK_REG(hostless_fm), 829 829 }, ··· 831 835 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 832 836 SND_SOC_DPCM_TRIGGER_PRE}, 833 837 .dynamic = 1, 834 - .dpcm_playback = 1, 835 - .dpcm_capture = 1, 836 838 .ignore_suspend = 1, 837 839 SND_SOC_DAILINK_REG(hostless_src1), 838 840 }, ··· 840 846 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 841 847 SND_SOC_DPCM_TRIGGER_PRE}, 842 848 .dynamic = 1, 843 - .dpcm_playback = 1, 844 - .dpcm_capture = 1, 845 849 .ignore_suspend = 1, 846 850 SND_SOC_DAILINK_REG(hostless_src_bargein), 847 851 }, ··· 849 857 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 850 858 SND_SOC_DPCM_TRIGGER_PRE}, 851 859 .dynamic = 1, 852 - .dpcm_capture = 1, 860 + .capture_only = 1, 853 861 .ignore_suspend = 1, 854 862 SND_SOC_DAILINK_REG(hostless_hw_gain_aaudio), 855 863 }, ··· 859 867 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 860 868 SND_SOC_DPCM_TRIGGER_PRE}, 861 869 .dynamic = 1, 862 - .dpcm_playback = 1, 863 - .dpcm_capture = 1, 864 870 .ignore_suspend = 1, 865 871 SND_SOC_DAILINK_REG(hostless_src_aaudio), 866 872 }, ··· 866 876 { 867 877 .name = "Primary Codec", 868 878 .no_pcm = 1, 869 - .dpcm_playback = 1, 870 - .dpcm_capture = 1, 871 879 .ignore_suspend = 1, 872 880 .init = primary_codec_init, 873 881 SND_SOC_DAILINK_REG(adda), ··· 876 888 .dai_fmt = SND_SOC_DAIFMT_I2S | 877 889 SND_SOC_DAIFMT_IB_IF | 878 890 SND_SOC_DAIFMT_CBM_CFM, 879 - .dpcm_playback = 1, 891 + .playback_only = 1, 880 892 .ignore_suspend = 1, 881 893 .init = mt8186_mt6366_rt1019_rt5682s_hdmi_init, 882 894 SND_SOC_DAILINK_REG(i2s3), ··· 884 896 { 885 897 .name = "I2S0", 886 898 .no_pcm = 1, 887 - .dpcm_capture = 1, 899 + .capture_only = 1, 888 900 .ignore_suspend = 1, 889 901 .ops = &mt8186_rt5682s_i2s_ops, 890 902 SND_SOC_DAILINK_REG(i2s0), ··· 892 904 { 893 905 .name = "I2S1", 894 906 .no_pcm = 1, 895 - .dpcm_playback = 1, 907 + .playback_only = 1, 896 908 .ignore_suspend = 1, 897 909 .init = mt8186_headset_codec_init, 898 910 SND_SOC_DAILINK_REG(i2s1), ··· 900 912 { 901 913 .name = "I2S2", 902 914 .no_pcm = 1, 903 - .dpcm_capture = 1, 915 + .capture_only = 1, 904 916 .ignore_suspend = 1, 905 917 SND_SOC_DAILINK_REG(i2s2), 906 918 }, 907 919 { 908 920 .name = "HW Gain 1", 909 921 .no_pcm = 1, 910 - .dpcm_playback = 1, 911 - .dpcm_capture = 1, 912 922 .ignore_suspend = 1, 913 923 SND_SOC_DAILINK_REG(hw_gain1), 914 924 }, 915 925 { 916 926 .name = "HW Gain 2", 917 927 .no_pcm = 1, 918 - .dpcm_playback = 1, 919 - .dpcm_capture = 1, 920 928 .ignore_suspend = 1, 921 929 SND_SOC_DAILINK_REG(hw_gain2), 922 930 }, 923 931 { 924 932 .name = "HW_SRC_1", 925 933 .no_pcm = 1, 926 - .dpcm_playback = 1, 927 - .dpcm_capture = 1, 928 934 .ignore_suspend = 1, 929 935 SND_SOC_DAILINK_REG(hw_src1), 930 936 }, 931 937 { 932 938 .name = "HW_SRC_2", 933 939 .no_pcm = 1, 934 - .dpcm_playback = 1, 935 - .dpcm_capture = 1, 936 940 .ignore_suspend = 1, 937 941 SND_SOC_DAILINK_REG(hw_src2), 938 942 }, 939 943 { 940 944 .name = "CONNSYS_I2S", 941 945 .no_pcm = 1, 942 - .dpcm_capture = 1, 946 + .capture_only = 1, 943 947 .ignore_suspend = 1, 944 948 SND_SOC_DAILINK_REG(connsys_i2s), 945 949 }, ··· 940 960 .dai_fmt = SND_SOC_DAIFMT_I2S | 941 961 SND_SOC_DAIFMT_NB_IF, 942 962 .no_pcm = 1, 943 - .dpcm_playback = 1, 944 - .dpcm_capture = 1, 945 963 .ignore_suspend = 1, 946 964 SND_SOC_DAILINK_REG(pcm1), 947 965 }, 948 966 { 949 967 .name = "TDM IN", 950 968 .no_pcm = 1, 951 - .dpcm_capture = 1, 969 + .capture_only = 1, 952 970 .ignore_suspend = 1, 953 971 SND_SOC_DAILINK_REG(tdm_in), 954 972 }, ··· 954 976 { 955 977 .name = "Hostless_UL1", 956 978 .no_pcm = 1, 957 - .dpcm_capture = 1, 979 + .capture_only = 1, 958 980 .ignore_suspend = 1, 959 981 SND_SOC_DAILINK_REG(hostless_ul1), 960 982 }, 961 983 { 962 984 .name = "Hostless_UL2", 963 985 .no_pcm = 1, 964 - .dpcm_capture = 1, 986 + .capture_only = 1, 965 987 .ignore_suspend = 1, 966 988 SND_SOC_DAILINK_REG(hostless_ul2), 967 989 }, 968 990 { 969 991 .name = "Hostless_UL3", 970 992 .no_pcm = 1, 971 - .dpcm_capture = 1, 993 + .capture_only = 1, 972 994 .ignore_suspend = 1, 973 995 SND_SOC_DAILINK_REG(hostless_ul3), 974 996 }, 975 997 { 976 998 .name = "Hostless_UL5", 977 999 .no_pcm = 1, 978 - .dpcm_capture = 1, 1000 + .capture_only = 1, 979 1001 .ignore_suspend = 1, 980 1002 SND_SOC_DAILINK_REG(hostless_ul5), 981 1003 }, 982 1004 { 983 1005 .name = "Hostless_UL6", 984 1006 .no_pcm = 1, 985 - .dpcm_capture = 1, 1007 + .capture_only = 1, 986 1008 .ignore_suspend = 1, 987 1009 SND_SOC_DAILINK_REG(hostless_ul6), 988 1010 }, ··· 990 1012 { 991 1013 .name = "AFE_SOF_DL1", 992 1014 .no_pcm = 1, 993 - .dpcm_playback = 1, 1015 + .playback_only = 1, 994 1016 SND_SOC_DAILINK_REG(AFE_SOF_DL1), 995 1017 }, 996 1018 { 997 1019 .name = "AFE_SOF_DL2", 998 1020 .no_pcm = 1, 999 - .dpcm_playback = 1, 1021 + .playback_only = 1, 1000 1022 SND_SOC_DAILINK_REG(AFE_SOF_DL2), 1001 1023 }, 1002 1024 { 1003 1025 .name = "AFE_SOF_UL1", 1004 1026 .no_pcm = 1, 1005 - .dpcm_capture = 1, 1027 + .capture_only = 1, 1006 1028 SND_SOC_DAILINK_REG(AFE_SOF_UL1), 1007 1029 }, 1008 1030 { 1009 1031 .name = "AFE_SOF_UL2", 1010 1032 .no_pcm = 1, 1011 - .dpcm_capture = 1, 1033 + .capture_only = 1, 1012 1034 SND_SOC_DAILINK_REG(AFE_SOF_UL2), 1013 1035 }, 1014 1036 };
+28 -30
sound/soc/mediatek/mt8188/mt8188-mt6359.c
··· 932 932 SND_SOC_DPCM_TRIGGER_POST, 933 933 }, 934 934 .dynamic = 1, 935 - .dpcm_playback = 1, 935 + .playback_only = 1, 936 936 .dpcm_merged_chan = 1, 937 937 .dpcm_merged_rate = 1, 938 938 .dpcm_merged_format = 1, ··· 946 946 SND_SOC_DPCM_TRIGGER_POST, 947 947 }, 948 948 .dynamic = 1, 949 - .dpcm_playback = 1, 949 + .playback_only = 1, 950 950 .dpcm_merged_chan = 1, 951 951 .dpcm_merged_rate = 1, 952 952 .dpcm_merged_format = 1, ··· 960 960 SND_SOC_DPCM_TRIGGER_POST, 961 961 }, 962 962 .dynamic = 1, 963 - .dpcm_playback = 1, 963 + .playback_only = 1, 964 964 .dpcm_merged_chan = 1, 965 965 .dpcm_merged_rate = 1, 966 966 .dpcm_merged_format = 1, ··· 974 974 SND_SOC_DPCM_TRIGGER_PRE, 975 975 }, 976 976 .dynamic = 1, 977 - .dpcm_playback = 1, 977 + .playback_only = 1, 978 978 SND_SOC_DAILINK_REG(playback7), 979 979 }, 980 980 [DAI_LINK_DL8_FE] = { ··· 985 985 SND_SOC_DPCM_TRIGGER_POST, 986 986 }, 987 987 .dynamic = 1, 988 - .dpcm_playback = 1, 988 + .playback_only = 1, 989 989 SND_SOC_DAILINK_REG(playback8), 990 990 }, 991 991 [DAI_LINK_DL10_FE] = { ··· 996 996 SND_SOC_DPCM_TRIGGER_POST, 997 997 }, 998 998 .dynamic = 1, 999 - .dpcm_playback = 1, 999 + .playback_only = 1, 1000 1000 SND_SOC_DAILINK_REG(playback10), 1001 1001 }, 1002 1002 [DAI_LINK_DL11_FE] = { ··· 1007 1007 SND_SOC_DPCM_TRIGGER_POST, 1008 1008 }, 1009 1009 .dynamic = 1, 1010 - .dpcm_playback = 1, 1010 + .playback_only = 1, 1011 1011 SND_SOC_DAILINK_REG(playback11), 1012 1012 }, 1013 1013 [DAI_LINK_UL1_FE] = { ··· 1018 1018 SND_SOC_DPCM_TRIGGER_PRE, 1019 1019 }, 1020 1020 .dynamic = 1, 1021 - .dpcm_capture = 1, 1021 + .capture_only = 1, 1022 1022 SND_SOC_DAILINK_REG(capture1), 1023 1023 }, 1024 1024 [DAI_LINK_UL2_FE] = { ··· 1029 1029 SND_SOC_DPCM_TRIGGER_POST, 1030 1030 }, 1031 1031 .dynamic = 1, 1032 - .dpcm_capture = 1, 1032 + .capture_only = 1, 1033 1033 SND_SOC_DAILINK_REG(capture2), 1034 1034 }, 1035 1035 [DAI_LINK_UL3_FE] = { ··· 1040 1040 SND_SOC_DPCM_TRIGGER_POST, 1041 1041 }, 1042 1042 .dynamic = 1, 1043 - .dpcm_capture = 1, 1043 + .capture_only = 1, 1044 1044 SND_SOC_DAILINK_REG(capture3), 1045 1045 }, 1046 1046 [DAI_LINK_UL4_FE] = { ··· 1051 1051 SND_SOC_DPCM_TRIGGER_POST, 1052 1052 }, 1053 1053 .dynamic = 1, 1054 - .dpcm_capture = 1, 1054 + .capture_only = 1, 1055 1055 .dpcm_merged_chan = 1, 1056 1056 .dpcm_merged_rate = 1, 1057 1057 .dpcm_merged_format = 1, ··· 1065 1065 SND_SOC_DPCM_TRIGGER_POST, 1066 1066 }, 1067 1067 .dynamic = 1, 1068 - .dpcm_capture = 1, 1068 + .capture_only = 1, 1069 1069 .dpcm_merged_chan = 1, 1070 1070 .dpcm_merged_rate = 1, 1071 1071 .dpcm_merged_format = 1, ··· 1079 1079 SND_SOC_DPCM_TRIGGER_PRE, 1080 1080 }, 1081 1081 .dynamic = 1, 1082 - .dpcm_capture = 1, 1082 + .capture_only = 1, 1083 1083 SND_SOC_DAILINK_REG(capture6), 1084 1084 }, 1085 1085 [DAI_LINK_UL8_FE] = { ··· 1090 1090 SND_SOC_DPCM_TRIGGER_POST, 1091 1091 }, 1092 1092 .dynamic = 1, 1093 - .dpcm_capture = 1, 1093 + .capture_only = 1, 1094 1094 SND_SOC_DAILINK_REG(capture8), 1095 1095 }, 1096 1096 [DAI_LINK_UL9_FE] = { ··· 1101 1101 SND_SOC_DPCM_TRIGGER_POST, 1102 1102 }, 1103 1103 .dynamic = 1, 1104 - .dpcm_capture = 1, 1104 + .capture_only = 1, 1105 1105 SND_SOC_DAILINK_REG(capture9), 1106 1106 }, 1107 1107 [DAI_LINK_UL10_FE] = { ··· 1112 1112 SND_SOC_DPCM_TRIGGER_POST, 1113 1113 }, 1114 1114 .dynamic = 1, 1115 - .dpcm_capture = 1, 1115 + .capture_only = 1, 1116 1116 SND_SOC_DAILINK_REG(capture10), 1117 1117 }, 1118 1118 /* BE */ 1119 1119 [DAI_LINK_DL_SRC_BE] = { 1120 1120 .name = "DL_SRC_BE", 1121 1121 .no_pcm = 1, 1122 - .dpcm_playback = 1, 1122 + .playback_only = 1, 1123 1123 SND_SOC_DAILINK_REG(dl_src), 1124 1124 }, 1125 1125 [DAI_LINK_DPTX_BE] = { ··· 1127 1127 .ops = &mt8188_dptx_ops, 1128 1128 .be_hw_params_fixup = mt8188_dptx_hw_params_fixup, 1129 1129 .no_pcm = 1, 1130 - .dpcm_playback = 1, 1130 + .playback_only = 1, 1131 1131 SND_SOC_DAILINK_REG(dptx), 1132 1132 }, 1133 1133 [DAI_LINK_ETDM1_IN_BE] = { ··· 1136 1136 .dai_fmt = SND_SOC_DAIFMT_I2S | 1137 1137 SND_SOC_DAIFMT_NB_NF | 1138 1138 SND_SOC_DAIFMT_CBP_CFP, 1139 - .dpcm_capture = 1, 1139 + .capture_only = 1, 1140 1140 .ignore_suspend = 1, 1141 1141 SND_SOC_DAILINK_REG(etdm1_in), 1142 1142 }, ··· 1146 1146 .dai_fmt = SND_SOC_DAIFMT_I2S | 1147 1147 SND_SOC_DAIFMT_NB_NF | 1148 1148 SND_SOC_DAIFMT_CBP_CFP, 1149 - .dpcm_capture = 1, 1149 + .capture_only = 1, 1150 1150 SND_SOC_DAILINK_REG(etdm2_in), 1151 1151 }, 1152 1152 [DAI_LINK_ETDM1_OUT_BE] = { ··· 1155 1155 .dai_fmt = SND_SOC_DAIFMT_I2S | 1156 1156 SND_SOC_DAIFMT_NB_NF | 1157 1157 SND_SOC_DAIFMT_CBC_CFC, 1158 - .dpcm_playback = 1, 1158 + .playback_only = 1, 1159 1159 SND_SOC_DAILINK_REG(etdm1_out), 1160 1160 }, 1161 1161 [DAI_LINK_ETDM2_OUT_BE] = { ··· 1164 1164 .dai_fmt = SND_SOC_DAIFMT_I2S | 1165 1165 SND_SOC_DAIFMT_NB_NF | 1166 1166 SND_SOC_DAIFMT_CBC_CFC, 1167 - .dpcm_playback = 1, 1167 + .playback_only = 1, 1168 1168 SND_SOC_DAILINK_REG(etdm2_out), 1169 1169 }, 1170 1170 [DAI_LINK_ETDM3_OUT_BE] = { ··· 1173 1173 .dai_fmt = SND_SOC_DAIFMT_I2S | 1174 1174 SND_SOC_DAIFMT_NB_NF | 1175 1175 SND_SOC_DAIFMT_CBC_CFC, 1176 - .dpcm_playback = 1, 1176 + .playback_only = 1, 1177 1177 SND_SOC_DAILINK_REG(etdm3_out), 1178 1178 }, 1179 1179 [DAI_LINK_PCM1_BE] = { ··· 1182 1182 .dai_fmt = SND_SOC_DAIFMT_I2S | 1183 1183 SND_SOC_DAIFMT_NB_NF | 1184 1184 SND_SOC_DAIFMT_CBC_CFC, 1185 - .dpcm_playback = 1, 1186 - .dpcm_capture = 1, 1187 1185 SND_SOC_DAILINK_REG(pcm1), 1188 1186 }, 1189 1187 [DAI_LINK_UL_SRC_BE] = { 1190 1188 .name = "UL_SRC_BE", 1191 1189 .no_pcm = 1, 1192 - .dpcm_capture = 1, 1190 + .capture_only = 1, 1193 1191 SND_SOC_DAILINK_REG(ul_src), 1194 1192 }, 1195 1193 ··· 1195 1197 [DAI_LINK_SOF_DL2_BE] = { 1196 1198 .name = "AFE_SOF_DL2", 1197 1199 .no_pcm = 1, 1198 - .dpcm_playback = 1, 1200 + .playback_only = 1, 1199 1201 .ops = &mt8188_sof_be_ops, 1200 1202 SND_SOC_DAILINK_REG(AFE_SOF_DL2), 1201 1203 }, 1202 1204 [DAI_LINK_SOF_DL3_BE] = { 1203 1205 .name = "AFE_SOF_DL3", 1204 1206 .no_pcm = 1, 1205 - .dpcm_playback = 1, 1207 + .playback_only = 1, 1206 1208 .ops = &mt8188_sof_be_ops, 1207 1209 SND_SOC_DAILINK_REG(AFE_SOF_DL3), 1208 1210 }, 1209 1211 [DAI_LINK_SOF_UL4_BE] = { 1210 1212 .name = "AFE_SOF_UL4", 1211 1213 .no_pcm = 1, 1212 - .dpcm_capture = 1, 1214 + .capture_only = 1, 1213 1215 .ops = &mt8188_sof_be_ops, 1214 1216 SND_SOC_DAILINK_REG(AFE_SOF_UL4), 1215 1217 }, 1216 1218 [DAI_LINK_SOF_UL5_BE] = { 1217 1219 .name = "AFE_SOF_UL5", 1218 1220 .no_pcm = 1, 1219 - .dpcm_capture = 1, 1221 + .capture_only = 1, 1220 1222 .ops = &mt8188_sof_be_ops, 1221 1223 SND_SOC_DAILINK_REG(AFE_SOF_UL5), 1222 1224 },
+35 -43
sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
··· 598 598 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 599 599 SND_SOC_DPCM_TRIGGER_PRE}, 600 600 .dynamic = 1, 601 - .dpcm_playback = 1, 601 + .playback_only = 1, 602 602 SND_SOC_DAILINK_REG(playback1), 603 603 }, 604 604 { ··· 607 607 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 608 608 SND_SOC_DPCM_TRIGGER_PRE}, 609 609 .dynamic = 1, 610 - .dpcm_playback = 1, 610 + .playback_only = 1, 611 611 SND_SOC_DAILINK_REG(playback12), 612 612 }, 613 613 { ··· 616 616 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 617 617 SND_SOC_DPCM_TRIGGER_PRE}, 618 618 .dynamic = 1, 619 - .dpcm_playback = 1, 619 + .playback_only = 1, 620 620 SND_SOC_DAILINK_REG(playback2), 621 621 }, 622 622 { ··· 625 625 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 626 626 SND_SOC_DPCM_TRIGGER_PRE}, 627 627 .dynamic = 1, 628 - .dpcm_playback = 1, 628 + .playback_only = 1, 629 629 .ops = &mtk_soundcard_common_playback_ops, 630 630 SND_SOC_DAILINK_REG(playback3), 631 631 }, ··· 635 635 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 636 636 SND_SOC_DPCM_TRIGGER_PRE}, 637 637 .dynamic = 1, 638 - .dpcm_playback = 1, 638 + .playback_only = 1, 639 639 SND_SOC_DAILINK_REG(playback4), 640 640 }, 641 641 { ··· 644 644 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 645 645 SND_SOC_DPCM_TRIGGER_PRE}, 646 646 .dynamic = 1, 647 - .dpcm_playback = 1, 647 + .playback_only = 1, 648 648 SND_SOC_DAILINK_REG(playback5), 649 649 }, 650 650 { ··· 653 653 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 654 654 SND_SOC_DPCM_TRIGGER_PRE}, 655 655 .dynamic = 1, 656 - .dpcm_playback = 1, 656 + .playback_only = 1, 657 657 SND_SOC_DAILINK_REG(playback6), 658 658 }, 659 659 { ··· 662 662 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 663 663 SND_SOC_DPCM_TRIGGER_PRE}, 664 664 .dynamic = 1, 665 - .dpcm_playback = 1, 665 + .playback_only = 1, 666 666 SND_SOC_DAILINK_REG(playback7), 667 667 }, 668 668 { ··· 671 671 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 672 672 SND_SOC_DPCM_TRIGGER_PRE}, 673 673 .dynamic = 1, 674 - .dpcm_playback = 1, 674 + .playback_only = 1, 675 675 SND_SOC_DAILINK_REG(playback8), 676 676 }, 677 677 { ··· 680 680 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 681 681 SND_SOC_DPCM_TRIGGER_PRE}, 682 682 .dynamic = 1, 683 - .dpcm_playback = 1, 683 + .playback_only = 1, 684 684 SND_SOC_DAILINK_REG(playback9), 685 685 }, 686 686 { ··· 689 689 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 690 690 SND_SOC_DPCM_TRIGGER_PRE}, 691 691 .dynamic = 1, 692 - .dpcm_capture = 1, 692 + .capture_only = 1, 693 693 .ops = &mtk_soundcard_common_capture_ops, 694 694 SND_SOC_DAILINK_REG(capture1), 695 695 }, ··· 699 699 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 700 700 SND_SOC_DPCM_TRIGGER_PRE}, 701 701 .dynamic = 1, 702 - .dpcm_capture = 1, 702 + .capture_only = 1, 703 703 .ops = &mtk_soundcard_common_playback_ops, 704 704 SND_SOC_DAILINK_REG(capture2), 705 705 }, ··· 709 709 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 710 710 SND_SOC_DPCM_TRIGGER_PRE}, 711 711 .dynamic = 1, 712 - .dpcm_capture = 1, 712 + .capture_only = 1, 713 713 SND_SOC_DAILINK_REG(capture3), 714 714 }, 715 715 { ··· 718 718 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 719 719 SND_SOC_DPCM_TRIGGER_PRE}, 720 720 .dynamic = 1, 721 - .dpcm_capture = 1, 721 + .capture_only = 1, 722 722 SND_SOC_DAILINK_REG(capture4), 723 723 }, 724 724 { ··· 727 727 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 728 728 SND_SOC_DPCM_TRIGGER_PRE}, 729 729 .dynamic = 1, 730 - .dpcm_capture = 1, 730 + .capture_only = 1, 731 731 SND_SOC_DAILINK_REG(capture5), 732 732 }, 733 733 { ··· 736 736 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 737 737 SND_SOC_DPCM_TRIGGER_PRE}, 738 738 .dynamic = 1, 739 - .dpcm_capture = 1, 739 + .capture_only = 1, 740 740 SND_SOC_DAILINK_REG(capture6), 741 741 }, 742 742 { ··· 745 745 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 746 746 SND_SOC_DPCM_TRIGGER_PRE}, 747 747 .dynamic = 1, 748 - .dpcm_capture = 1, 748 + .capture_only = 1, 749 749 SND_SOC_DAILINK_REG(capture7), 750 750 }, 751 751 { ··· 754 754 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 755 755 SND_SOC_DPCM_TRIGGER_PRE}, 756 756 .dynamic = 1, 757 - .dpcm_capture = 1, 757 + .capture_only = 1, 758 758 SND_SOC_DAILINK_REG(capture8), 759 759 }, 760 760 { ··· 763 763 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 764 764 SND_SOC_DPCM_TRIGGER_PRE}, 765 765 .dynamic = 1, 766 - .dpcm_capture = 1, 766 + .capture_only = 1, 767 767 SND_SOC_DAILINK_REG(capture_mono1), 768 768 }, 769 769 { ··· 772 772 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 773 773 SND_SOC_DPCM_TRIGGER_PRE}, 774 774 .dynamic = 1, 775 - .dpcm_capture = 1, 775 + .capture_only = 1, 776 776 SND_SOC_DAILINK_REG(capture_mono2), 777 777 }, 778 778 { ··· 781 781 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 782 782 SND_SOC_DPCM_TRIGGER_PRE}, 783 783 .dynamic = 1, 784 - .dpcm_capture = 1, 784 + .capture_only = 1, 785 785 SND_SOC_DAILINK_REG(capture_mono3), 786 786 }, 787 787 { ··· 790 790 .trigger = {SND_SOC_DPCM_TRIGGER_PRE, 791 791 SND_SOC_DPCM_TRIGGER_PRE}, 792 792 .dynamic = 1, 793 - .dpcm_playback = 1, 793 + .playback_only = 1, 794 794 SND_SOC_DAILINK_REG(playback_hdmi), 795 795 }, 796 796 /* Back End DAI links */ 797 797 { 798 798 .name = "Primary Codec", 799 799 .no_pcm = 1, 800 - .dpcm_playback = 1, 801 - .dpcm_capture = 1, 802 800 .ignore_suspend = 1, 803 801 .init = mt8192_mt6359_init, 804 802 SND_SOC_DAILINK_REG(primary_codec), ··· 804 806 { 805 807 .name = "Primary Codec CH34", 806 808 .no_pcm = 1, 807 - .dpcm_playback = 1, 808 - .dpcm_capture = 1, 809 809 .ignore_suspend = 1, 810 810 SND_SOC_DAILINK_REG(primary_codec_ch34), 811 811 }, 812 812 { 813 813 .name = "AP_DMIC", 814 814 .no_pcm = 1, 815 - .dpcm_capture = 1, 815 + .capture_only = 1, 816 816 .ignore_suspend = 1, 817 817 SND_SOC_DAILINK_REG(ap_dmic), 818 818 }, 819 819 { 820 820 .name = "AP_DMIC_CH34", 821 821 .no_pcm = 1, 822 - .dpcm_capture = 1, 822 + .capture_only = 1, 823 823 .ignore_suspend = 1, 824 824 SND_SOC_DAILINK_REG(ap_dmic_ch34), 825 825 }, 826 826 { 827 827 .name = "I2S0", 828 828 .no_pcm = 1, 829 - .dpcm_capture = 1, 829 + .capture_only = 1, 830 830 .ignore_suspend = 1, 831 831 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, 832 832 SND_SOC_DAILINK_REG(i2s0), ··· 832 836 { 833 837 .name = "I2S1", 834 838 .no_pcm = 1, 835 - .dpcm_playback = 1, 839 + .playback_only = 1, 836 840 .ignore_suspend = 1, 837 841 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, 838 842 SND_SOC_DAILINK_REG(i2s1), ··· 840 844 { 841 845 .name = "I2S2", 842 846 .no_pcm = 1, 843 - .dpcm_capture = 1, 847 + .capture_only = 1, 844 848 .ignore_suspend = 1, 845 849 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, 846 850 SND_SOC_DAILINK_REG(i2s2), ··· 848 852 { 849 853 .name = "I2S3", 850 854 .no_pcm = 1, 851 - .dpcm_playback = 1, 855 + .playback_only = 1, 852 856 .ignore_suspend = 1, 853 857 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, 854 858 SND_SOC_DAILINK_REG(i2s3), ··· 856 860 { 857 861 .name = "I2S5", 858 862 .no_pcm = 1, 859 - .dpcm_playback = 1, 863 + .playback_only = 1, 860 864 .ignore_suspend = 1, 861 865 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, 862 866 SND_SOC_DAILINK_REG(i2s5), ··· 864 868 { 865 869 .name = "I2S6", 866 870 .no_pcm = 1, 867 - .dpcm_capture = 1, 871 + .capture_only = 1, 868 872 .ignore_suspend = 1, 869 873 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, 870 874 SND_SOC_DAILINK_REG(i2s6), ··· 872 876 { 873 877 .name = "I2S7", 874 878 .no_pcm = 1, 875 - .dpcm_playback = 1, 879 + .playback_only = 1, 876 880 .ignore_suspend = 1, 877 881 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, 878 882 SND_SOC_DAILINK_REG(i2s7), ··· 880 884 { 881 885 .name = "I2S8", 882 886 .no_pcm = 1, 883 - .dpcm_capture = 1, 887 + .capture_only = 1, 884 888 .ignore_suspend = 1, 885 889 .init = mt8192_rt5682_init, 886 890 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, ··· 890 894 { 891 895 .name = "I2S9", 892 896 .no_pcm = 1, 893 - .dpcm_playback = 1, 897 + .playback_only = 1, 894 898 .ignore_suspend = 1, 895 899 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, 896 900 SND_SOC_DAILINK_REG(i2s9), ··· 899 903 { 900 904 .name = "CONNSYS_I2S", 901 905 .no_pcm = 1, 902 - .dpcm_capture = 1, 906 + .capture_only = 1, 903 907 .ignore_suspend = 1, 904 908 SND_SOC_DAILINK_REG(connsys_i2s), 905 909 }, 906 910 { 907 911 .name = "PCM 1", 908 912 .no_pcm = 1, 909 - .dpcm_playback = 1, 910 - .dpcm_capture = 1, 911 913 .ignore_suspend = 1, 912 914 SND_SOC_DAILINK_REG(pcm1), 913 915 }, 914 916 { 915 917 .name = "PCM 2", 916 918 .no_pcm = 1, 917 - .dpcm_playback = 1, 918 - .dpcm_capture = 1, 919 919 .ignore_suspend = 1, 920 920 SND_SOC_DAILINK_REG(pcm2), 921 921 }, ··· 921 929 .dai_fmt = SND_SOC_DAIFMT_DSP_A | 922 930 SND_SOC_DAIFMT_IB_NF | 923 931 SND_SOC_DAIFMT_CBM_CFM, 924 - .dpcm_playback = 1, 932 + .playback_only = 1, 925 933 .ignore_suspend = 1, 926 934 .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, 927 935 .ignore = 1,
+29 -31
sound/soc/mediatek/mt8195/mt8195-mt6359.c
··· 913 913 SND_SOC_DPCM_TRIGGER_POST, 914 914 }, 915 915 .dynamic = 1, 916 - .dpcm_playback = 1, 916 + .playback_only = 1, 917 917 .ops = &mtk_soundcard_common_playback_ops, 918 918 SND_SOC_DAILINK_REG(DL2_FE), 919 919 }, ··· 925 925 SND_SOC_DPCM_TRIGGER_POST, 926 926 }, 927 927 .dynamic = 1, 928 - .dpcm_playback = 1, 928 + .playback_only = 1, 929 929 .ops = &mtk_soundcard_common_playback_ops, 930 930 SND_SOC_DAILINK_REG(DL3_FE), 931 931 }, ··· 937 937 SND_SOC_DPCM_TRIGGER_POST, 938 938 }, 939 939 .dynamic = 1, 940 - .dpcm_playback = 1, 940 + .playback_only = 1, 941 941 .ops = &mtk_soundcard_common_playback_ops, 942 942 SND_SOC_DAILINK_REG(DL6_FE), 943 943 }, ··· 949 949 SND_SOC_DPCM_TRIGGER_PRE, 950 950 }, 951 951 .dynamic = 1, 952 - .dpcm_playback = 1, 952 + .playback_only = 1, 953 953 SND_SOC_DAILINK_REG(DL7_FE), 954 954 }, 955 955 [DAI_LINK_DL8_FE] = { ··· 960 960 SND_SOC_DPCM_TRIGGER_POST, 961 961 }, 962 962 .dynamic = 1, 963 - .dpcm_playback = 1, 963 + .playback_only = 1, 964 964 .ops = &mtk_soundcard_common_playback_ops, 965 965 SND_SOC_DAILINK_REG(DL8_FE), 966 966 }, ··· 972 972 SND_SOC_DPCM_TRIGGER_POST, 973 973 }, 974 974 .dynamic = 1, 975 - .dpcm_playback = 1, 975 + .playback_only = 1, 976 976 .ops = &mt8195_hdmitx_dptx_playback_ops, 977 977 SND_SOC_DAILINK_REG(DL10_FE), 978 978 }, ··· 984 984 SND_SOC_DPCM_TRIGGER_POST, 985 985 }, 986 986 .dynamic = 1, 987 - .dpcm_playback = 1, 987 + .playback_only = 1, 988 988 .ops = &mtk_soundcard_common_playback_ops, 989 989 SND_SOC_DAILINK_REG(DL11_FE), 990 990 }, ··· 996 996 SND_SOC_DPCM_TRIGGER_PRE, 997 997 }, 998 998 .dynamic = 1, 999 - .dpcm_capture = 1, 999 + .capture_only = 1, 1000 1000 SND_SOC_DAILINK_REG(UL1_FE), 1001 1001 }, 1002 1002 [DAI_LINK_UL2_FE] = { ··· 1007 1007 SND_SOC_DPCM_TRIGGER_POST, 1008 1008 }, 1009 1009 .dynamic = 1, 1010 - .dpcm_capture = 1, 1010 + .capture_only = 1, 1011 1011 .ops = &mtk_soundcard_common_capture_ops, 1012 1012 SND_SOC_DAILINK_REG(UL2_FE), 1013 1013 }, ··· 1019 1019 SND_SOC_DPCM_TRIGGER_POST, 1020 1020 }, 1021 1021 .dynamic = 1, 1022 - .dpcm_capture = 1, 1022 + .capture_only = 1, 1023 1023 .ops = &mtk_soundcard_common_capture_ops, 1024 1024 SND_SOC_DAILINK_REG(UL3_FE), 1025 1025 }, ··· 1031 1031 SND_SOC_DPCM_TRIGGER_POST, 1032 1032 }, 1033 1033 .dynamic = 1, 1034 - .dpcm_capture = 1, 1034 + .capture_only = 1, 1035 1035 .ops = &mtk_soundcard_common_capture_ops, 1036 1036 SND_SOC_DAILINK_REG(UL4_FE), 1037 1037 }, ··· 1043 1043 SND_SOC_DPCM_TRIGGER_POST, 1044 1044 }, 1045 1045 .dynamic = 1, 1046 - .dpcm_capture = 1, 1046 + .capture_only = 1, 1047 1047 .ops = &mtk_soundcard_common_capture_ops, 1048 1048 SND_SOC_DAILINK_REG(UL5_FE), 1049 1049 }, ··· 1055 1055 SND_SOC_DPCM_TRIGGER_PRE, 1056 1056 }, 1057 1057 .dynamic = 1, 1058 - .dpcm_capture = 1, 1058 + .capture_only = 1, 1059 1059 SND_SOC_DAILINK_REG(UL6_FE), 1060 1060 }, 1061 1061 [DAI_LINK_UL8_FE] = { ··· 1066 1066 SND_SOC_DPCM_TRIGGER_POST, 1067 1067 }, 1068 1068 .dynamic = 1, 1069 - .dpcm_capture = 1, 1069 + .capture_only = 1, 1070 1070 .ops = &mtk_soundcard_common_capture_ops, 1071 1071 SND_SOC_DAILINK_REG(UL8_FE), 1072 1072 }, ··· 1078 1078 SND_SOC_DPCM_TRIGGER_POST, 1079 1079 }, 1080 1080 .dynamic = 1, 1081 - .dpcm_capture = 1, 1081 + .capture_only = 1, 1082 1082 .ops = &mtk_soundcard_common_capture_ops, 1083 1083 SND_SOC_DAILINK_REG(UL9_FE), 1084 1084 }, ··· 1090 1090 SND_SOC_DPCM_TRIGGER_POST, 1091 1091 }, 1092 1092 .dynamic = 1, 1093 - .dpcm_capture = 1, 1093 + .capture_only = 1, 1094 1094 .ops = &mtk_soundcard_common_capture_ops, 1095 1095 SND_SOC_DAILINK_REG(UL10_FE), 1096 1096 }, ··· 1098 1098 [DAI_LINK_DL_SRC_BE] = { 1099 1099 .name = "DL_SRC_BE", 1100 1100 .no_pcm = 1, 1101 - .dpcm_playback = 1, 1101 + .playback_only = 1, 1102 1102 SND_SOC_DAILINK_REG(DL_SRC_BE), 1103 1103 }, 1104 1104 [DAI_LINK_DPTX_BE] = { 1105 1105 .name = "DPTX_BE", 1106 1106 .no_pcm = 1, 1107 - .dpcm_playback = 1, 1107 + .playback_only = 1, 1108 1108 .ops = &mt8195_dptx_ops, 1109 1109 .be_hw_params_fixup = mt8195_dptx_hw_params_fixup, 1110 1110 SND_SOC_DAILINK_REG(DPTX_BE), ··· 1115 1115 .dai_fmt = SND_SOC_DAIFMT_I2S | 1116 1116 SND_SOC_DAIFMT_NB_NF | 1117 1117 SND_SOC_DAIFMT_CBS_CFS, 1118 - .dpcm_capture = 1, 1118 + .capture_only = 1, 1119 1119 SND_SOC_DAILINK_REG(ETDM1_IN_BE), 1120 1120 }, 1121 1121 [DAI_LINK_ETDM2_IN_BE] = { ··· 1124 1124 .dai_fmt = SND_SOC_DAIFMT_I2S | 1125 1125 SND_SOC_DAIFMT_NB_NF | 1126 1126 SND_SOC_DAIFMT_CBS_CFS, 1127 - .dpcm_capture = 1, 1127 + .capture_only = 1, 1128 1128 .be_hw_params_fixup = mt8195_etdm_hw_params_fixup, 1129 1129 SND_SOC_DAILINK_REG(ETDM2_IN_BE), 1130 1130 }, ··· 1134 1134 .dai_fmt = SND_SOC_DAIFMT_I2S | 1135 1135 SND_SOC_DAIFMT_NB_NF | 1136 1136 SND_SOC_DAIFMT_CBS_CFS, 1137 - .dpcm_playback = 1, 1137 + .playback_only = 1, 1138 1138 .be_hw_params_fixup = mt8195_etdm_hw_params_fixup, 1139 1139 SND_SOC_DAILINK_REG(ETDM1_OUT_BE), 1140 1140 }, ··· 1144 1144 .dai_fmt = SND_SOC_DAIFMT_I2S | 1145 1145 SND_SOC_DAIFMT_NB_NF | 1146 1146 SND_SOC_DAIFMT_CBS_CFS, 1147 - .dpcm_playback = 1, 1147 + .playback_only = 1, 1148 1148 SND_SOC_DAILINK_REG(ETDM2_OUT_BE), 1149 1149 }, 1150 1150 [DAI_LINK_ETDM3_OUT_BE] = { ··· 1153 1153 .dai_fmt = SND_SOC_DAIFMT_I2S | 1154 1154 SND_SOC_DAIFMT_NB_NF | 1155 1155 SND_SOC_DAIFMT_CBS_CFS, 1156 - .dpcm_playback = 1, 1156 + .playback_only = 1, 1157 1157 SND_SOC_DAILINK_REG(ETDM3_OUT_BE), 1158 1158 }, 1159 1159 [DAI_LINK_PCM1_BE] = { ··· 1162 1162 .dai_fmt = SND_SOC_DAIFMT_I2S | 1163 1163 SND_SOC_DAIFMT_NB_NF | 1164 1164 SND_SOC_DAIFMT_CBS_CFS, 1165 - .dpcm_playback = 1, 1166 - .dpcm_capture = 1, 1167 1165 SND_SOC_DAILINK_REG(PCM1_BE), 1168 1166 }, 1169 1167 [DAI_LINK_UL_SRC1_BE] = { 1170 1168 .name = "UL_SRC1_BE", 1171 1169 .no_pcm = 1, 1172 - .dpcm_capture = 1, 1170 + .capture_only = 1, 1173 1171 SND_SOC_DAILINK_REG(UL_SRC1_BE), 1174 1172 }, 1175 1173 [DAI_LINK_UL_SRC2_BE] = { 1176 1174 .name = "UL_SRC2_BE", 1177 1175 .no_pcm = 1, 1178 - .dpcm_capture = 1, 1176 + .capture_only = 1, 1179 1177 SND_SOC_DAILINK_REG(UL_SRC2_BE), 1180 1178 }, 1181 1179 /* SOF BE */ 1182 1180 [DAI_LINK_SOF_DL2_BE] = { 1183 1181 .name = "AFE_SOF_DL2", 1184 1182 .no_pcm = 1, 1185 - .dpcm_playback = 1, 1183 + .playback_only = 1, 1186 1184 .ops = &mt8195_sof_be_ops, 1187 1185 SND_SOC_DAILINK_REG(AFE_SOF_DL2), 1188 1186 }, 1189 1187 [DAI_LINK_SOF_DL3_BE] = { 1190 1188 .name = "AFE_SOF_DL3", 1191 1189 .no_pcm = 1, 1192 - .dpcm_playback = 1, 1190 + .playback_only = 1, 1193 1191 .ops = &mt8195_sof_be_ops, 1194 1192 SND_SOC_DAILINK_REG(AFE_SOF_DL3), 1195 1193 }, 1196 1194 [DAI_LINK_SOF_UL4_BE] = { 1197 1195 .name = "AFE_SOF_UL4", 1198 1196 .no_pcm = 1, 1199 - .dpcm_capture = 1, 1197 + .capture_only = 1, 1200 1198 .ops = &mt8195_sof_be_ops, 1201 1199 SND_SOC_DAILINK_REG(AFE_SOF_UL4), 1202 1200 }, 1203 1201 [DAI_LINK_SOF_UL5_BE] = { 1204 1202 .name = "AFE_SOF_UL5", 1205 1203 .no_pcm = 1, 1206 - .dpcm_capture = 1, 1204 + .capture_only = 1, 1207 1205 .ops = &mt8195_sof_be_ops, 1208 1206 SND_SOC_DAILINK_REG(AFE_SOF_UL5), 1209 1207 },
+5 -9
sound/soc/mediatek/mt8365/mt8365-mt6357.c
··· 168 168 SND_SOC_DPCM_TRIGGER_POST 169 169 }, 170 170 .dynamic = 1, 171 - .dpcm_playback = 1, 171 + .playback_only = 1, 172 172 .dpcm_merged_rate = 1, 173 173 SND_SOC_DAILINK_REG(playback1), 174 174 }, ··· 181 181 SND_SOC_DPCM_TRIGGER_POST 182 182 }, 183 183 .dynamic = 1, 184 - .dpcm_playback = 1, 184 + .playback_only = 1, 185 185 .dpcm_merged_rate = 1, 186 186 SND_SOC_DAILINK_REG(playback2), 187 187 }, ··· 194 194 SND_SOC_DPCM_TRIGGER_POST 195 195 }, 196 196 .dynamic = 1, 197 - .dpcm_capture = 1, 197 + .capture_only = 1, 198 198 .dpcm_merged_rate = 1, 199 199 SND_SOC_DAILINK_REG(awb_capture), 200 200 }, ··· 207 207 SND_SOC_DPCM_TRIGGER_POST 208 208 }, 209 209 .dynamic = 1, 210 - .dpcm_capture = 1, 210 + .capture_only = 1, 211 211 .dpcm_merged_rate = 1, 212 212 SND_SOC_DAILINK_REG(vul), 213 213 }, ··· 219 219 .dai_fmt = SND_SOC_DAIFMT_I2S | 220 220 SND_SOC_DAIFMT_NB_NF | 221 221 SND_SOC_DAIFMT_CBS_CFS, 222 - .dpcm_playback = 1, 223 - .dpcm_capture = 1, 224 222 SND_SOC_DAILINK_REG(i2s3), 225 223 }, 226 224 [DAI_LINK_DMIC] = { 227 225 .name = "DMIC_BE", 228 226 .no_pcm = 1, 229 227 .id = DAI_LINK_DMIC, 230 - .dpcm_capture = 1, 228 + .capture_only = 1, 231 229 SND_SOC_DAILINK_REG(dmic), 232 230 }, 233 231 [DAI_LINK_INT_ADDA] = { 234 232 .name = "MTK_Codec", 235 233 .no_pcm = 1, 236 234 .id = DAI_LINK_INT_ADDA, 237 - .dpcm_playback = 1, 238 - .dpcm_capture = 1, 239 235 .ops = &mt8365_mt6357_int_adda_ops, 240 236 SND_SOC_DAILINK_REG(primary_codec), 241 237 },
+5 -6
sound/soc/samsung/odroid.c
··· 171 171 .name = "Primary", 172 172 .stream_name = "Primary", 173 173 .dynamic = 1, 174 - .dpcm_playback = 1, 174 + .playback_only = 1, 175 175 SND_SOC_DAILINK_REG(primary), 176 176 }, { 177 177 /* BE <-> CODECs link */ 178 178 .name = "I2S Mixer", 179 179 .ops = &odroid_card_be_ops, 180 180 .no_pcm = 1, 181 - .dpcm_playback = 1, 181 + .playback_only = 1, 182 182 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | 183 183 SND_SOC_DAIFMT_CBS_CFS, 184 184 SND_SOC_DAILINK_REG(mixer), 185 185 }, { 186 186 /* Secondary FE <-> BE link */ 187 - .playback_only = 1, 188 187 .ops = &odroid_card_fe_ops, 189 188 .name = "Secondary", 190 189 .stream_name = "Secondary", 191 190 .dynamic = 1, 192 - .dpcm_playback = 1, 191 + .playback_only = 1, 193 192 SND_SOC_DAILINK_REG(secondary), 194 193 } 195 194 }; ··· 277 278 278 279 /* Set capture capability only for boards with the MAX98090 CODEC */ 279 280 if (codec_link->num_codecs > 1) { 280 - card->dai_link[0].dpcm_capture = 1; 281 - card->dai_link[1].dpcm_capture = 1; 281 + card->dai_link[0].playback_only = 0; 282 + card->dai_link[1].playback_only = 0; 282 283 } 283 284 284 285 priv->sclk_i2s = of_clk_get_by_name(cpu_dai, "i2s_opclk1");
+11 -4
sound/soc/soc-compress.c
··· 606 606 return -ENOMEM; 607 607 608 608 if (rtd->dai_link->dynamic) { 609 + int playback = 1; 610 + int capture = 1; 611 + 612 + if (rtd->dai_link->capture_only) 613 + playback = 0; 614 + if (rtd->dai_link->playback_only) 615 + capture = 0; 616 + 609 617 snprintf(new_name, sizeof(new_name), "(%s)", 610 618 rtd->dai_link->stream_name); 611 619 612 620 ret = snd_pcm_new_internal(rtd->card->snd_card, new_name, num, 613 - rtd->dai_link->dpcm_playback, 614 - rtd->dai_link->dpcm_capture, &be_pcm); 621 + playback, capture, &be_pcm); 615 622 if (ret < 0) { 616 623 dev_err(rtd->card->dev, 617 624 "Compress ASoC: can't create compressed for %s: %d\n", ··· 631 624 632 625 rtd->pcm = be_pcm; 633 626 rtd->fe_compr = 1; 634 - if (rtd->dai_link->dpcm_playback) 627 + if (playback) 635 628 be_pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream->private_data = rtd; 636 - if (rtd->dai_link->dpcm_capture) 629 + if (capture) 637 630 be_pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream->private_data = rtd; 638 631 memcpy(compr->ops, &soc_compr_dyn_ops, sizeof(soc_compr_dyn_ops)); 639 632 } else {
+1 -19
sound/soc/soc-core.c
··· 1999 1999 dai_link->platforms->name = component->name; 2000 2000 2001 2001 /* convert non BE into BE */ 2002 - if (!dai_link->no_pcm) { 2003 - dai_link->no_pcm = 1; 2004 - 2005 - if (dai_link->dpcm_playback) 2006 - dev_warn(card->dev, 2007 - "invalid configuration, dailink %s has flags no_pcm=0 and dpcm_playback=1\n", 2008 - dai_link->name); 2009 - if (dai_link->dpcm_capture) 2010 - dev_warn(card->dev, 2011 - "invalid configuration, dailink %s has flags no_pcm=0 and dpcm_capture=1\n", 2012 - dai_link->name); 2013 - 2014 - /* convert normal link into DPCM one */ 2015 - if (!(dai_link->dpcm_playback || 2016 - dai_link->dpcm_capture)) { 2017 - dai_link->dpcm_playback = !dai_link->capture_only; 2018 - dai_link->dpcm_capture = !dai_link->playback_only; 2019 - } 2020 - } 2002 + dai_link->no_pcm = 1; 2021 2003 2022 2004 /* 2023 2005 * override any BE fixups
+30 -61
sound/soc/soc-pcm.c
··· 2822 2822 { 2823 2823 struct snd_soc_dai_link *dai_link = rtd->dai_link; 2824 2824 struct snd_soc_dai *cpu_dai; 2825 + struct snd_soc_dai *codec_dai; 2825 2826 struct snd_soc_dai_link_ch_map *ch_maps; 2827 + struct snd_soc_dai *dummy_dai = snd_soc_find_dai(&snd_soc_dummy_dlc); 2828 + int cpu_capture; 2829 + int cpu_playback; 2826 2830 int has_playback = 0; 2827 2831 int has_capture = 0; 2828 2832 int i; ··· 2836 2832 return -EINVAL; 2837 2833 } 2838 2834 2839 - if (dai_link->dynamic || dai_link->no_pcm) { 2835 + /* Adapt stream for codec2codec links */ 2836 + cpu_capture = snd_soc_get_stream_cpu(dai_link, SNDRV_PCM_STREAM_CAPTURE); 2837 + cpu_playback = snd_soc_get_stream_cpu(dai_link, SNDRV_PCM_STREAM_PLAYBACK); 2840 2838 2841 - for_each_rtd_ch_maps(rtd, i, ch_maps) { 2842 - cpu_dai = snd_soc_rtd_to_cpu(rtd, ch_maps->cpu); 2843 - 2844 - if (snd_soc_dai_stream_valid(cpu_dai, SNDRV_PCM_STREAM_PLAYBACK)) 2845 - has_playback = 1; 2846 - 2847 - if (snd_soc_dai_stream_valid(cpu_dai, SNDRV_PCM_STREAM_CAPTURE)) 2848 - has_capture = 1; 2849 - } 2839 + /* 2840 + * see 2841 + * soc.h :: [dai_link->ch_maps Image sample] 2842 + */ 2843 + for_each_rtd_ch_maps(rtd, i, ch_maps) { 2844 + cpu_dai = snd_soc_rtd_to_cpu(rtd, ch_maps->cpu); 2845 + codec_dai = snd_soc_rtd_to_codec(rtd, ch_maps->codec); 2850 2846 2851 2847 /* 2852 - * REMOVE ME 2848 + * FIXME 2853 2849 * 2854 - * dpcm_xxx flag will be removed soon, Indicates warning if dpcm_xxx flag was used 2855 - * as availability limitation 2850 + * DPCM Codec has been no checked before. 2851 + * It should be checked, but it breaks compatibility. 2852 + * 2853 + * For example there is a case that CPU have loopback capabilities which is used 2854 + * for tests on boards where the Codec has no capture capabilities. In this case, 2855 + * Codec capture validation check will be fail, but system should allow capture 2856 + * capabilities. We have no solution for it today. 2856 2857 */ 2857 - if (has_playback && has_capture) { 2858 - if ( dai_link->dpcm_playback && 2859 - !dai_link->dpcm_capture && 2860 - !dai_link->playback_only) { 2861 - dev_warn(rtd->card->dev, 2862 - "both playback/capture are available," 2863 - " but not using playback_only flag (%s)\n", 2864 - dai_link->stream_name); 2865 - dev_warn(rtd->card->dev, 2866 - "dpcm_playback/capture are no longer needed," 2867 - " please use playback/capture_only instead\n"); 2868 - has_capture = 0; 2869 - } 2858 + if (dai_link->dynamic || dai_link->no_pcm) 2859 + codec_dai = dummy_dai; 2870 2860 2871 - if (!dai_link->dpcm_playback && 2872 - dai_link->dpcm_capture && 2873 - !dai_link->capture_only) { 2874 - dev_warn(rtd->card->dev, 2875 - "both playback/capture are available," 2876 - " but not using capture_only flag (%s)\n", 2877 - dai_link->stream_name); 2878 - dev_warn(rtd->card->dev, 2879 - "dpcm_playback/capture are no longer needed," 2880 - " please use playback/capture_only instead\n"); 2881 - has_playback = 0; 2882 - } 2883 - } 2884 - } else { 2885 - struct snd_soc_dai *codec_dai; 2886 - 2887 - /* Adapt stream for codec2codec links */ 2888 - int cpu_capture = snd_soc_get_stream_cpu(dai_link, SNDRV_PCM_STREAM_CAPTURE); 2889 - int cpu_playback = snd_soc_get_stream_cpu(dai_link, SNDRV_PCM_STREAM_PLAYBACK); 2890 - 2891 - /* 2892 - * see 2893 - * soc.h :: [dai_link->ch_maps Image sample] 2894 - */ 2895 - for_each_rtd_ch_maps(rtd, i, ch_maps) { 2896 - cpu_dai = snd_soc_rtd_to_cpu(rtd, ch_maps->cpu); 2897 - codec_dai = snd_soc_rtd_to_codec(rtd, ch_maps->codec); 2898 - 2899 - if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_PLAYBACK) && 2900 - snd_soc_dai_stream_valid(cpu_dai, cpu_playback)) 2901 - has_playback = 1; 2902 - if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_CAPTURE) && 2903 - snd_soc_dai_stream_valid(cpu_dai, cpu_capture)) 2904 - has_capture = 1; 2905 - } 2861 + if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_PLAYBACK) && 2862 + snd_soc_dai_stream_valid(cpu_dai, cpu_playback)) 2863 + has_playback = 1; 2864 + if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_CAPTURE) && 2865 + snd_soc_dai_stream_valid(cpu_dai, cpu_capture)) 2866 + has_capture = 1; 2906 2867 } 2907 2868 2908 2869 if (dai_link->playback_only)
-2
sound/soc/soc-topology-test.c
··· 88 88 .nonatomic = 1, 89 89 .dynamic = 1, 90 90 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, 91 - .dpcm_playback = 1, 92 - .dpcm_capture = 1, 93 91 SND_SOC_DAILINK_REG(dummy, dummy, platform), 94 92 }, 95 93 };
+2 -2
sound/soc/soc-topology.c
··· 1544 1544 /* enable DPCM */ 1545 1545 link->dynamic = 1; 1546 1546 link->ignore_pmdown_time = 1; 1547 - link->dpcm_playback = le32_to_cpu(pcm->playback); 1548 - link->dpcm_capture = le32_to_cpu(pcm->capture); 1547 + link->playback_only = le32_to_cpu(pcm->playback) && !le32_to_cpu(pcm->capture); 1548 + link->capture_only = !le32_to_cpu(pcm->playback) && le32_to_cpu(pcm->capture); 1549 1549 if (pcm->flag_mask) 1550 1550 set_link_flags(link, 1551 1551 le32_to_cpu(pcm->flag_mask),
+3 -4
sound/soc/sof/nocodec.c
··· 55 55 links[i].no_pcm = 1; 56 56 links[i].cpus->dai_name = drv[i].name; 57 57 links[i].platforms->name = dev_name(dev->parent); 58 - if (drv[i].playback.channels_min) 59 - links[i].dpcm_playback = 1; 60 - if (drv[i].capture.channels_min) 61 - links[i].dpcm_capture = 1; 58 + 59 + links[i].playback_only = drv[i].playback.channels_min && !drv[i].capture.channels_min; 60 + links[i].capture_only = !drv[i].playback.channels_min && drv[i].capture.channels_min; 62 61 63 62 links[i].be_hw_params_fixup = sof_pcm_dai_link_fixup; 64 63 }