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

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: Intel: Add matches for Cirrus Logic CDB35L56

Merge series from Bard Liao <yung-chuan.liao@linux.intel.com>:

This series adds TGL and MTL matches for configurations using the
Cirrus Logic CDB35L56-EIGHT-C board.

+407
+213
sound/soc/intel/common/soc-acpi-intel-mtl-match.c
··· 441 441 } 442 442 }; 443 443 444 + /* CS42L43 - speaker DAI aggregated with 4 amps */ 445 + static const struct snd_soc_acpi_endpoint cs42l43_4amp_spkagg_endpoints[] = { 446 + { /* Jack Playback Endpoint */ 447 + .num = 0, 448 + .aggregated = 0, 449 + .group_position = 0, 450 + .group_id = 0, 451 + }, 452 + { /* DMIC Capture Endpoint */ 453 + .num = 1, 454 + .aggregated = 0, 455 + .group_position = 0, 456 + .group_id = 0, 457 + }, 458 + { /* Jack Capture Endpoint */ 459 + .num = 2, 460 + .aggregated = 0, 461 + .group_position = 0, 462 + .group_id = 0, 463 + }, 464 + { /* Speaker Playback Endpoint */ 465 + .num = 3, 466 + .aggregated = 1, 467 + .group_position = 4, 468 + .group_id = 1, 469 + }, 470 + }; 471 + 472 + /* CS42L43 on link3 aggregated with 4 amps */ 473 + static const struct snd_soc_acpi_adr_device cs42l43_l3_4amp_spkagg_adr[] = { 474 + { 475 + .adr = 0x00033001FA424301ull, 476 + .num_endpoints = ARRAY_SIZE(cs42l43_4amp_spkagg_endpoints), 477 + .endpoints = cs42l43_4amp_spkagg_endpoints, 478 + .name_prefix = "cs42l43" 479 + } 480 + }; 481 + 444 482 static const struct snd_soc_acpi_endpoint cs35l56_l_fb_endpoints[] = { 445 483 { /* Speaker Playback Endpoint */ 446 484 .num = 0, ··· 539 501 }, 540 502 }; 541 503 504 + static const struct snd_soc_acpi_endpoint cs35l56_4_fb_endpoints[] = { 505 + { /* Speaker Playback Endpoint */ 506 + .num = 0, 507 + .aggregated = 1, 508 + .group_position = 4, 509 + .group_id = 1, 510 + }, 511 + { /* Feedback Capture Endpoint */ 512 + .num = 1, 513 + .aggregated = 1, 514 + .group_position = 4, 515 + .group_id = 2, 516 + }, 517 + }; 518 + 519 + static const struct snd_soc_acpi_endpoint cs35l56_5_fb_endpoints[] = { 520 + { /* Speaker Playback Endpoint */ 521 + .num = 0, 522 + .aggregated = 1, 523 + .group_position = 5, 524 + .group_id = 1, 525 + }, 526 + { /* Feedback Capture Endpoint */ 527 + .num = 1, 528 + .aggregated = 1, 529 + .group_position = 5, 530 + .group_id = 2, 531 + }, 532 + }; 533 + 534 + static const struct snd_soc_acpi_endpoint cs35l56_6_fb_endpoints[] = { 535 + { /* Speaker Playback Endpoint */ 536 + .num = 0, 537 + .aggregated = 1, 538 + .group_position = 6, 539 + .group_id = 1, 540 + }, 541 + { /* Feedback Capture Endpoint */ 542 + .num = 1, 543 + .aggregated = 1, 544 + .group_position = 6, 545 + .group_id = 2, 546 + }, 547 + }; 548 + 549 + static const struct snd_soc_acpi_endpoint cs35l56_7_fb_endpoints[] = { 550 + { /* Speaker Playback Endpoint */ 551 + .num = 0, 552 + .aggregated = 1, 553 + .group_position = 7, 554 + .group_id = 1, 555 + }, 556 + { /* Feedback Capture Endpoint */ 557 + .num = 1, 558 + .aggregated = 1, 559 + .group_position = 7, 560 + .group_id = 2, 561 + }, 562 + }; 563 + 564 + static const struct snd_soc_acpi_adr_device cs35l56_0_adr[] = { 565 + { 566 + .adr = 0x00003301FA355601ull, 567 + .num_endpoints = 1, 568 + .endpoints = &spk_l_endpoint, 569 + .name_prefix = "AMP1" 570 + }, 571 + { 572 + .adr = 0x00003201FA355601ull, 573 + .num_endpoints = 1, 574 + .endpoints = &spk_2_endpoint, 575 + .name_prefix = "AMP2" 576 + } 577 + }; 578 + 542 579 static const struct snd_soc_acpi_adr_device cs35l56_1_adr[] = { 543 580 { 544 581 .adr = 0x00013701FA355601ull, ··· 642 529 .endpoints = &spk_2_endpoint, 643 530 .name_prefix = "AMP2" 644 531 } 532 + }; 533 + 534 + static const struct snd_soc_acpi_adr_device cs35l56_0_fb_adr[] = { 535 + { 536 + .adr = 0x00003301FA355601ull, 537 + .num_endpoints = ARRAY_SIZE(cs35l56_l_fb_endpoints), 538 + .endpoints = cs35l56_l_fb_endpoints, 539 + .name_prefix = "AMP1" 540 + }, 541 + { 542 + .adr = 0x00003201FA355601ull, 543 + .num_endpoints = ARRAY_SIZE(cs35l56_2_fb_endpoints), 544 + .endpoints = cs35l56_2_fb_endpoints, 545 + .name_prefix = "AMP2" 546 + }, 547 + { 548 + .adr = 0x00003101FA355601ull, 549 + .num_endpoints = ARRAY_SIZE(cs35l56_4_fb_endpoints), 550 + .endpoints = cs35l56_4_fb_endpoints, 551 + .name_prefix = "AMP3" 552 + }, 553 + { 554 + .adr = 0x00003001FA355601ull, 555 + .num_endpoints = ARRAY_SIZE(cs35l56_6_fb_endpoints), 556 + .endpoints = cs35l56_6_fb_endpoints, 557 + .name_prefix = "AMP4" 558 + }, 559 + }; 560 + 561 + static const struct snd_soc_acpi_adr_device cs35l56_1_fb_adr[] = { 562 + { 563 + .adr = 0x00013701FA355601ull, 564 + .num_endpoints = ARRAY_SIZE(cs35l56_r_fb_endpoints), 565 + .endpoints = cs35l56_r_fb_endpoints, 566 + .name_prefix = "AMP8" 567 + }, 568 + { 569 + .adr = 0x00013601FA355601ull, 570 + .num_endpoints = ARRAY_SIZE(cs35l56_3_fb_endpoints), 571 + .endpoints = cs35l56_3_fb_endpoints, 572 + .name_prefix = "AMP7" 573 + }, 574 + { 575 + .adr = 0x00013501FA355601ull, 576 + .num_endpoints = ARRAY_SIZE(cs35l56_5_fb_endpoints), 577 + .endpoints = cs35l56_5_fb_endpoints, 578 + .name_prefix = "AMP6" 579 + }, 580 + { 581 + .adr = 0x00013401FA355601ull, 582 + .num_endpoints = ARRAY_SIZE(cs35l56_7_fb_endpoints), 583 + .endpoints = cs35l56_7_fb_endpoints, 584 + .name_prefix = "AMP5" 585 + }, 645 586 }; 646 587 647 588 static const struct snd_soc_acpi_adr_device cs35l56_2_r_adr[] = { ··· 992 825 {} 993 826 }; 994 827 828 + static const struct snd_soc_acpi_link_adr cs42l43_link3_cs35l56_x4_link0_link1_spkagg[] = { 829 + /* Expected order: jack -> amp */ 830 + { 831 + .mask = BIT(3), 832 + .num_adr = ARRAY_SIZE(cs42l43_l3_4amp_spkagg_adr), 833 + .adr_d = cs42l43_l3_4amp_spkagg_adr, 834 + }, 835 + { 836 + .mask = BIT(1), 837 + .num_adr = 2, 838 + .adr_d = cs35l56_1_adr, 839 + }, 840 + { 841 + .mask = BIT(0), 842 + .num_adr = 2, 843 + .adr_d = cs35l56_0_adr, 844 + }, 845 + {} 846 + }; 847 + 848 + static const struct snd_soc_acpi_link_adr mtl_cs35l56_x8_link0_link1_fb[] = { 849 + { 850 + .mask = BIT(1), 851 + .num_adr = ARRAY_SIZE(cs35l56_1_fb_adr), 852 + .adr_d = cs35l56_1_fb_adr, 853 + }, 854 + { 855 + .mask = BIT(0), 856 + .num_adr = ARRAY_SIZE(cs35l56_0_fb_adr), 857 + .adr_d = cs35l56_0_fb_adr, 858 + }, 859 + {} 860 + }; 861 + 995 862 /* this table is used when there is no I2S codec present */ 996 863 struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = { 997 864 /* mockup tests need to be first */ ··· 1103 902 .sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l23.tplg", 1104 903 }, 1105 904 { 905 + .link_mask = BIT(0) | BIT(1) | BIT(3), 906 + .links = cs42l43_link3_cs35l56_x4_link0_link1_spkagg, 907 + .drv_name = "sof_sdw", 908 + .sof_tplg_filename = "sof-mtl-cs42l43-l3-cs35l56-l01-spkagg.tplg", 909 + }, 910 + { 1106 911 .link_mask = GENMASK(2, 0), 1107 912 .links = mtl_cs42l43_cs35l56, 1108 913 .drv_name = "sof_sdw", 1109 914 .sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l12.tplg", 915 + }, 916 + { 917 + .link_mask = BIT(0) | BIT(1), 918 + .links = mtl_cs35l56_x8_link0_link1_fb, 919 + .drv_name = "sof_sdw", 920 + .sof_tplg_filename = "sof-mtl-cs35l56-l01-fb8.tplg" 1110 921 }, 1111 922 { 1112 923 .link_mask = BIT(0),
+194
sound/soc/intel/common/soc-acpi-intel-tgl-match.c
··· 536 536 }; 537 537 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_tgl_machines); 538 538 539 + static const struct snd_soc_acpi_endpoint cs35l56_l_fb_endpoints[] = { 540 + { /* Speaker Playback Endpoint */ 541 + .num = 0, 542 + .aggregated = 1, 543 + .group_position = 0, 544 + .group_id = 1, 545 + }, 546 + { /* Feedback Capture Endpoint */ 547 + .num = 1, 548 + .aggregated = 1, 549 + .group_position = 0, 550 + .group_id = 2, 551 + }, 552 + }; 553 + 554 + static const struct snd_soc_acpi_endpoint cs35l56_r_fb_endpoints[] = { 555 + { /* Speaker Playback Endpoint */ 556 + .num = 0, 557 + .aggregated = 1, 558 + .group_position = 1, 559 + .group_id = 1, 560 + }, 561 + { /* Feedback Capture Endpoint */ 562 + .num = 1, 563 + .aggregated = 1, 564 + .group_position = 1, 565 + .group_id = 2, 566 + }, 567 + }; 568 + 569 + static const struct snd_soc_acpi_endpoint cs35l56_2_fb_endpoints[] = { 570 + { /* Speaker Playback Endpoint */ 571 + .num = 0, 572 + .aggregated = 1, 573 + .group_position = 2, 574 + .group_id = 1, 575 + }, 576 + { /* Feedback Capture Endpoint */ 577 + .num = 1, 578 + .aggregated = 1, 579 + .group_position = 2, 580 + .group_id = 2, 581 + }, 582 + }; 583 + 584 + static const struct snd_soc_acpi_endpoint cs35l56_3_fb_endpoints[] = { 585 + { /* Speaker Playback Endpoint */ 586 + .num = 0, 587 + .aggregated = 1, 588 + .group_position = 3, 589 + .group_id = 1, 590 + }, 591 + { /* Feedback Capture Endpoint */ 592 + .num = 1, 593 + .aggregated = 1, 594 + .group_position = 3, 595 + .group_id = 2, 596 + }, 597 + }; 598 + 599 + static const struct snd_soc_acpi_endpoint cs35l56_4_fb_endpoints[] = { 600 + { /* Speaker Playback Endpoint */ 601 + .num = 0, 602 + .aggregated = 1, 603 + .group_position = 4, 604 + .group_id = 1, 605 + }, 606 + { /* Feedback Capture Endpoint */ 607 + .num = 1, 608 + .aggregated = 1, 609 + .group_position = 4, 610 + .group_id = 2, 611 + } 612 + }; 613 + 614 + static const struct snd_soc_acpi_endpoint cs35l56_5_fb_endpoints[] = { 615 + { /* Speaker Playback Endpoint */ 616 + .num = 0, 617 + .aggregated = 1, 618 + .group_position = 5, 619 + .group_id = 1, 620 + }, 621 + { /* Feedback Capture Endpoint */ 622 + .num = 1, 623 + .aggregated = 1, 624 + .group_position = 5, 625 + .group_id = 2, 626 + } 627 + }; 628 + 629 + static const struct snd_soc_acpi_endpoint cs35l56_6_fb_endpoints[] = { 630 + { /* Speaker Playback Endpoint */ 631 + .num = 0, 632 + .aggregated = 1, 633 + .group_position = 6, 634 + .group_id = 1, 635 + }, 636 + { /* Feedback Capture Endpoint */ 637 + .num = 1, 638 + .aggregated = 1, 639 + .group_position = 6, 640 + .group_id = 2, 641 + } 642 + }; 643 + 644 + static const struct snd_soc_acpi_endpoint cs35l56_7_fb_endpoints[] = { 645 + { /* Speaker Playback Endpoint */ 646 + .num = 0, 647 + .aggregated = 1, 648 + .group_position = 7, 649 + .group_id = 1, 650 + }, 651 + { /* Feedback Capture Endpoint */ 652 + .num = 1, 653 + .aggregated = 1, 654 + .group_position = 7, 655 + .group_id = 2, 656 + } 657 + }; 658 + 659 + static const struct snd_soc_acpi_adr_device cs35l56_sdw_eight_1_4_fb_adr[] = { 660 + { 661 + .adr = 0x00003301fa355601, 662 + .num_endpoints = ARRAY_SIZE(cs35l56_l_fb_endpoints), 663 + .endpoints = cs35l56_l_fb_endpoints, 664 + .name_prefix = "AMP1" 665 + }, 666 + { 667 + .adr = 0x00003201fa355601, 668 + .num_endpoints = ARRAY_SIZE(cs35l56_2_fb_endpoints), 669 + .endpoints = cs35l56_2_fb_endpoints, 670 + .name_prefix = "AMP2" 671 + }, 672 + { 673 + .adr = 0x00003101fa355601, 674 + .num_endpoints = ARRAY_SIZE(cs35l56_4_fb_endpoints), 675 + .endpoints = cs35l56_4_fb_endpoints, 676 + .name_prefix = "AMP3" 677 + }, 678 + { 679 + .adr = 0x00003001fa355601, 680 + .num_endpoints = ARRAY_SIZE(cs35l56_6_fb_endpoints), 681 + .endpoints = cs35l56_6_fb_endpoints, 682 + .name_prefix = "AMP4" 683 + }, 684 + }; 685 + 686 + static const struct snd_soc_acpi_adr_device cs35l56_sdw_eight_5_8_fb_adr[] = { 687 + { 688 + .adr = 0x00013701fa355601, 689 + .num_endpoints = ARRAY_SIZE(cs35l56_r_fb_endpoints), 690 + .endpoints = cs35l56_r_fb_endpoints, 691 + .name_prefix = "AMP8" 692 + }, 693 + { 694 + .adr = 0x00013601fa355601, 695 + .num_endpoints = ARRAY_SIZE(cs35l56_3_fb_endpoints), 696 + .endpoints = cs35l56_3_fb_endpoints, 697 + .name_prefix = "AMP7" 698 + }, 699 + { 700 + .adr = 0x00013501fa355601, 701 + .num_endpoints = ARRAY_SIZE(cs35l56_5_fb_endpoints), 702 + .endpoints = cs35l56_5_fb_endpoints, 703 + .name_prefix = "AMP6" 704 + }, 705 + { 706 + .adr = 0x00013401fa355601, 707 + .num_endpoints = ARRAY_SIZE(cs35l56_7_fb_endpoints), 708 + .endpoints = cs35l56_7_fb_endpoints, 709 + .name_prefix = "AMP5" 710 + }, 711 + }; 712 + 713 + static const struct snd_soc_acpi_link_adr up_extreme_cs35l56_sdw_eight[] = { 714 + { 715 + .mask = BIT(1), 716 + .num_adr = ARRAY_SIZE(cs35l56_sdw_eight_5_8_fb_adr), 717 + .adr_d = cs35l56_sdw_eight_5_8_fb_adr, 718 + }, 719 + { 720 + .mask = BIT(0), 721 + .num_adr = ARRAY_SIZE(cs35l56_sdw_eight_1_4_fb_adr), 722 + .adr_d = cs35l56_sdw_eight_1_4_fb_adr, 723 + }, 724 + {} 725 + }; 726 + 539 727 /* this table is used when there is no I2S codec present */ 540 728 struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_sdw_machines[] = { 541 729 /* mockup tests need to be first */ ··· 822 634 .links = tgl_rvp_headset_only, 823 635 .drv_name = "sof_sdw", 824 636 .sof_tplg_filename = "sof-tgl-rt711.tplg", 637 + }, 638 + { 639 + .link_mask = BIT(0) | BIT(1), 640 + .links = up_extreme_cs35l56_sdw_eight, 641 + .drv_name = "sof_sdw", 642 + .sof_tplg_filename = "sof-tgl-cs35l56-l01-fb8.tplg" 825 643 }, 826 644 {}, 827 645 };