Skip to content

Commit e0c616d

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 4bfe0d4 commit e0c616d

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

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
@@ -707,6 +707,41 @@ struct asoc_sdw_codec_info codec_info_list[] = {
707707
},
708708
.dai_num = 4,
709709
},
710+
{
711+
.part_id = 0x4245,
712+
.dais = {
713+
{
714+
.direction = {true, false},
715+
.codec_name = "snd_soc_sdca.UAJ.1",
716+
.dai_name = "IT 41",
717+
.dai_type = SOC_SDW_DAI_TYPE_JACK,
718+
.dailink = {SOC_SDW_JACK_OUT_DAI_ID, SOC_SDW_UNUSED_DAI_ID},
719+
.rtd_init = asoc_sdw_cs42l45_hs_rtd_init,
720+
},
721+
{
722+
.direction = {false, true},
723+
.codec_name = "snd_soc_sdca.SmartMic.0",
724+
.dai_name = "OT 113",
725+
.dai_type = SOC_SDW_DAI_TYPE_MIC,
726+
.dailink = {SOC_SDW_UNUSED_DAI_ID, SOC_SDW_DMIC_DAI_ID},
727+
.rtd_init = asoc_sdw_cs42l45_dmic_rtd_init,
728+
},
729+
{
730+
.direction = {false, true},
731+
.codec_name = "snd_soc_sdca.UAJ.1",
732+
.dai_name = "OT 36",
733+
.dai_type = SOC_SDW_DAI_TYPE_JACK,
734+
.dailink = {SOC_SDW_UNUSED_DAI_ID, SOC_SDW_JACK_IN_DAI_ID},
735+
},
736+
},
737+
.dai_num = 3,
738+
.auxs = {
739+
{
740+
.codec_name = "snd_soc_sdca.HID.2",
741+
},
742+
},
743+
.aux_num = 1,
744+
},
710745
{
711746
.part_id = 0xaaaa, /* generic codec mockup */
712747
.name_prefix = "sdw_mockup_mmulti-function",

0 commit comments

Comments
 (0)