From: Sergey Lebedev <lsa.uz@pm.me>
To: Vinod Koul <vkoul@kernel.org>,
Bard Liao <yung-chuan.liao@linux.intel.com>,
Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
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>,
Shuming Fan <shumingf@realtek.com>,
Amaan Lalani <zlzzm2014@outlook.com>,
linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 0/2] ASoC: fix audio on the Microsoft Surface Pro 11 (Intel)
Date: Sun, 30 Aug 2026 17:47:51 +0000 [thread overview]
Message-ID: <20260830174741.39644-1-lsa.uz@pm.me> (raw)
In-Reply-To: <20260830151516.44629-1-lsa.uz@pm.me>
Please do not apply 1/2. I cannot reproduce the condition it fixes, and I
would rather say so myself than have it found in review.
The patch rests on one claim: that this part never sets
FUNCTION_NEEDS_INITIALIZATION, so rt1320_io_init() never runs the vendor
preset and the amplifier is never programmed. Every func_status line I
recorded in July reads 0x41 - NEWLY_ATTACHED | FUNCTION_HAS_BEEN_RESET,
without BIT(5).
Re-tested tonight on the same machine, with the stock rt1320 driver and my
patch not loaded:
rt1320-sdca sdw:0:0:025d:1320:01: rt1320_io_init amp func_status=0x61
rt1320-sdca sdw:0:0:025d:1320:01: rt1320_vc_preset, RT1320_KR0_INT_READY=0x0
rt1320-sdca sdw:0:0:025d:1320:01: rt1320_vc_preset, RT1320_KR0_INT_READY=0x1f
0x61 is 0x41 | BIT(5). The bit is set, the stock driver runs the preset, and
the patch is a no-op. Same reading in three configurations - with the ghost
_ADR removed, with a machine-entry approach that leaves it enumerated, and
fully stock - and on a genuine cold boot, not a reboot: the previous boot
ended in systemd-poweroff and an RTC alarm brought the machine back from S5.
The speakers work without the patch, and I checked that by measurement rather
than by reading logs, because silence with every layer reporting success is
the exact failure mode here. Playing a 1 kHz tone and recording the internal
microphone, the 1 kHz bin rises 185x over ambient with the patch absent, 610x
with it present. Both are unambiguously audible; the difference is room noise.
What I ruled out:
- the gate is unchanged. if ((amp_func_status & FUNCTION_NEEDS_INITIALIZATION))
is identical in v7.0 and v7.1-rc7, the tree this series targets
- Ubuntu changed nothing relevant between 7.0.0-28 and 7.0.0-30: no rt1320,
sdca, soundwire or sdw entry in the changelog
- firmware predates the July readings. firmware-sof-signed went to 2025.12.2
on 2026-07-27 and the Surface firmware bundle was applied 2026-07-28
- the ghost is not involved: fully stock, it never reaches rt1320_io_init()
at all, and the real device still reports 0x61
So I have no explanation for the change, and I am not going to invent one. If
someone knows how an SDCA part stops asserting that status bit between one
month and the next, I would like to hear it - that is worth more to the
subsystem than the patch was. I still have the hardware and will test whatever
is useful.
2/2 is unaffected and I would ask that it still be considered. I re-verified it
the same night by running fully stock:
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
aplay -l reports zero cards. Without the quirk this machine has no audio device
at all, so that patch is not an optimisation.
One more result from the same night, since it bears on the approach. I compared
this series against the downstream machine-entry patch that Surface Pro 11 users
run today, on one machine and one kernel, swapping only the audio modules. Both
end up with the same configuration - same three function topologies, 4 playback
+ 1 capture, rt1320-1, working microphone. The difference is what each costs:
the machine entry does not match at all unless class_id is added to
SDW_CODEC_ADR_MASK and to the peripheral comparison in soc-acpi.c, because
generic matching sees two peripherals for the one address it declares. That is
shared code for every SoundWire machine. Removing the ghost at enumeration needs
no such change.
Sorry for the noise on 1/2.
Thanks,
Sergey
prev parent reply other threads:[~2026-08-30 17:48 UTC|newest]
Thread overview: 9+ 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
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 ` Sergey Lebedev [this message]
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=20260830174741.39644-1-lsa.uz@pm.me \
--to=lsa.uz@pm.me \
--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=oder_chiou@realtek.com \
--cc=perex@perex.cz \
--cc=pierre-louis.bossart@linux.dev \
--cc=shumingf@realtek.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox