]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: Intel: soc-acpi: add LG Gram 16Z90U RT713 + single RT1320 quirk
authorJang Pyohwan <vhgksl@daum.net>
Sat, 9 May 2026 08:53:10 +0000 (17:53 +0900)
committerMark Brown <broonie@kernel.org>
Mon, 11 May 2026 01:03:04 +0000 (10:03 +0900)
Add a SoundWire machine table entry for the LG Gram Pro 2026
(16Z90U-KU7BK), which has an unusual configuration:

  sdw:0:1:025d:1320:01   single stereo RT1320 SmartAmp on link 1
  sdw:0:3:025d:0713:01   RT713 jack/headset codec on link 3

Existing rt713-rt1320 boards have two RT1320 amps on different links
("link_mask = BIT(1) | BIT(2) | BIT(3)"). The LG Gram uses a single
stereo RT1320 chip, so the new entry uses "link_mask = BIT(1) |
BIT(3)" with the existing rt1320_1_group2_adr structure, leaving the
two-channel routing to the topology.

The RT713 on this board does not expose a SMART_MIC function in
ACPI, so the .machine_check callback used by the existing entries
(snd_soc_acpi_intel_sdca_is_device_rt712_vb) would reject this
board. Drop machine_check for the new entry; speaker output and
the headset jack do not depend on the SMART_MIC presence check.

The corresponding topology source has been submitted to the SOF
project at https://github.com/thesofproject/sof/pull/10760 . The
generated sof-ptl-rt713-l3-rt1320-l1-2ch.tplg and
nhlt-sof-ptl-rt713-l3-rt1320-l1.bin will follow in linux-firmware
once that lands.

Tested on Ubuntu 26.04 with kernel 7.0.0-15: speaker (RT1320
stereo), headphone jack with auto-routing, headset mic, and the
internal NHLT DMIC array all work via the UCM HiFi profile.

Signed-off-by: Jang Pyohwan <vhgksl@daum.net>
Link: https://patch.msgid.link/20260509175317.DnhjxHczQay7kkp5z6t4lg@vhgksl.daum.net
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/common/soc-acpi-intel-ptl-match.c

index 3b7818355ff645392a53105cc2709459ad9f33a2..ad3af8834e431a0bf4f3609ccd64b493a5e45d00 100644 (file)
@@ -493,6 +493,20 @@ static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l12[] = {
        {}
 };
 
+static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l1[] = {
+       {
+               .mask = BIT(3),
+               .num_adr = ARRAY_SIZE(rt713_vb_3_adr),
+               .adr_d = rt713_vb_3_adr,
+       },
+       {
+               .mask = BIT(1),
+               .num_adr = ARRAY_SIZE(rt1320_1_group2_adr),
+               .adr_d = rt1320_1_group2_adr,
+       },
+       {}
+};
+
 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l2_rt1320_l1[] = {
        {
                .mask = BIT(2),
@@ -578,6 +592,13 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = {
                .sof_tplg_filename = "sof-ptl-rt713-l3-rt1320-l12.tplg",
                .get_function_tplg_files = sof_sdw_get_tplg_files,
        },
+       {
+               .link_mask = BIT(1) | BIT(3),
+               .links = ptl_sdw_rt713_vb_l3_rt1320_l1,
+               .drv_name = "sof_sdw",
+               .sof_tplg_filename = "sof-ptl-rt713-l3-rt1320-l1.tplg",
+               .get_function_tplg_files = sof_sdw_get_tplg_files,
+       },
        {
                .link_mask = BIT(1) | BIT(2) | BIT(3),
                .links = ptl_cs42l43_l2_cs35l56x6_l13,