From: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
To: Sergey Lebedev <lsa.uz@pm.me>, Vinod Koul <vkoul@kernel.org>,
Bard Liao <yung-chuan.liao@linux.intel.com>,
Oder Chiou <oder_chiou@realtek.com>,
Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>,
Takashi Iwai <tiwai@suse.com>
Cc: Bard Liao <bard.liao@intel.com>,
Amaan Lalani <zlzzm2014@outlook.com>,
linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 2/2] soundwire: dmi-quirks: drop the ghost RT1320 on the Surface Pro 11 (Intel)
Date: Fri, 4 Sep 2026 09:51:02 +0200 [thread overview]
Message-ID: <10c5c5b4-cfd5-4d69-8312-ccff02a2e05c@linux.dev> (raw)
In-Reply-To: <20260830151516.44629-3-lsa.uz@pm.me>
On 8/30/26 17:15, Sergey Lebedev wrote:
> The Microsoft Surface Pro 11 for Business (Intel, Lunar Lake) carries a
> single physical RT1320 amplifier on link 0 and describes it twice:
>
> SWRA _ADR 0x000030025D132000 SDCA class 0
> SWRB _ADR 0x000030025D132001 SDCA class 1
>
> Identical apart from the class id: same link, same manufacturer, part and
> version, same unique id 0. The part reports class 1, so only SWRB
> enumerates. SWRA never attaches on any boot or firmware version tested,
> including the November 2025 bundle.
>
> The ghost is not harmless. It consumes an amplifier index in
> find_acpi_adr_device(), so the real part is named "rt1320-2" and the stock
> sof-soundwire UCM profile enables switches on a device that is not there.
> Its endpoints also reach create_sdw_dailink(), which builds DAI link names
> from link id and function type alone; the ghost declares the same SmartMic
> function as the real part, so the card fails to register at all:
>
> sysfs: cannot create duplicate filename
> '.../sof_sdw/SDW0-Capture-SmartMic'
> kobject_add_internal failed for SDW0-Capture-SmartMic with -EEXIST
> sof_sdw sof_sdw: probe with driver sof_sdw failed with error -12
>
> Remap its _ADR to zero so sdw_acpi_find_slaves() never creates the
> peripheral, which is how ghost devices are handled already - see
> ghost_realtek and global_ghost_adr in this file. Both failures then
> disappear, because neither path is reached.
>
> Matched on DMI_PRODUCT_SKU rather than the product name. A later batch of
> the same model could carry a different RT1320 version, which would change
> the _ADR; keying on the SKU keeps this remap to the hardware it was
> verified on, and follows dell_sku_0A3E above.
>
> Suggested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
> Suggested-by: Bard Liao <bard.liao@intel.com>
> Signed-off-by: Sergey Lebedev <lsa.uz@pm.me>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
the other 1/2 patch should be skipped for now until the problem with the
NEEDS_INITIALIZATION flag is understood.
> ---
> drivers/soundwire/dmi-quirks.c | 28 ++++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/drivers/soundwire/dmi-quirks.c b/drivers/soundwire/dmi-quirks.c
> index d75037558..8b3c5c8d1 100644
> --- a/drivers/soundwire/dmi-quirks.c
> +++ b/drivers/soundwire/dmi-quirks.c
> @@ -111,6 +111,25 @@ static const struct adr_remap ghost_realtek[] = {
> {}
> };
>
> +/*
> + * The Microsoft Surface Pro 11 (Intel) describes its single physical RT1320
> + * amplifier twice on link 0, as two _ADR entries differing only in SDCA class
> + * id and sharing the same unique id. Only the class 1 entry enumerates; the
> + * class 0 entry is a ghost.
> + *
> + * Matched on the product SKU rather than the product name: a later batch of the
> + * same model could carry a different RT1320 version, which would change the
> + * _ADR. Keying on the SKU keeps this remap to the hardware it was verified on.
> + */
> +static const struct adr_remap microsoft_sp11_intel[] = {
> + /* ghost rt1320 on link0 */
> + {
> + 0x000030025d132000ull,
> + 0x0000000000000000ull
> + },
> + {}
> +};
> +
> static const struct dmi_system_id adr_remap_quirk_table[] = {
> /* TGL devices */
> {
> @@ -207,6 +226,15 @@ static const struct dmi_system_id adr_remap_quirk_table[] = {
> },
> .driver_data = (void *)ghost_realtek,
> },
> + /* LNL devices */
> + {
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
> + DMI_EXACT_MATCH(DMI_PRODUCT_SKU,
> + "Surface_Pro_11th_Edition_With_Intel_For_Business_2103")
> + },
> + .driver_data = (void *)microsoft_sp11_intel,
> + },
> {}
> };
>
next prev parent reply other threads:[~2026-09-04 8:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-30 15:15 [PATCH v3 0/2] ASoC: fix audio on the Microsoft Surface Pro 11 (Intel) Sergey Lebedev
2026-08-30 15:15 ` [PATCH v3 1/2] ASoC: rt1320: run the initialisation preset on the first hardware init Sergey Lebedev
2026-08-30 15:15 ` [PATCH v3 2/2] soundwire: dmi-quirks: drop the ghost RT1320 on the Surface Pro 11 (Intel) Sergey Lebedev
2026-08-30 21:12 ` Sergey Lebedev
2026-09-04 7:51 ` Pierre-Louis Bossart [this message]
2026-09-04 12:36 ` Sergey Lebedev
2026-09-04 14:09 ` Pierre-Louis Bossart
2026-09-04 15:10 ` Sergey Lebedev
2026-08-30 17:47 ` [PATCH v3 0/2] ASoC: fix audio on the Microsoft " Sergey Lebedev
2026-09-13 21:11 ` Sergey Lebedev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=10c5c5b4-cfd5-4d69-8312-ccff02a2e05c@linux.dev \
--to=pierre-louis.bossart@linux.dev \
--cc=bard.liao@intel.com \
--cc=broonie@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=lsa.uz@pm.me \
--cc=oder_chiou@realtek.com \
--cc=perex@perex.cz \
--cc=tiwai@suse.com \
--cc=vkoul@kernel.org \
--cc=yung-chuan.liao@linux.intel.com \
--cc=zlzzm2014@outlook.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.