@@ -539,6 +539,66 @@ static const struct snd_soc_acpi_endpoint cs35l56_3_fb_endpoints[] = {
539539 },
540540};
541541
542+ static const struct snd_soc_acpi_endpoint cs35l56_4_fb_endpoints [] = {
543+ { /* Speaker Playback Endpoint */
544+ .num = 0 ,
545+ .aggregated = 1 ,
546+ .group_position = 4 ,
547+ .group_id = 1 ,
548+ },
549+ { /* Feedback Capture Endpoint */
550+ .num = 1 ,
551+ .aggregated = 1 ,
552+ .group_position = 4 ,
553+ .group_id = 2 ,
554+ },
555+ };
556+
557+ static const struct snd_soc_acpi_endpoint cs35l56_5_fb_endpoints [] = {
558+ { /* Speaker Playback Endpoint */
559+ .num = 0 ,
560+ .aggregated = 1 ,
561+ .group_position = 5 ,
562+ .group_id = 1 ,
563+ },
564+ { /* Feedback Capture Endpoint */
565+ .num = 1 ,
566+ .aggregated = 1 ,
567+ .group_position = 5 ,
568+ .group_id = 2 ,
569+ },
570+ };
571+
572+ static const struct snd_soc_acpi_endpoint cs35l56_6_fb_endpoints [] = {
573+ { /* Speaker Playback Endpoint */
574+ .num = 0 ,
575+ .aggregated = 1 ,
576+ .group_position = 6 ,
577+ .group_id = 1 ,
578+ },
579+ { /* Feedback Capture Endpoint */
580+ .num = 1 ,
581+ .aggregated = 1 ,
582+ .group_position = 6 ,
583+ .group_id = 2 ,
584+ },
585+ };
586+
587+ static const struct snd_soc_acpi_endpoint cs35l56_7_fb_endpoints [] = {
588+ { /* Speaker Playback Endpoint */
589+ .num = 0 ,
590+ .aggregated = 1 ,
591+ .group_position = 7 ,
592+ .group_id = 1 ,
593+ },
594+ { /* Feedback Capture Endpoint */
595+ .num = 1 ,
596+ .aggregated = 1 ,
597+ .group_position = 7 ,
598+ .group_id = 2 ,
599+ },
600+ };
601+
542602static const struct snd_soc_acpi_adr_device cs35l56_0_adr [] = {
543603 {
544604 .adr = 0x00003301FA355601ull ,
@@ -584,6 +644,60 @@ static const struct snd_soc_acpi_adr_device cs35l56_2_adr[] = {
584644 }
585645};
586646
647+ static const struct snd_soc_acpi_adr_device cs35l56_0_fb_adr [] = {
648+ {
649+ .adr = 0x00003301FA355601ull ,
650+ .num_endpoints = ARRAY_SIZE (cs35l56_l_fb_endpoints ),
651+ .endpoints = cs35l56_l_fb_endpoints ,
652+ .name_prefix = "AMP1"
653+ },
654+ {
655+ .adr = 0x00003201FA355601ull ,
656+ .num_endpoints = ARRAY_SIZE (cs35l56_2_fb_endpoints ),
657+ .endpoints = cs35l56_2_fb_endpoints ,
658+ .name_prefix = "AMP2"
659+ },
660+ {
661+ .adr = 0x00003101FA355601ull ,
662+ .num_endpoints = ARRAY_SIZE (cs35l56_4_fb_endpoints ),
663+ .endpoints = cs35l56_4_fb_endpoints ,
664+ .name_prefix = "AMP3"
665+ },
666+ {
667+ .adr = 0x00003001FA355601ull ,
668+ .num_endpoints = ARRAY_SIZE (cs35l56_6_fb_endpoints ),
669+ .endpoints = cs35l56_6_fb_endpoints ,
670+ .name_prefix = "AMP4"
671+ },
672+ };
673+
674+ static const struct snd_soc_acpi_adr_device cs35l56_1_fb_adr [] = {
675+ {
676+ .adr = 0x00013701FA355601ull ,
677+ .num_endpoints = ARRAY_SIZE (cs35l56_r_fb_endpoints ),
678+ .endpoints = cs35l56_r_fb_endpoints ,
679+ .name_prefix = "AMP8"
680+ },
681+ {
682+ .adr = 0x00013601FA355601ull ,
683+ .num_endpoints = ARRAY_SIZE (cs35l56_3_fb_endpoints ),
684+ .endpoints = cs35l56_3_fb_endpoints ,
685+ .name_prefix = "AMP7"
686+ },
687+ {
688+ .adr = 0x00013501FA355601ull ,
689+ .num_endpoints = ARRAY_SIZE (cs35l56_5_fb_endpoints ),
690+ .endpoints = cs35l56_5_fb_endpoints ,
691+ .name_prefix = "AMP6"
692+ },
693+ {
694+ .adr = 0x00013401FA355601ull ,
695+ .num_endpoints = ARRAY_SIZE (cs35l56_7_fb_endpoints ),
696+ .endpoints = cs35l56_7_fb_endpoints ,
697+ .name_prefix = "AMP5"
698+ },
699+ };
700+
587701static const struct snd_soc_acpi_adr_device cs35l56_2_r_adr [] = {
588702 {
589703 .adr = 0x00023201FA355601ull ,
@@ -898,6 +1012,20 @@ static const struct snd_soc_acpi_link_adr cs42l43_link3_cs35l56_x4_link0_link1_s
8981012 {}
8991013};
9001014
1015+ static const struct snd_soc_acpi_link_adr mtl_cs35l56_x8_link0_link1_fb [] = {
1016+ {
1017+ .mask = BIT (1 ),
1018+ .num_adr = ARRAY_SIZE (cs35l56_1_fb_adr ),
1019+ .adr_d = cs35l56_1_fb_adr ,
1020+ },
1021+ {
1022+ .mask = BIT (0 ),
1023+ .num_adr = ARRAY_SIZE (cs35l56_0_fb_adr ),
1024+ .adr_d = cs35l56_0_fb_adr ,
1025+ },
1026+ {}
1027+ };
1028+
9011029/* this table is used when there is no I2S codec present */
9021030struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines [] = {
9031031 /* mockup tests need to be first */
@@ -986,6 +1114,12 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = {
9861114 .drv_name = "sof_sdw" ,
9871115 .sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l12.tplg" ,
9881116 },
1117+ {
1118+ .link_mask = BIT (0 ) | BIT (1 ),
1119+ .links = mtl_cs35l56_x8_link0_link1_fb ,
1120+ .drv_name = "sof_sdw" ,
1121+ .sof_tplg_filename = "sof-mtl-cs35l56-l01-fb8.tplg"
1122+ },
9891123 {
9901124 .link_mask = BIT (0 ),
9911125 .links = mtl_cs42l43_l0 ,
0 commit comments