@@ -536,6 +536,194 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_machines[] = {
536536};
537537EXPORT_SYMBOL_GPL (snd_soc_acpi_intel_tgl_machines );
538538
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+
539727/* this table is used when there is no I2S codec present */
540728struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_sdw_machines [] = {
541729 /* mockup tests need to be first */
@@ -635,6 +823,12 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_sdw_machines[] = {
635823 .drv_name = "sof_sdw" ,
636824 .sof_tplg_filename = "sof-tgl-rt711.tplg" ,
637825 },
826+ {
827+ .link_mask = BIT (0 ) | BIT (1 ),
828+ .links = up_extreme_cs35l56_sdw_eight ,
829+ .drv_name = "sof_sdw" ,
830+ .sof_tplg_filename = "sof-tgl-cs35l56-l01-fb8.tplg"
831+ },
638832 {},
639833};
640834EXPORT_SYMBOL_GPL (snd_soc_acpi_intel_tgl_sdw_machines );
0 commit comments