[PATCH AUTOSEL 7.0] ALSA: hda/realtek: add quirk for HONOR MRB-XXX M1020

Sasha Levin
2026-04-28T10:41:36Z

From: Timofey Tarasenko <timka.tarasen@gmail.com>

[ Upstream commit d9448dca423543c6c0a9890d3ff53a5d51895318 ]

Adds pin fixups to enable subwoofer and JACK functionality
on Honor Magicbook Art 14 2025 (HONOR MRB-XXX M1020)

Closes: https://bugzilla.kernel.org/show_bug.cgi?id=221147
Signed-off-by: Timofey Tarasenko <timka.tarasen@gmail.com>
Link: https://patch.msgid.link/20260415074657.1217862-1-timka.tarasen@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

Now I have enough information to make a thorough analysis.

## Phase 1: COMMIT MESSAGE FORENSICS

**Step 1.1: Subject line parsing**
- Subsystem: `ALSA: hda/realtek:`
- Action verb: "add quirk"
- Summary: Add audio quirk for HONOR Magicbook Art 14 2025 (HONOR MRB-
XXX M1020)
- Record: `[ALSA: hda/realtek] [add quirk] [enable subwoofer and JACK on
Honor Magicbook Art 14 2025]`

**Step 1.2: Commit tags**
- `Closes: https://bugzilla.kernel.org/show_bug.cgi?id=221147` - real
user bug report
- `Signed-off-by: Timofey Tarasenko` (author)
- `Link: https://patch.msgid.link/...` - mailing list submission link
- `Signed-off-by: Takashi Iwai` (maintainer) - the ALSA HDA maintainer
- No `Fixes:` tag (expected - this is hardware enablement, not a
regression fix)
- No `Cc: stable` (expected for review pipeline - per problem statement,
absence isn't negative)
- Record: `[Bugzilla closed by patch] [Signed off by ALSA maintainer
Takashi Iwai]`

**Step 1.3: Commit body analysis**
- Bug: subwoofer and JACK functionality don't work out-of-the-box on
HONOR Magicbook Art 14 2025
- Symptom: hardware features non-functional without correct pin
configuration
- Mechanism: HDA codec auto-config does not produce correct pin
defaults; explicit pin config needed
- Record: `[Subwoofer + headset jack non-functional] [Failure mode:
missing audio output and jack detection] [Root cause: BIOS pin
defaults inadequate, override needed]`

**Step 1.4: Hidden bug fix detection**
- This is overtly hardware enablement via quirk, not disguised as a fix
- Without it the laptop's audio hardware is partially non-functional
- Record: `[Not disguised cleanup - it is an explicit hardware-enabling
quirk]`

## Phase 2: DIFF ANALYSIS

**Step 2.1: Inventory**
- 1 file: `sound/hda/codecs/realtek/alc269.c` (+13/-0 net)
- 4 small additions: enum entry, fixup definition, SND_PCI_QUIRK entry,
model name entry
- Scope: Single-file, additive-only, surgical
- Record: `[1 file, ~13 lines added, 0 removed] [Functions touched: none
- data tables only] [Scope: surgical, additive only]`

**Step 2.2: Code flow change**
- Before: PCI ID 0x1ee7:0x2081 (HONOR MRB-XXX M1020) hits the alc269
driver but no specific fixup applies, leaving BIOS-default pin
configuration
- After: The driver's quirk table matches this PCI ID and applies pin
overrides for nodes 0x14 (speaker, 0x90170111), 0x19 (mic-in headset
jack, 0x03a1113c), 0x1a (subwoofer, 0x22a190a0), 0x1b (speaker,
0x90170110)
- Record: `[Before: BIOS pin defaults wrong -> sub/jack don't work] ->
[After: explicit pin config applied at probe -> hardware fully works]`

**Step 2.3: Bug mechanism**
- Category: Hardware workaround / quirk (item h in the bug categories)
- Mechanism: BIOS/firmware reports incorrect pin defaults; the patch
overrides them via the standard HDA_FIXUP_PINS mechanism, which is the
canonical method for these problems
- Record: `[Bug category: hardware quirk for incorrect BIOS pin
defaults] [Mechanism: pintbl override of 4 widget pin configurations]`

**Step 2.4: Fix quality**
- Identical pattern to dozens of existing quirks in the same file (e.g.,
line 7755 `HONOR BRB-X M1010`, the touchpad quirk for the same laptop
family in HID)
- The pin values follow standard Realtek pin defaults format (0x90170110
= internal speaker, 0x03a1113c = headset jack, 0x22a190a0 = subwoofer-
style internal speaker)
- Cannot regress: applies only to the specific PCI ID 0x1ee7:0x2081
- Record: `[Fix quality: high, follows established patterns] [Regression
risk: zero for users without this exact device]`

## Phase 3: GIT HISTORY INVESTIGATION

**Step 3.1: blame the changed lines**
- The neighbouring entries (HONOR BRB-X M1010 at line 7755) were added
by `b26e2afb3834d` ("ALSA: hda/realtek: Fix headset mic on HONOR
BRB-X" - Aug 11 2025)
- The enum scaffolding has existed since the file was created
- Record: `[The quirk infrastructure has been stable for years; HONOR-
style quirks are an established pattern]`

**Step 3.2: Fixes: tag**
- Not applicable: hardware enablement, not a regression fix
- Record: `[No Fixes: tag - hardware never worked correctly without this
quirk]`

**Step 3.3: File history of related changes**
- The HONOR BRB-X M1010 quirk (`b26e2afb3834d`) was explicitly tagged
`Cc: <stable@vger.kernel.org>` and went to stable
- Similar recent quirks: `dd9b99b822684` (Acer Swift SFG14-73 - Cc:
stable), `1fbf85dbf02c9` (HP Victus - Cc: stable), `0bdf27abaf894`
(ASUS Strix G16 - Cc: stable)
- Record: `[Pattern established: similar HONOR quirk b26e2afb3834d was
Cc:stable; multiple recent peer quirks Cc:stable]`

**Step 3.4: Author's other commits**
- Author Timofey Tarasenko has no other commits in this tree (first-time
contributor closing a bugzilla)
- The patch was reviewed and signed-off by Takashi Iwai, the actual ALSA
HDA maintainer
- Record: `[Author: bug reporter / first-time contributor] [Vetted by
maintainer Takashi Iwai]`

**Step 3.5: Dependencies**
- The fixup uses only HDA_FIXUP_PINS infrastructure that has existed for
over a decade
- No prerequisite commits required
- Record: `[Standalone] [Zero prerequisites - HDA_FIXUP_PINS is core
infrastructure]`

## Phase 4: MAILING LIST RESEARCH

**Step 4.1-4.5:**
- Direct fetches to lore.kernel.org and bugzilla.kernel.org are blocked
by Anubis anti-bot challenge from this environment
- The commit message itself contains the Bugzilla and lore links
- The commit was applied with the maintainer's Signed-off-by, indicating
maintainer approval after review
- The HONOR MagicBook Art 14 family already has companion quirks merged
elsewhere (HID touchpad, HONOR BRB-X audio)
- Record: `[lore/bugzilla unreachable from this environment due to
Anubis] [Maintainer SOB present] [Companion HONOR-family quirks
already accepted to stable]`

## Phase 5: CODE SEMANTIC ANALYSIS

**Step 5.1: Key functions**
- No function changes - data table additions only
- Affected logic: `snd_hda_pick_fixup()` matching at codec probe time

**Step 5.2-5.4: Reachability**
- The quirk table is consulted during `alc269_fixup_tbl` lookup at HDA
codec probe (boot/resume/module-load)
- Triggered exclusively when the HDA controller exposes subsystem ID
0x1ee7:0x2081
- For all other systems, the new entries are inert (the SND_PCI_QUIRK
arrays are matched by SSID, the fixup is referenced only by enum
index)
- Record: `[Reachability: only when matching SSID 0x1ee7:0x2081 is
present] [No impact on any other system]`

**Step 5.5: Similar patterns**
- The same line block contains hundreds of analogous SND_PCI_QUIRK
entries; the immediate predecessor is the HONOR BRB-X entry (line
7755) which was Cc: stable
- Record: `[Identical pattern repeated across the entire
alc269_fixup_tbl - this is the canonical way to add device-specific
audio quirks]`

## Phase 6: STABLE TREE ANALYSIS

**Step 6.1: Code in stable trees?**
- ALC269/ALC256 driver and `alc269_fixup_tbl` exist in every active
stable tree (5.4+)
- The HDA_FIXUP_PINS framework is decade+ old
- Record: `[Driver and quirk table present in all active stable trees:
5.4, 5.10, 5.15, 6.1, 6.6, 6.12]`

**Step 6.2: Backport complications**
- File path differs between stable trees: in 6.17+ the file is
`sound/hda/codecs/realtek/alc269.c` (after splits `aeeb85f26c3bb` and
`6014e9021b28e` in July 2025); in 6.16 and earlier it is
`sound/pci/hda/patch_realtek.c`
- The four hunks add new enum entries / new struct entries / a new
SND_PCI_QUIRK row / a new model name; they apply cleanly with only
path adjustment because no surrounding code was modified
- Record: `[Backport difficulty: trivial - same content, only path
differs for stable < 6.17]`

**Step 6.3: Already in stable?**
- Not yet present in stable trees; the new SSID 0x1ee7:0x2081 has no
entry
- Record: `[Not in stable; nothing already addresses this device]`

## Phase 7: SUBSYSTEM CONTEXT

**Step 7.1: Subsystem criticality**
- ALSA HDA realtek driver - widely-used audio codec driver shipped with
most x86 laptops
- Criticality classification: PERIPHERAL (specific hardware) but with
high user count
- Record: `[Subsystem: sound/hda] [Criticality: peripheral but
ubiquitous - applies only to one specific laptop SKU]`

**Step 7.2: Subsystem activity**
- High activity - dozens of similar quirks added per release
- Record: `[High activity, well-maintained, quirk additions are
routine]`

## Phase 8: IMPACT AND RISK

**Step 8.1: Affected users**
- Owners of HONOR Magicbook Art 14 2025 laptops (HONOR MRB-XXX M1020)
- Quirk is keyed off SSID 0x1ee7:0x2081, so only this exact device is
affected
- Record: `[Affected: HONOR Magicbook Art 14 2025 owners only; zero
impact on others]`

**Step 8.2: Trigger conditions**
- Triggered every probe (boot/resume/module reload) on the matching
laptop
- Record: `[Trigger: 100% of boots on the affected device, no impact
otherwise]`

**Step 8.3: Failure mode without fix**
- Subwoofer not driven, headset jack mic input/detection broken on the
laptop
- Severity: MEDIUM - functional regression for the user but not a
crash/security issue
- Record: `[Failure mode: missing audio output (subwoofer) and broken
headset functionality] [Severity: MEDIUM - usability/functionality]`

**Step 8.4: Risk-benefit**
- Benefit: real hardware works on stable kernels for affected users
- Risk: virtually zero - additive change, gated by exact SSID
- Record: `[Benefit: medium (per-device, but real)] [Risk: minimal]
[Ratio: strongly favors backport]`

## Phase 9: SYNTHESIS

**Step 9.1: Evidence**
- FOR: Real user bug (Bugzilla 221147), maintainer SOB by Takashi Iwai,
identical pattern to peer HONOR quirk that went to stable, additive-
only, gated by exact SSID, fits the "AUDIO CODEC QUIRKS" exception
explicitly listed as stable-eligible
- AGAINST: Path differs between mainline and stable (cosmetic backport
hurdle only)
- Unresolved: Cannot directly fetch lore for the original review thread
(Anubis challenge)

**Step 9.2: Stable rules**
1. Obviously correct? Yes - data table additions, no logic
2. Real bug? Yes - bugzilla user report
3. Important? Functional hardware enablement (audio HW partly broken
without it)
4. Small? Yes - ~13 lines, 1 file
5. No new features/APIs? Correct - reuses existing HDA fixup framework
6. Applies to stable? Yes with trivial path change for trees <6.17

**Step 9.3: Exception category**
- Falls into "AUDIO CODEC QUIRKS (sound/pci/hda/patch_realtek.c)" - the
policy explicitly states "These are all YES for stable - they fix real
hardware for real users."

**Step 9.4: Decision**
- Strong YES - textbook stable-worthy hardware quirk

## Verification

- [Phase 1] Parsed the commit message: confirmed Closes: bugzilla,
maintainer SOB by Takashi Iwai, no Fixes: or Cc:stable (expected)
- [Phase 2] Read `sound/hda/codecs/realtek/alc269.c` lines 4090-6669 and
7740-7755: verified the diff inserts cleanly into existing tables; pin
values match standard Realtek pintbl format (verified via existing
entries 0x90170110 in many other fixups)
- [Phase 3] `git log --oneline --grep=HONOR -- sound/`: found
`b26e2afb3834d` peer quirk; `git show b26e2afb3834d`: confirmed Cc:
stable in similar HONOR BRB-X quirk
- [Phase 3] `git show` on 7 recent peer quirks (`dd9b99b822684`,
`720460722310c`, `1fbf85dbf02c9`, `bac1e57adf08c`, `0bdf27abaf894`,
`7bae956cac043`, `0d3429f12133c`): three explicit Cc:stable, others
not - confirms maintainer treats device quirks as stable-eligible on a
per-device basis
- [Phase 3] `git log --oneline --grep="quirk for HONOR"`: found
`7a5ab80711143` HID quirk for same HONOR MagicBook Art 14 family -
confirms real product family with multiple needed quirks
- [Phase 4] WebFetch lore.kernel.org and bugzilla.kernel.org: BLOCKED by
Anubis anti-bot, marked UNVERIFIED for direct review thread content;
commit message links are recorded though
- [Phase 5] Grep for `0x1ee7` in current tree: confirmed only one
existing entry (HONOR BRB-X M1010) - the new SSID 0x2081 is not yet
present
- [Phase 6] `git log --diff-filter=A --
sound/hda/codecs/realtek/alc269.c` and `git show aeeb85f26c3bb` and
`git show 6014e9021b28e`: confirmed the file was created via
split+move in July 2025 (mainline 6.17), so older stable trees use
`sound/pci/hda/patch_realtek.c`
- [Phase 8] Reachability: pin fixup applies only when subsystem ID
0x1ee7:0x2081 matches at codec probe - confirmed via `SND_PCI_QUIRK`
macro semantics in the same file
- UNVERIFIED: Direct read of lore.kernel.org thread (b4 dig fallback not
run due to environment limits, but the patch is already applied with
maintainer SOB so review presumably occurred)
- UNVERIFIED: Exact stable trees the maintainer would target - but the
policy in the prompt explicitly classifies audio codec quirks as YES

## Decision

This is a textbook hardware quirk addition - small, surgical, gated by a
unique SSID, fixing real hardware (subwoofer + headset jack) for real
users on a shipping laptop with a Bugzilla report. It matches the
explicit "AUDIO CODEC QUIRKS" exception that the stable rules allow,
follows the same pattern as the peer `HONOR BRB-X M1010` quirk that was
Cc: stable, and is signed off by the ALSA HDA maintainer. Backport
requires only a trivial path change for stable trees older than 6.17.

**YES**

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

diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
index 45f9d64873885..d35932b46267f 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -4124,6 +4124,7 @@ enum {
ALC245_FIXUP_ACER_MICMUTE_LED,
ALC245_FIXUP_CS35L41_I2C_2_MUTE_LED,
ALC236_FIXUP_HP_DMIC,
+ ALC256_FIXUP_HONOR_MRB_XXX_M1020_AUDIO,
};

/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -6666,6 +6667,16 @@ static const struct hda_fixup alc269_fixups[] = {
{ 0x12, 0x90a60160 }, /* use as internal mic */
{ }
},
+ },
+ [ALC256_FIXUP_HONOR_MRB_XXX_M1020_AUDIO] = {
+ .type = HDA_FIXUP_PINS,
+ .v.pins = (const struct hda_pintbl[]) {
+ { 0x14, 0x90170111 },
+ { 0x19, 0x03a1113c },
+ { 0x1a, 0x22a190a0 },
+ { 0x1b, 0x90170110 },
+ { }
+ }
}
};

@@ -7753,6 +7764,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x1d72, 0x1947, "RedmiBook Air", ALC255_FIXUP_XIAOMI_HEADSET_MIC),
SND_PCI_QUIRK(0x1e39, 0xca14, "MEDION NM14LNL", ALC233_FIXUP_MEDION_MTL_SPK),
SND_PCI_QUIRK(0x1ee7, 0x2078, "HONOR BRB-X M1010", ALC2XX_FIXUP_HEADSET_MIC),
+ SND_PCI_QUIRK(0x1ee7, 0x2081, "HONOR MRB-XXX M1020", ALC256_FIXUP_HONOR_MRB_XXX_M1020_AUDIO),
SND_PCI_QUIRK(0x1f4c, 0xe001, "Minisforum V3 (SE)", ALC245_FIXUP_BASS_HP_DAC),
SND_PCI_QUIRK(0x1f66, 0x0105, "Ayaneo Portable Game Player", ALC287_FIXUP_CS35L41_I2C_2),
SND_PCI_QUIRK(0x2014, 0x800a, "Positivo ARN50", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
@@ -7973,6 +7985,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
{.id = ALC236_FIXUP_LENOVO_INV_DMIC, .name = "alc236-fixup-lenovo-inv-mic"},
{.id = ALC2XX_FIXUP_HEADSET_MIC, .name = "alc2xx-fixup-headset-mic"},
{.id = ALC245_FIXUP_BASS_HP_DAC, .name = "alc245-fixup-bass-hp-dac"},
+ {.id = ALC256_FIXUP_HONOR_MRB_XXX_M1020_AUDIO, .name = "alc256-honor-mrb-xxx-m1020-audio"},
{}
};
#define ALC225_STANDARD_PINS \
--
2.53.0