[PATCH v1] ASoC: Intel: soc-acpi-ptl-match: add tas2783 support
Baojun Xu <[email protected]> Sun, 28 Jun 2026 20:25:43 +0800
| Newsgroups | org.alsa-project.alsa-devel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-sound |
|---|---|
| Message-ID | <[email protected]> |
Added tas2783 support in some projects. Signed-off-by: Baojun Xu <[email protected]> --- sound/soc/amd/acp/amd-acp70-acpi-match.c | 64 ++++++++++++++++ .../intel/common/soc-acpi-intel-ptl-match.c | 74 +++++++++++++++++++ 2 files changed, 138 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, diff --git a/sound/soc/intel/common/soc-acpi-intel-ptl-match.c b/sound/soc/intel/common/soc-acpi-intel-ptl-match.c index f7694b2a2b02..6b27b09d9f98 100644 --- a/sound/soc/intel/common/soc-acpi-intel-ptl-match.c +++ b/sound/soc/intel/common/soc-acpi-intel-ptl-match.c @@ -301,6 +301,68 @@ static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = { } }; +/* For 0x8EB4103C. */ +static const struct snd_soc_acpi_adr_device tas2783_0_adr[] = { + { + .adr = 0x00013A0102000001ull, + .num_endpoints = 1, + .endpoints = &spk_l_endpoint, + .name_prefix = "tas2783-1" + }, + { + .adr = 0x00013D0102000001ull, + .num_endpoints = 1, + .endpoints = &spk_r_endpoint, + .name_prefix = "tas2783-2" + }, + { + .adr = 0x0002390102000001ull, + .num_endpoints = 1, + .endpoints = &spk_l_endpoint, + .name_prefix = "tas2783-3" + }, + { + .adr = 0x00023C0102000001ull, + .num_endpoints = 1, + .endpoints = &spk_r_endpoint, + .name_prefix = "tas2783-4" + } +}; + +/* For 0x8EA4103C, 0x8EA5103C, 0x8EA6103C, 0x8EA8103C. */ +static const struct snd_soc_acpi_adr_device tas2783_1_adr[] = { + { + .adr = 0x00023C0102000001ull, + .num_endpoints = 1, + .endpoints = &spk_l_endpoint, + .name_prefix = "tas2783-1" + }, + { + .adr = 0x0002390102000001ull, + .num_endpoints = 1, + .endpoints = &spk_r_endpoint, + .name_prefix = "tas2783-2" + } +}; + +static const struct snd_soc_acpi_link_adr tas2783_link0[] = { + { + .mask = BIT(1), + .num_adr = ARRAY_SIZE(tas2783_0_adr), + .adr_d = tas2783_0_adr, + }, + {} +}; + +static const struct snd_soc_acpi_link_adr tas2783_link1[] = { + { + .mask = BIT(1), + .num_adr = ARRAY_SIZE(tas2783_1_adr), + .adr_d = tas2783_1_adr, + }, + {} +}; + static const struct snd_soc_acpi_link_adr ptl_cs42l43_agg_l3_cs35l56_l2[] = { { .mask = BIT(3), @@ -464,6 +526,18 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = { .drv_name = "sof_sdw", .sof_tplg_filename = "sof-ptl-rt722.tplg", /* Reuse the existing tplg file */ }, + { + .link_mask = BIT(1) | BIT(2), + .links = tas2783_link0, + .drv_name = "sof_sdw", + .sof_tplg_filename = "sof-ptl-tas2783-2ch.tplg", + }, + { + .link_mask = BIT(2), + .links = tas2783_link1, + .drv_name = "sof_sdw", + .sof_tplg_filename = "sof-ptl-tas2783-2ch.tplg", + }, { .link_mask = BIT(1) | BIT(2) | BIT(3), .links = ptl_sdw_rt713_vb_l2_rt1320_l13, -- 2.25.1