Skip to content

Commit f894842

Browse files
committed
ASoC: intel: sof_sdw: Add device match/codec_info for cs42l45
Add support for the Cirrus Logic CS42L45 standalone using SoundWire. Change-Id: I257e7c83349504a8b0d7dfe2a4f695a71f9e3e60 Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
1 parent 1549308 commit f894842

2 files changed

Lines changed: 60 additions & 0 deletions

File tree

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,16 @@ static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {
437437
},
438438
};
439439

440+
static const struct snd_soc_acpi_adr_device cs42l45_0_adr[] = {
441+
{
442+
.adr = 0x00003001fa424501,
443+
/* Re-use endpoints, but cs42l45 has no speaker */
444+
.num_endpoints = ARRAY_SIZE(cs42l43_endpoints) - 1,
445+
.endpoints = cs42l43_endpoints,
446+
.name_prefix = "cs42l45"
447+
}
448+
};
449+
440450
static const struct snd_soc_acpi_adr_device cs42l43_3_adr[] = {
441451
{
442452
.adr = 0x00033001FA424301ull,
@@ -446,6 +456,15 @@ static const struct snd_soc_acpi_adr_device cs42l43_3_adr[] = {
446456
}
447457
};
448458

459+
static const struct snd_soc_acpi_link_adr up_extreme_cs42l45_sdw0[] = {
460+
{
461+
.mask = 0x1,
462+
.num_adr = ARRAY_SIZE(cs42l45_0_adr),
463+
.adr_d = cs42l45_0_adr,
464+
},
465+
{}
466+
};
467+
449468
static const struct snd_soc_acpi_adr_device cs35l56_0_adr[] = {
450469
{
451470
.adr = 0x00003301FA355601ull,
@@ -829,6 +848,12 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_sdw_machines[] = {
829848
.drv_name = "sof_sdw",
830849
.sof_tplg_filename = "sof-tgl-cs35l56-l01-fb8.tplg"
831850
},
851+
{
852+
.link_mask = 0x1, /* cb2 on link 0 */
853+
.links = up_extreme_cs42l45_sdw0,
854+
.drv_name = "sof_sdw",
855+
.sof_tplg_filename = "sof-tgl-cs42l45-sdw0.tplg"
856+
},
832857
{},
833858
};
834859
EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_tgl_sdw_machines);

sound/soc/sdw_utils/soc_sdw_utils.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,41 @@ struct asoc_sdw_codec_info codec_info_list[] = {
708708
},
709709
.dai_num = 4,
710710
},
711+
{
712+
.part_id = 0x4245,
713+
.dais = {
714+
{
715+
.direction = {true, false},
716+
.codec_name = "snd_soc_sdca.UAJ.1",
717+
.dai_name = "IT 41",
718+
.dai_type = SOC_SDW_DAI_TYPE_JACK,
719+
.dailink = {SOC_SDW_JACK_OUT_DAI_ID, SOC_SDW_UNUSED_DAI_ID},
720+
.rtd_init = asoc_sdw_cs42l45_hs_rtd_init,
721+
},
722+
{
723+
.direction = {false, true},
724+
.codec_name = "snd_soc_sdca.SmartMic.0",
725+
.dai_name = "OT 113",
726+
.dai_type = SOC_SDW_DAI_TYPE_MIC,
727+
.dailink = {SOC_SDW_UNUSED_DAI_ID, SOC_SDW_DMIC_DAI_ID},
728+
.rtd_init = asoc_sdw_cs42l45_dmic_rtd_init,
729+
},
730+
{
731+
.direction = {false, true},
732+
.codec_name = "snd_soc_sdca.UAJ.1",
733+
.dai_name = "OT 36",
734+
.dai_type = SOC_SDW_DAI_TYPE_JACK,
735+
.dailink = {SOC_SDW_UNUSED_DAI_ID, SOC_SDW_JACK_IN_DAI_ID},
736+
},
737+
},
738+
.dai_num = 3,
739+
.auxs = {
740+
{
741+
.codec_name = "snd_soc_sdca.HID.2",
742+
},
743+
},
744+
.aux_num = 1,
745+
},
711746
{
712747
.part_id = 0xaaaa, /* generic codec mockup */
713748
.name_prefix = "sdw_mockup_mmulti-function",

0 commit comments

Comments
 (0)