From nobody Tue Sep 29 05:34:23 2026 Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) (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 B801F47799F for ; Tue, 11 Aug 2026 20:58:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786481905; cv=none; b=gknSJAQne+i9pNteDsacbdG/WypH7yb6+qrwdSyCNw3DL3my+YNIdL0vFnKu0MZzoPHJIEw+memtogqiL+8ZkrSDNU4PBvROxx0grLl9rSkrn6f2+fX7D0utjzjCcDR4TkGBuWnAiYpW7SVSOB7e3GbWAdJ0+SOxf5/wzeqzaO4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786481905; c=relaxed/simple; bh=3LhNsgLoxNYZDiDksG4yzIINxvMC1s+m2wHs2h0sIvc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=kezXkoI6vp66NrECM+7XnsBF1szJt9MkBiyrD3XXCuoHxFMeNwf6VyzxamUd1qD/X4I040aXPu562G45LXbFeA6+ffnMg7jaXOl4SIBBow+NqRiktyvMc0FcJTypVdkKVqU3zw/et9M5dlGG4DSYDQ1lN49+m2hN0dFEiSIg9m0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dGikqj98; arc=none smtp.client-ip=209.85.208.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dGikqj98" Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-6a1ff91dcedso454638a12.2 for ; Tue, 11 Aug 2026 13:58:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786481901; x=1787086701; 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=Y9+2ax1B+F5GfsmMbjcinAmYhd98Pr24E1UBhoJp1Gc=; b=dGikqj98NR6a/fXdJbaZeCPyhv7DM0yZ1BxMZvtXq6bqlSmHBdfnZ5g112mlE2qS62 O76CPWQi8oJ9P/3VMhKCDLLj3bEFmqf9xpmRwSaarqy0xO3YnWsXa1l77M1PnVIzF4Ec l4NjpvaCGinJosv0PgfawwxI2h/hWszbG9mqzrzHG3S9+B4Ub8M/gRbKK0bvF1Bf05QP xKDpKfIW3zH2r+69rryngra5hwQph8nZgzV89gjUCCUqESxyjp7O+ykdShtaosk0GgB/ UFjWg5jl2Uq86LA2rUyvYtJuQLKDGCin9YR5tq//Oyd4HvC5wmUcBzArif1B3yJBS0Bt WjZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786481901; x=1787086701; 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=Y9+2ax1B+F5GfsmMbjcinAmYhd98Pr24E1UBhoJp1Gc=; b=h/hwmT/hsrIdgu1q5eJ9siLwlAHNdhwXcxtvoEVKHrDCr9NB8wLN2QB5Q09BMqhtm3 5aqXn+hI85tvhJ/gD26ZCvmh1TGYmhgDFx3LGywxviBSjsPWuENtTXuTeiK7UgY4REeX vptBWQw0Q9ghh4EQkH7ur8oOY5tvAsl2nFfMV5Ae8b2NpjdCHj/Ni8OBvJzq+JtBs9Qt edXHT+6H4H7Au85jlRfF8ZQTn2KBX1SVcpKKUKV2XU6gVdNz6VkKd8j9fTd+NLTwki28 Q/CfHu4qzGeHise+EboarI6PSdFPzzuD/X/4zQF0Mchv2Dlmu5/jd5avAuyxVsJXsPjJ Tzqg== X-Forwarded-Encrypted: i=1; AHgh+RoPhXM9yFCV7NLCaCi3B6q2YHFa0HZZWab1G4bkEjYaBmErfedED1CudebyI9n4mCZGdW/W6zDRz6XiLE0=@vger.kernel.org X-Gm-Message-State: AOJu0YyTCj5F3w+hcw5sl/d89Mb8kH46pfzCShFRwcll5vQB7S17Ujkf PaClb6S0V8gE5VIqKHbR41GuR09eraFDoSEMyWi/AS8zDskx+sPPPyjp X-Gm-Gg: AR+sD12RFfu5Du/qAwZ6JZyAc+5gM/l4anbD3JuaBAzE4AwA4B2llRxkXag/M4SxEIu zuUqoJVKSMLgiCJ4hhoAGSYAneYG3NWs43V0P+PlNNDqjo1adV3u2rH+QTN3dCprmmrzfb/Vj3i AKLgTOsSAtp692rANfaJ/V3QsA4qiRLRITX55zwvQPfYHDKOIfx3ULNI8/c1eeCrwVNOo57WOvP F19SMylqFluRJ/4x26aIWULVAeU820avlALoU3z5bVSqddImwO1HeE2qS157MyH+octkWmkXvhQ qulzCpeUk81+wmBNtdas4KDogiX+51FwvAKvLKgFkrj7c/ok3U8Xb8/DdZ2ARzH4OLjQjBVl/BE CbxoQAvw4hBDWP+mirJb9/Rllb0AFQHz9ts8SbzkznOQgMz+4dW4uB/OTHqoBdFosNYGFExYRlY /7Ks533FoGVexrCxyp/Mh31Lk3ShJevJqxSLvxkn7n5u/DOydjt6uMqhcX54pNNsif4h6KVK1Rv tXjNxGc2WTcBjiyKGlVmUV6Nwv05/9FjS64wFYu8Uk= X-Received: by 2002:a17:907:97c8:b0:c16:2dc0:e1ed with SMTP id a640c23a62f3a-c20f2e4f66amr10421466b.4.1786481900632; Tue, 11 Aug 2026 13:58:20 -0700 (PDT) Received: from archlinux (77-236-24-72.static.play.pl. [77.236.24.72]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c20f0b0e971sm14686566b.61.2026.08.11.13.58.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 13:58:20 -0700 (PDT) From: Denys Papushaiev To: cezary.rojewski@intel.com, liam.r.girdwood@linux.intel.com, peter.ujfalusi@linux.intel.com, kai.vehmanen@linux.intel.com, broonie@kernel.org Cc: pierre-louis.bossart@linux.dev, yung-chuan.liao@linux.intel.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Denys Papushaiev Subject: [PATCH v1] ASoC: Intel: sof_sdw: Add ASUS UX5406AA SoundWire configuration Date: Tue, 11 Aug 2026 22:58:10 +0200 Message-ID: <20260811205810.12395-1-denqxotl@gmail.com> X-Mailer: git-send-email 2.55.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 ASUS ZenBook S14 UX5406AA has a CS42L43 codec on SoundWire link 3 and f= our CS35L56 speaker amplifiers on links 1 and 2. The existing machine table only describes the CS35L56 amplifiers on link 2.= As a result, the machine configuration is not matched and SOF falls back t= o function topology enumeration. That fallback creates duplicate DAI link n= ames and prevents the audio card from being initialized. Add the missing SoundWire ADR entries and aggregated speaker endpoints for = the two CS35L56 amplifiers on link 1. Add a machine-table entry matching li= nks 1, 2 and 3 and reuse the existing CS42L43/CS35L56 topology. Tested on an ASUS ZenBook S14 UX5406AA with kernel 7.1.8-arch1-3. The SOF c= ard initializes successfully and all four CS35L56 amplifiers are detected a= nd calibrated. Signed-off-by: Denys Papushaiev --- .../intel/common/soc-acpi-intel-ptl-match.c | 67 +++++++++++++++++++ 1 file changed, 67 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 f7694b2a2b02..b62a946062e4 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,21 @@ static const struct snd_soc_acpi_endpoint spk_r_endpoint= =3D { .group_id =3D 1, }; =20 +/* Endpoints for 4-channel CS35L56 configurations (e.g. ASUS ZenBook UX540= 6AA) */ +static const struct snd_soc_acpi_endpoint spk_3_endpoint =3D { + .num =3D 0, + .aggregated =3D 1, + .group_position =3D 2, + .group_id =3D 1, +}; + +static const struct snd_soc_acpi_endpoint spk_4_endpoint =3D { + .num =3D 0, + .aggregated =3D 1, + .group_position =3D 3, + .group_id =3D 1, +}; + static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] =3D { /* Jack Endpoint */ { @@ -184,6 +199,26 @@ static const struct snd_soc_acpi_adr_device cs35l56_2_= lr_adr[] =3D { } }; =20 +/* + * ASUS ZenBook S14 UX5406AA (Panther Lake) has 4x CS35L56 amps: + * 2 amps on SoundWire link 1 (unique_id 2 and 3) + * 2 amps on SoundWire link 2 (unique_id 0 and 1) + */ +static const struct snd_soc_acpi_adr_device cs35l56_1_lr_adr[] =3D { + { + .adr =3D 0x00013201fa355601ull, + .num_endpoints =3D 1, + .endpoints =3D &spk_3_endpoint, + .name_prefix =3D "AMP3" + }, + { + .adr =3D 0x00013301fa355601ull, + .num_endpoints =3D 1, + .endpoints =3D &spk_4_endpoint, + .name_prefix =3D "AMP4" + } +}; + static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] =3D { { .adr =3D 0x000030025D071101ull, @@ -315,6 +350,30 @@ static const struct snd_soc_acpi_link_adr ptl_cs42l43_= agg_l3_cs35l56_l2[] =3D { {} }; =20 +/* + * ASUS ZenBook S14 UX5406AA: CS42L43 on link 3, CS35L56 x4 on links 1 and= 2. + * Link 1 carries AMP3 (uid=3D2) and AMP4 (uid=3D3). + * Link 2 carries AMP1 (uid=3D0) and AMP2 (uid=3D1). + */ +static const struct snd_soc_acpi_link_adr ptl_cs42l43_agg_l3_cs35l56_l12[]= =3D { + { + .mask =3D BIT(3), + .num_adr =3D ARRAY_SIZE(cs42l43_3_agg_adr), + .adr_d =3D cs42l43_3_agg_adr, + }, + { + .mask =3D BIT(2), + .num_adr =3D ARRAY_SIZE(cs35l56_2_lr_adr), + .adr_d =3D cs35l56_2_lr_adr, + }, + { + .mask =3D BIT(1), + .num_adr =3D ARRAY_SIZE(cs35l56_1_lr_adr), + .adr_d =3D cs35l56_1_lr_adr, + }, + {} +}; + static const struct snd_soc_acpi_link_adr ptl_rt722_l0_rt1320_l23[] =3D { { .mask =3D BIT(0), @@ -510,6 +569,14 @@ 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, }, + { + /* ASUS ZenBook S14 UX5406AA (Panther Lake): 4x CS35L56 */ + /* on links 1+2, CS42L43 on link 3 */ + .link_mask =3D BIT(1) | BIT(2) | BIT(3), + .links =3D ptl_cs42l43_agg_l3_cs35l56_l12, + .drv_name =3D "sof_sdw", + .sof_tplg_filename =3D "sof-ptl-cs42l43-agg-l3-cs35l56-l2.tplg", + }, { .link_mask =3D BIT(2) | BIT(3), .links =3D ptl_cs42l43_agg_l3_cs35l56_l2, --=20 2.55.0