From nobody Fri Oct 2 10:08:34 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0DC3E3B7B70 for ; Sun, 2 Aug 2026 15:57:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785686283; cv=none; b=CadR+Qj8ifMf7BaAJXCCAgrA708CkfaegLYGTf3v8FMGsjhrjxB86j/X6pUwOUj+JjwMoU1ZooAGmfrOmmqwmeGv9pkJnb+TyV0EK7ufsrcTx0bhQ9xq+G/sxCi+jdCR7CeqFRztAZvaiSgb4+f+ljFioiGTGhG79PmeOvvja/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785686283; c=relaxed/simple; bh=80w1bxo8HofkFPGSDfAoE3yryphRApzOjIm1Zbovhls=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=WXL9tPkL2V9MNgPBMNOKrVCATgJcOMQeIglmKqIlPERgUzeunp5NFzhF4mlWOxk8TROTUhRlBwxerCZkGLnWiNJs6O4EH499bgDtgdWlUzkaTdk1eRspZwtkvf+uiA+dEmCba0PcVL4WX9VdT4vai2oDvrcLG0q/SGTEANNBVKI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=kernel.srl; spf=pass smtp.mailfrom=kernel.srl; dkim=pass (2048-bit key) header.d=kernel.srl header.i=@kernel.srl header.b=a9X1UVbV; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=kernel.srl Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kernel.srl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.srl header.i=@kernel.srl header.b="a9X1UVbV" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-47f7854678cso1179963f8f.1 for ; Sun, 02 Aug 2026 08:57:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.srl; s=google; t=1785686270; x=1786291070; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=UVESwNZjyXM8r67+UALyxxpGt7Z0/q+uIrVNmZe3MzE=; b=a9X1UVbVt67Y9Q5M1NJ9nTOCJyHF7uPZzrSmJv4jN/5dG2iDT8zcIIMRvMBs8VCcYi mWe2LkCKgSyE2he4em54tCx8SkVOWnLxOObXYF5mY76BrwFLJ8Qt4vnYWfC2pvXHKpnb y3wvD1LvXffof4o+QGmzk8haqYhmkLYsPYAf6yLSZBDmfyu4Z+BIqxD7PRpYo472I/xi yxJ8P06S9h+E90Os4MHhZNAmQCjo2416FYENAcO5UCdnMATWVjlWFeNr8akSd6RRkgeY 6XHX+XK1Nvm8+hkbglI/FUTTD91kAWx2y6Mp085AGIlOQa5qGxwKc26nyJK8/a0gixuy 1Ovg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785686270; x=1786291070; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UVESwNZjyXM8r67+UALyxxpGt7Z0/q+uIrVNmZe3MzE=; b=R3UiLLuGBBS9cKd83sRo8b1An0BGKUbHX3XapBMDyEtBIODsIIHA534UOCOdAe4QSQ Vl2PjgXVWCjeN2DXUk4gXXsGX0VhK8hcc2+cMKhxFmKXMKiXk75svSDes9w2IvBJtYAz xoGV4dK4gaEBLdBupUIuYEQe3jjfsiWqWBVSEH2pzyBKbiI19hl2FE03Q/MzmxZnr0/2 4vjFJEGQ/oNwj9knp81gDv8UGaGsL/kx41HikrfQx1AwgK0E5uhO4zICXKrWCqLlYX/e F9ZT8ysHbzh00DjdzWS5dwtFqNHUJyguiuKPjGDmaPgorO448zdcjDcSXMsW3X2PLLYA qX+g== X-Forwarded-Encrypted: i=1; AHgh+RrPOvxQAPLr0GS+U04s9Brvza7OwSNxEu4z9Rj7I2o8hjHX2XZoyj3FlpRcVAEk4tj4SWJs7CZ0mBMpjuA=@vger.kernel.org X-Gm-Message-State: AOJu0YyNTiOEf0/NDO5cSvuI8XalzB2D0pIhTKG5bFmJ2ZVssEQpPRqM Eoe6W+9sqY7/qH+Eb9igzolY1TWlmO7/Rl8eMm3MThfLjxOe6dTQe9KNGmA4pgpAh74= X-Gm-Gg: AR+sD119UZ/7UsfIwbgHLyi5ikosNHIk/pveN2rTcLKDkyNORNyvyBabxG/JiSLpb45 dRnvdUbA6ts3CTvCKkeYQg01KHFLvNIMGCrDd2NOjoi2PM3v6RRuQGYZTEd099tOjKGh/qmRlZJ ScEJc5ep4aRuVGA2qSk4VDJTUJiVg+oHYH4LPO0LH0jVO0LIvlVPB5XxVPkIj0LXIO17xuIoUS3 Wb5zvxxX7oGE2iahSU8vyfVjIf3tH2GRWfyDNtzPHNauBFOE0DqumE/7papCO8QfsroncAPwABl o1va3ecVaQgo17rUpqPlX0hzUR0IngcxRFsLZq2mEEDHiHlkK2AHZx3eoYh0r29wA1R9oSMpz+a 6dVzQ9As2l0CrDaGU67FcSr5BmyWurI3SAS29JfuH5GwM3+FQjvpfqOozQhRDrzs0AU7s8XFwVf 81av+m8n+xQItA1RR1SSZsepg2/gj44YMG/zocBUToSdgbICy9czVIVwVLCe9aobQrm7T+flZdr jTHf3MP2rizvqj/+v76R84vhfOD41UHRiNO1ZP67ZRq7VfBYp/zrhN8WTDzYVOwZdIeYl1y/BC3 45goBh8lhaM4yNTfAlaHRtGgFX5xxl36M7rSGRHamGifWKDNzr+Ubng3PfqofJIMU/OhOIcuxIC bVP93a6us0uVO5FS4kSk174c7Wrld/FBpB+8IkFAPIt0XQjKs1Q== X-Received: by 2002:adf:e010:0:10b0:47f:9464:86cc with SMTP id ffacd0b85a97d-47fd72a00b3mr13260881f8f.2.1785686269763; Sun, 02 Aug 2026 08:57:49 -0700 (PDT) Received: from KITT.minareto (host-95-230-187-130.business.telecomitalia.it. [95.230.187.130]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47fd456a6d7sm25487093f8f.19.2026.08.02.08.57.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 08:57:49 -0700 (PDT) From: Cristian La Spina To: Cezary Rojewski , Liam Girdwood , Peter Ujfalusi , Bard Liao , Kai Vehmanen , Pierre-Louis Bossart , Mark Brown , Jaroslav Kysela , Takashi Iwai Cc: Cristian La Spina , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] ASoC: Intel: soc-acpi-intel-ptl-match: add cs42l43_cs35l57_l0 support Date: Sun, 2 Aug 2026 17:57:39 +0200 Message-ID: <20260802155741.202067-1-cristian.laspina@kernel.srl> X-Mailer: git-send-email 2.52.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Lenovo Yoga 9 2-in-1 14IPH11 puts its CS42L43 codec and both CS35L57 amplifiers on SoundWire link 0, as described by its DSDT: sdw:0:0:01fa:4243:01 CS42L43 jack, microphones, two tweeters sdw:0:0:01fa:3557:01:0 CS35L57 left woofer sdw:0:0:01fa:3557:01:1 CS35L57 right woofer The existing cs42l43 entries describe machines that spread the same chips over links 2 and 3, so this laptop matches nothing at all and no card is created: speakers, headphone jack and microphones are all silent, leaving HDMI as the only output. Add a match for that layout. The codec drives the two tweeters through its own amplifiers while the CS35L57 drive the woofers, so all three speaker endpoints have to share a single aggregation group. With separate groups each device asks for a DAI link named "SDW0-Playback-SmartAmp" and the second registration fails with -EEXIST. cs42l43_amp_spkagg_endpoints already places the codec at group position 0, so the two amplifiers take positions 1 and 2, following the numbered series used for multi-amplifier groups elsewhere. The matching topology is proposed at https://github.com/thesofproject/sof/pull/11053 Assisted-by: Claude:claude-opus-5 Signed-off-by: Cristian La Spina --- .../intel/common/soc-acpi-intel-ptl-match.c | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) 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 756bbf82a..2d2bdc832 100644 --- a/sound/soc/intel/common/soc-acpi-intel-ptl-match.c +++ b/sound/soc/intel/common/soc-acpi-intel-ptl-match.c @@ -92,6 +92,20 @@ static const struct snd_soc_acpi_endpoint spk_r_endpoint= =3D { .group_id =3D 1, }; =20 +static const struct snd_soc_acpi_endpoint spk_1_endpoint =3D { + .num =3D 0, + .aggregated =3D 1, + .group_position =3D 1, + .group_id =3D 1, +}; + +static const struct snd_soc_acpi_endpoint spk_2_endpoint =3D { + .num =3D 0, + .aggregated =3D 1, + .group_position =3D 2, + .group_id =3D 1, +}; + static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] =3D { /* Jack Endpoint */ { @@ -184,6 +198,35 @@ static const struct snd_soc_acpi_adr_device cs35l56_2_= lr_adr[] =3D { } }; =20 +/* + * Lenovo Yoga 9 2-in-1 14IPH11: the CS42L43 codec and both CS35L57 amplif= iers + * are on SoundWire link 0, as described by the DSDT. The codec drives the= two + * tweeters through its own amplifiers, the CS35L57 drive the woofers, so = all + * three speaker endpoints must share one aggregation group: otherwise each + * device asks for a DAI link named "SDW0-Playback-SmartAmp" and the second + * registration fails with -EEXIST. + */ +static const struct snd_soc_acpi_adr_device cs42l43_cs35l57_0_adr[] =3D { + { + .adr =3D 0x00003001FA424301ull, + .num_endpoints =3D ARRAY_SIZE(cs42l43_amp_spkagg_endpoints), + .endpoints =3D cs42l43_amp_spkagg_endpoints, + .name_prefix =3D "cs42l43" + }, + { + .adr =3D 0x00003001FA355701ull, + .num_endpoints =3D 1, + .endpoints =3D &spk_1_endpoint, + .name_prefix =3D "AMP1" + }, + { + .adr =3D 0x00003101FA355701ull, + .num_endpoints =3D 1, + .endpoints =3D &spk_2_endpoint, + .name_prefix =3D "AMP2" + } +}; + static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] =3D { { .adr =3D 0x000030025D071101ull, @@ -301,6 +344,15 @@ static const struct snd_soc_acpi_adr_device rt1320_3_g= roup2_adr[] =3D { } }; =20 +static const struct snd_soc_acpi_link_adr ptl_cs42l43_cs35l57_l0[] =3D { + { + .mask =3D BIT(0), + .num_adr =3D ARRAY_SIZE(cs42l43_cs35l57_0_adr), + .adr_d =3D cs42l43_cs35l57_0_adr, + }, + {} +}; + static const struct snd_soc_acpi_link_adr ptl_cs42l43_agg_l3_cs35l56_l2[] = =3D { { .mask =3D BIT(3), @@ -510,6 +562,12 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_ma= chines[] =3D { .sof_tplg_filename =3D "sof-ptl-rt712-l3-rt1320-l2.tplg", .get_function_tplg_files =3D sof_sdw_get_tplg_files, }, + { + .link_mask =3D BIT(0), + .links =3D ptl_cs42l43_cs35l57_l0, + .drv_name =3D "sof_sdw", + .sof_tplg_filename =3D "sof-ptl-cs42l43-l0.tplg", + }, { .link_mask =3D BIT(2) | BIT(3), .links =3D ptl_cs42l43_agg_l3_cs35l56_l2, --=20 2.52.0