From 7afd9ad92603c13e9cf83d3af538ac5f667f3545 Mon Sep 17 00:00:00 2001 From: JJ Gault Date: Fri, 11 Sep 2026 16:21:49 -0600 Subject: [PATCH] ASoC: Intel: soc-acpi-intel-arl-match: Add RT713 + dual RT1320 support Add a SoundWire machine-driver match entry for boards with an RT713 (SDCA "VB" jack/dmic variant) on link 0 and two RT1320 speaker amps sharing link 2 (distinguished by unique_id 0/1, left/right). This exact codec pairing is already supported on Panther Lake (ptl_sdw_rt713_vb_l2_rt1320_l13) and Lunar Lake (lnl_sdw_rt713_vb_l2_rt1320_l13); Arrow Lake was missing the corresponding entry, so affected boards fell back to the generic skl_hda_dsp_generic driver and only exposed HDMI outputs. Confirmed on an MSI Raider 16 Max HX B2WI (MS-2651): the kernel now correctly identifies the hardware and no longer falls back to the generic HDA driver. No dedicated topology has been built for this link0/link2 layout yet, so sof_tplg_filename is set to a placeholder ("sof-arl-dummy.tplg") rather than pointing at an existing but unrelated topology, per review feedback. Signed-off-by: JJ Gault --- .../intel/common/soc-acpi-intel-arl-match.c | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/sound/soc/intel/common/soc-acpi-intel-arl-match.c b/sound/soc/intel/common/soc-acpi-intel-arl-match.c index 575889a4c69b61..13347343d70181 100644 --- a/sound/soc/intel/common/soc-acpi-intel-arl-match.c +++ b/sound/soc/intel/common/soc-acpi-intel-arl-match.c @@ -70,6 +70,23 @@ static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = { }, }; +static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = { + /* Jack Endpoint */ + { + .num = 0, + .aggregated = 0, + .group_position = 0, + .group_id = 0, + }, + /* DMIC Endpoint */ + { + .num = 1, + .aggregated = 0, + .group_position = 0, + .group_id = 0, + }, +}; + static const struct snd_soc_acpi_adr_device cs35l56_2_lr_adr[] = { { .adr = 0x00023001FA355601ull, @@ -301,6 +318,35 @@ static const struct snd_soc_acpi_adr_device rt1320_2_single_adr[] = { } }; +/* + * MSI Raider 16 Max HX B2WI (MS-2651): RT713 (jack/dmic, "VB" SDCA variant) + * on link 0, two RT1320 speaker amps sharing link 2 (unique_id 0 = left, + * unique_id 1 = right). + */ +static const struct snd_soc_acpi_adr_device rt713_vb_0_adr[] = { + { + .adr = 0x000030025D071301ull, + .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), + .endpoints = jack_dmic_endpoints, + .name_prefix = "rt713" + } +}; + +static const struct snd_soc_acpi_adr_device rt1320_2_lr_adr[] = { + { + .adr = 0x000230025D132001ull, + .num_endpoints = 1, + .endpoints = &spk_l_endpoint, + .name_prefix = "rt1320-1" + }, + { + .adr = 0x000231025D132001ull, + .num_endpoints = 1, + .endpoints = &spk_r_endpoint, + .name_prefix = "rt1320-2" + } +}; + static const struct snd_soc_acpi_link_adr arl_n_mrd_es9356_link1[] = { { .mask = BIT(1), @@ -454,6 +500,20 @@ static const struct snd_soc_acpi_link_adr arl_rt711_l0_rt1316_l3[] = { {} }; +static const struct snd_soc_acpi_link_adr arl_rt713_vb_l0_rt1320_l2[] = { + { + .mask = BIT(0), + .num_adr = ARRAY_SIZE(rt713_vb_0_adr), + .adr_d = rt713_vb_0_adr, + }, + { + .mask = BIT(2), + .num_adr = ARRAY_SIZE(rt1320_2_lr_adr), + .adr_d = rt1320_2_lr_adr, + }, + {} +}; + static const struct snd_soc_acpi_link_adr arl_rt722_l0_rt1320_l2[] = { { .mask = BIT(0), @@ -617,6 +677,14 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_sdw_machines[] = { .sof_tplg_filename = "sof-arl-cs42l43-l0-cs35l56-l2.tplg", .get_function_tplg_files = sof_sdw_get_tplg_files, }, + { + .link_mask = BIT(0) | BIT(2), + .links = arl_rt713_vb_l0_rt1320_l2, + .drv_name = "sof_sdw", + .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, + .sof_tplg_filename = "sof-arl-dummy.tplg", + .get_function_tplg_files = sof_sdw_get_tplg_files, + }, { .link_mask = BIT(0) | BIT(2), .links = arl_rt722_l0_rt1320_l2,