RE: [PATCH v1] ASoC: Intel: sof_sdw: Add ASUS UX5406AA SoundWire configuration

From: Liao, Bard

Date: Tue Aug 11 2026 - 22:39:19 EST




> -----Original Message-----
> From: Denys Papushaiev <denqxotl@xxxxxxxxx>
> Sent: Wednesday, August 12, 2026 4:58 AM
> To: Rojewski, Cezary <cezary.rojewski@xxxxxxxxx>;
> liam.r.girdwood@xxxxxxxxxxxxxxx; peter.ujfalusi@xxxxxxxxxxxxxxx;
> kai.vehmanen@xxxxxxxxxxxxxxx; broonie@xxxxxxxxxx
> Cc: pierre-louis.bossart@xxxxxxxxx; yung-chuan.liao@xxxxxxxxxxxxxxx; linux-
> sound@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Denys Papushaiev
> <denqxotl@xxxxxxxxx>
> Subject: [PATCH v1] ASoC: Intel: sof_sdw: Add ASUS UX5406AA SoundWire
> configuration
>
> The ASUS ZenBook S14 UX5406AA has a CS42L43 codec on SoundWire link 3
> and four 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 to
> function topology enumeration. That fallback creates duplicate DAI link names
> and prevents the audio card from being initialized.

It is likely there is a ghost SoundWire device in the ACPI table.
Below commit covered the UX5406AA SKU
4dab2b904414 ("soundwire: dmi-quirks: Disable ghost Realtek devices")
Could you check if it works for you?

>
> Add the missing SoundWire ADR entries and aggregated speaker endpoints for
> the two CS35L56 amplifiers on link 1. Add a machine-table entry matching
> links 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 card initializes successfully and all four CS35L56 amplifiers are detected
> and calibrated.
>
> Signed-off-by: Denys Papushaiev <denqxotl@xxxxxxxxx>
> ---
> .../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 = {
> .group_id = 1,
> };
>
> +/* Endpoints for 4-channel CS35L56 configurations (e.g. ASUS ZenBook
> UX5406AA) */
> +static const struct snd_soc_acpi_endpoint spk_3_endpoint = {
> + .num = 0,
> + .aggregated = 1,
> + .group_position = 2,
> + .group_id = 1,
> +};
> +
> +static const struct snd_soc_acpi_endpoint spk_4_endpoint = {
> + .num = 0,
> + .aggregated = 1,
> + .group_position = 3,
> + .group_id = 1,
> +};
> +
> static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = {
> /* Jack Endpoint */
> {
> @@ -184,6 +199,26 @@ static const struct snd_soc_acpi_adr_device
> cs35l56_2_lr_adr[] = {
> }
> };
>
> +/*
> + * 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[] = {
> + {
> + .adr = 0x00013201fa355601ull,
> + .num_endpoints = 1,
> + .endpoints = &spk_3_endpoint,
> + .name_prefix = "AMP3"
> + },
> + {
> + .adr = 0x00013301fa355601ull,
> + .num_endpoints = 1,
> + .endpoints = &spk_4_endpoint,
> + .name_prefix = "AMP4"
> + }
> +};
> +
> static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
> {
> .adr = 0x000030025D071101ull,
> @@ -315,6 +350,30 @@ static const struct snd_soc_acpi_link_adr
> ptl_cs42l43_agg_l3_cs35l56_l2[] = {
> {}
> };
>
> +/*
> + * ASUS ZenBook S14 UX5406AA: CS42L43 on link 3, CS35L56 x4 on links 1
> and 2.
> + * Link 1 carries AMP3 (uid=2) and AMP4 (uid=3).
> + * Link 2 carries AMP1 (uid=0) and AMP2 (uid=1).
> + */
> +static const struct snd_soc_acpi_link_adr ptl_cs42l43_agg_l3_cs35l56_l12[] =
> {
> + {
> + .mask = BIT(3),
> + .num_adr = ARRAY_SIZE(cs42l43_3_agg_adr),
> + .adr_d = cs42l43_3_agg_adr,
> + },
> + {
> + .mask = BIT(2),
> + .num_adr = ARRAY_SIZE(cs35l56_2_lr_adr),
> + .adr_d = cs35l56_2_lr_adr,
> + },
> + {
> + .mask = BIT(1),
> + .num_adr = ARRAY_SIZE(cs35l56_1_lr_adr),
> + .adr_d = cs35l56_1_lr_adr,
> + },
> + {}
> +};
> +
> static const struct snd_soc_acpi_link_adr ptl_rt722_l0_rt1320_l23[] = {
> {
> .mask = BIT(0),
> @@ -510,6 +569,14 @@ struct snd_soc_acpi_mach
> snd_soc_acpi_intel_ptl_sdw_machines[] = {
> .sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l2.tplg",
> .get_function_tplg_files = sof_sdw_get_tplg_files,
> },
> + {
> + /* ASUS ZenBook S14 UX5406AA (Panther Lake): 4x CS35L56
> */
> + /* on links 1+2, CS42L43 on link 3 */
> + .link_mask = BIT(1) | BIT(2) | BIT(3),
> + .links = ptl_cs42l43_agg_l3_cs35l56_l12,
> + .drv_name = "sof_sdw",
> + .sof_tplg_filename = "sof-ptl-cs42l43-agg-l3-cs35l56-l2.tplg",
> + },
> {
> .link_mask = BIT(2) | BIT(3),
> .links = ptl_cs42l43_agg_l3_cs35l56_l2,
> --
> 2.55.0
>