Skip to content

Commit bf4519f

Browse files
rfvirgilbroonie
authored andcommitted
ASoC: Intel: tgl-match: Add entries for CS35L56 on CDB35L56-EIGHT-C
This adds match entries for the eight CS35L56 amps on the Cirrus Logic CDB35L56-EIGHT-C board. Speaker playback and amp feedback are aggregated across all amps on both SoundWire buses. The mapping of SoundWire addresses to AMPn numbers matches the actual order of amps on the EIGHT-C board. The SoundWire unique ID is in reverse order for amps 1..4 on these boards, and the amp resets are paired 1+8, 2+7, 3+6, 4+5. This then makes the entries from cs35l56_sdw_eight_1_4_fb_adr and cs35l56_sdw_eight_5_8_fb_adr match the way the amp resets are paired on the EIGHT-C board. [0] = 1 + 8 [1] = 2 + 7 [3] = 3 + 6 [4] = 4 + 5 Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Link: https://patch.msgid.link/20241216032721.131227-2-yung-chuan.liao@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 5ce3bee commit bf4519f

1 file changed

Lines changed: 194 additions & 0 deletions

File tree

sound/soc/intel/common/soc-acpi-intel-tgl-match.c

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,194 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_machines[] = {
536536
};
537537
EXPORT_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 */
540728
struct 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
};
640834
EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_tgl_sdw_machines);

0 commit comments

Comments
 (0)