[PATCH AUTOSEL 7.0] ALSA: hda/realtek: ALC269 fixup for Lenovo Yoga Pro 7 15ASH111 audio

Sasha Levin posted 1 patch 4 days, 11 hours ago
sound/hda/codecs/realtek/alc269.c | 1 +
1 file changed, 1 insertion(+)
[PATCH AUTOSEL 7.0] ALSA: hda/realtek: ALC269 fixup for Lenovo Yoga Pro 7 15ASH111 audio
Posted by Sasha Levin 4 days, 11 hours ago
From: Jackie Dong <xy-jackie@139.com>

[ Upstream commit 83dca2530fb3ba63f47bad339d890bc30aa06ab5 ]

Volume control for the speakers on the Lenovo Yoga Pro 7 15ASH11 laptop
doesn't work.
The DAC routing is the same as on the ThinkPad X1 Gen7 function, so reuse
the alc285_fixup_thinkpad_x1_gen7 to get it working.

Signed-off-by: Jackie Dong <xy-jackie@139.com>
Link: https://patch.msgid.link/20260514153940.7320-1-xy-jackie@139.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

## Phase Walkthrough
Phase 1 Record:
1. Subject: subsystem `ALSA: hda/realtek`; action `fixup`; intent is to
   fix Lenovo Yoga Pro 7 15ASH11 speaker volume control.
2. Tags: `Signed-off-by: Jackie Dong`, `Link:
   https://patch.msgid.link/20260514153940.7320-1-xy-jackie@139.com`,
   `Signed-off-by: Takashi Iwai`. No `Fixes`, `Reported-by`, `Tested-
   by`, `Reviewed-by`, or stable Cc tag.
3. Body: the reported bug is that speaker volume control does not work
   on Lenovo Yoga Pro 7 15ASH11. Root cause explanation given: DAC
   routing matches the ThinkPad X1 Gen7 routing case, so the existing
   routing fixup is reused.
4. Hidden bug fix: yes. Although phrased as a “fixup”, this is a
   hardware-specific quirk correcting broken speaker mixer/routing
   behavior.

Phase 2 Record:
1. Inventory: one file, `sound/hda/codecs/realtek/alc269.c`; one line
   added to `alc269_fixup_tbl`; single-file surgical hardware quirk.
2. Hunk behavior: before, PCI SSID `17aa:38fc` had no matching Realtek
   fixup entry. After, it maps to `ALC245_FIXUP_BASS_HP_DAC`.
3. Bug mechanism: hardware workaround / audio codec quirk. Verified
   `ALC245_FIXUP_BASS_HP_DAC` calls `alc285_fixup_thinkpad_x1_gen7`,
   which overrides DAC routing for NID `0x17`, sets preferred DAC pairs,
   and renames confusing volume controls.
4. Fix quality: obviously small and contained. Regression risk is very
   low because matching is limited to Lenovo PCI SSID `17aa:38fc`.

Phase 3 Record:
1. Blame: the added line is from candidate commit `83dca2530fb3b`;
   adjacent Lenovo quirk-table entries mostly come from earlier Realtek
   table history. Candidate is contained in `v7.1-rc4`.
2. Fixes tag: none, so no introducing commit to follow.
3. Related file history: recent `alc269.c` history is dominated by
   similar Realtek laptop quirk fixes. Related Lenovo Yoga Pro 7 quirks
   exist for 14IMH9 and 14IAH10.
4. Author history: Jackie Dong has this one Realtek commit in the
   checked history. Takashi Iwai committed it; `MAINTAINERS` lists
   Takashi Iwai as SOUND maintainer.
5. Dependencies: `ALC245_FIXUP_BASS_HP_DAC` was introduced by
   `e347430182492` in mainline and exists in `stable/linux-7.0.y`;
   `stable/linux-6.19.y` has an equivalent backport `3c756e813f212`.
   Older checked stable branches lack that symbol and need a
   dependency/backport adjustment.

Phase 4 Record:
1. `b4 dig -c 83dca2530fb3b` found the original thread at the supplied
   patch URL.
2. `b4 dig -a` found v1 and v2; v2 is the committed version. The v2
   change was “Use `ALC245_FIXUP_BASS_HP_DAC` instead of creating a new
   quirk.”
3. `b4 dig -w` showed ALSA maintainers/lists and Lenovo contact were
   included.
4. Saved thread shows Takashi Iwai replied “Applied now”, with only a
   minor subject-line modification. No NAKs or risk objections were
   present in the matched thread.
5. Lore WebFetch searches were blocked by Anubis; WebSearch found
   related Yoga Pro audio issues but no additional specific 15ASH11
   report. Stable-list WebFetch was also blocked.

Phase 5 Record:
1. Modified object: `alc269_fixup_tbl` static quirk table.
2. Callers: `alc269_probe()` calls `snd_hda_pick_fixup()` with
   `alc269_fixup_tbl`; `alc269_probe()` is installed via
   `alc269_codec_ops`; ALC245 is listed in `snd_hda_id_alc269`.
3. Callees/effects: `snd_hda_pick_fixup()` matches PCI SSID first, then
   selects the fixup ID. `snd_hda_apply_fixup(...PRE_PROBE)` applies it
   before auto-parse.
4. Reachability: reachable during HDA codec probe on systems with
   Realtek ALC245/compatible hardware and PCI SSID `17aa:38fc`; normal
   boot/device initialization path.
5. Similar patterns: the table contains many Lenovo and other laptop
   Realtek quirks; `ALC245_FIXUP_BASS_HP_DAC` is already used for
   Minisforum V3 SE.

Phase 6 Record:
1. Stable presence: `stable/linux-7.0.y` and `stable/linux-6.19.y`
   contain the generic fixup but lack the new `17aa:38fc` entry.
   `stable/linux-6.18.y` and older checked branches lack
   `ALC245_FIXUP_BASS_HP_DAC`, though they do have ALC245 support and
   the underlying ThinkPad routing helper.
2. Backport difficulty: clean/simple for 7.0.y and 6.19.y. Older
   branches need either the generic fixup dependency or a small
   equivalent backport, and 6.12.y/older use
   `sound/pci/hda/patch_realtek.c` rather than the split path.
3. Related stable fixes: searches of 7.0.y and 6.19.y found no existing
   15ASH11 quirk.

Phase 7 Record:
1. Subsystem: ALSA HDA Realtek codec driver, driver-specific but common
   laptop audio path; criticality is important for affected hardware,
   not core-wide.
2. Activity: recent history shows many similar Realtek laptop quirk
   fixes, so this fits active subsystem practice.

Phase 8 Record:
1. Affected users: owners of Lenovo Yoga Pro 7 15ASH11 with PCI SSID
   `17aa:38fc`.
2. Trigger: normal audio use after codec probe; users see speaker volume
   control not working. No verified security or crash trigger.
3. Severity: medium functional regression/hardware enablement issue; not
   a panic/corruption bug.
4. Risk-benefit: benefit is high for the affected laptop; risk is very
   low because the change is a single SSID-scoped quirk using an
   existing fixup.

Phase 9 Record:
1. Evidence for: real user-visible audio control failure, hardware-
   specific quirk exception, one-line scoped change, existing fixup
   reused, ALSA maintainer applied, v2 incorporated review feedback.
2. Evidence against: not a crash/security/data-corruption fix; older
   stable branches may need prerequisite/backport adjustment.
3. Stable rules: obviously correct yes; fixes real user-visible bug yes;
   important issue yes under hardware quirk/workaround policy; small and
   contained yes; no new API yes; applies cleanly to trees with existing
   `ALC245_FIXUP_BASS_HP_DAC`, otherwise needs minor dependency
   handling.
4. Exception category: hardware-specific audio codec quirk. Decision:
   backport.

## Verification
- [Phase 1] `git show --format=fuller 83dca2530fb3b` verified subject,
  body, tags, author, committer, and one-line diff.
- [Phase 2] Diff verified one insertion in `alc269_fixup_tbl`:
  `SND_PCI_QUIRK(0x17aa, 0x38fc, ..., ALC245_FIXUP_BASS_HP_DAC)`.
- [Phase 3] `git blame origin/master -L 7762,7768` verified the
  candidate line attribution.
- [Phase 3] `git describe --contains 83dca2530fb3b` verified inclusion
  in `v7.1-rc4`.
- [Phase 3] `git log -S"ALC245_FIXUP_BASS_HP_DAC"` verified the generic
  fixup came from `e347430182492`.
- [Phase 4] `b4 dig -c`, `-a`, `-w`, and saved mbox verified the v1/v2
  thread, recipients, and Takashi’s “Applied now” reply.
- [Phase 5] Reads of `alc269.c` and `auto_parser.c` verified probe-time
  PCI SSID matching and fixup application.
- [Phase 6] Stable branch checks verified 7.0.y and 6.19.y have the
  generic fixup and lack `17aa:38fc`; older checked branches lack the
  generic fixup symbol.
- [Phase 8] Failure mode is verified from the commit body: speaker
  volume control does not work. No crash/security impact was verified.

This should be backported, with dependency/backport adjustment for trees
that do not yet have `ALC245_FIXUP_BASS_HP_DAC`.

**YES**

 sound/hda/codecs/realtek/alc269.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
index 7e0289a1a1ca7..4e0885c1fc496 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -7722,6 +7722,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x17aa, 0x38df, "Y990 YG DUAL", ALC287_FIXUP_TAS2781_I2C),
 	SND_PCI_QUIRK(0x17aa, 0x38f9, "Thinkbook 16P Gen5", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD),
 	SND_PCI_QUIRK(0x17aa, 0x38fa, "Thinkbook 16P Gen5", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD),
+	SND_PCI_QUIRK(0x17aa, 0x38fc, "Lenovo Yoga Pro 7 15ASH11", ALC245_FIXUP_BASS_HP_DAC),
 	SND_PCI_QUIRK(0x17aa, 0x38fd, "ThinkBook plus Gen5 Hybrid", ALC287_FIXUP_TAS2781_I2C),
 	SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
 	SND_PCI_QUIRK(0x17aa, 0x390d, "Lenovo Yoga Pro 7 14ASP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
-- 
2.53.0