[PATCH v1] ASoC: amd: acp70: add tas2783 SoundWire support
Baojun Xu <[email protected]> Sun, 28 Jun 2026 20:28:04 +0800
| Newsgroups | org.alsa-project.alsa-devel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-sound |
|---|---|
| Message-ID | <[email protected]> |
Added project 0x8EA1/8EA2 support for tas2783 on Soundwire. Signed-off-by: Baojun Xu <[email protected]> --- sound/soc/amd/acp/amd-acp70-acpi-match.c | 64 ++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/sound/soc/amd/acp/amd-acp70-acpi-match.c b/sound/soc/amd/acp/amd-acp70-acpi-match.c index 18f2918d4ada..a04075730f4f 100644 --- a/sound/soc/amd/acp/amd-acp70-acpi-match.c +++ b/sound/soc/amd/acp/amd-acp70-acpi-match.c @@ -45,6 +45,21 @@ static const struct snd_soc_acpi_endpoint spk_3_endpoint = { .group_id = 1 }; +static const struct snd_soc_acpi_endpoint tas2783_endpoints[] = { + { /*Playback Endpoint*/ + .num = 0, + .aggregated = 0, + .group_position = 0, + .group_id = 0, + }, + { /*Mic Capture Endpoint*/ + .num = 1, + .aggregated = 0, + .group_position = 0, + .group_id = 0, + }, +}; + static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = { /* Jack Endpoint */ { @@ -91,6 +106,15 @@ static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = { }, }; +static const struct snd_soc_acpi_adr_device tas2783_0_adr[] = { + { + .adr = 0x0000300102278301ull, + .num_endpoints = ARRAY_SIZE(tas2783_endpoints), + .endpoints = tas2783_endpoints, + .name_prefix = "tas2783" + } +}; + static const struct snd_soc_acpi_adr_device rt712_vb_1_group1_adr[] = { { .adr = 0x000130025D071201ull, @@ -406,6 +430,15 @@ static const struct snd_soc_acpi_link_adr acp70_cs35l63x4_l0u0246[] = { {} }; +static const struct snd_soc_acpi_link_adr tas2783_l0[] = { + { + .mask = BIT(0), + .num_adr = ARRAY_SIZE(tas2783_0_adr), + .adr_d = tas2783_0_adr, + }, + {} +}; + static const struct snd_soc_acpi_link_adr acp70_cs42l43_l0u1[] = { { .mask = BIT(0), @@ -553,6 +586,32 @@ static const struct snd_soc_acpi_link_adr acp70_rt722_l0_rt1320_l1[] = { {} }; +static const struct snd_soc_acpi_adr_device tas2783_2_adr[] = { + { + /* left */ + .adr = 0x0000390102000001ull, + .num_endpoints = 1, + .endpoints = &spk_r_endpoint, + .name_prefix = "tas2783-1" + }, + { + /* right */ + .adr = 0x00003c0102000001ull, + .num_endpoints = 1, + .endpoints = &spk_r_endpoint, + .name_prefix = "tas2783-2" + }, +}; + +static const struct snd_soc_acpi_link_adr acp70_tas2783_2[] = { + { + .mask = BIT(0), + .num_adr = ARRAY_SIZE(tas2783_2_adr), + .adr_d = tas2783_2_adr, + }, + {} +}; + static const struct snd_soc_acpi_adr_device rt1320_0_single_adr[] = { { .adr = 0x000030025D132001ull, @@ -659,6 +718,11 @@ static const struct snd_soc_acpi_link_adr acp70_rt721_only[] = { }; struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sdw_machines[] = { + { + .link_mask = BIT(0), + .links = acp70_tas2783_2, + .drv_name = "amd_sdw", + }, { .link_mask = BIT(0) | BIT(1), .links = acp70_rt1320_l0_rt722_l1, -- 2.25.1