[PATCH AUTOSEL 6.19-6.12] ALSA: hda/realtek: add quirk for ASUS UM6702RC

From: Sasha Levin

Date: Tue Mar 17 2026 - 07:37:27 EST


From: Zhang Heng <zhangheng@xxxxxxxxxx>

[ Upstream commit 0d3429f12133c2ca47aa82ddab2342bc360c47d3 ]

The sound card of this machine cannot adjust the volume, it can only
be 0 or 100%. The reason is that the DAC with pin 0x17 is connected
to 0x06. Testing found that connecting 0x02 can fix this problem.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=220356
Signed-off-by: Zhang Heng <zhangheng@xxxxxxxxxx>
Link: https://patch.msgid.link/20260306123317.575346-1-zhangheng@xxxxxxxxxx
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---

LLM Generated explanations, may be completely bogus:

Good. Now I have all the information needed for analysis.

## Analysis

### 1. Commit Message Analysis
This commit adds a hardware quirk for the ASUS UM6702RC laptop where
volume control is broken (only 0% or 100%). The root cause is
identified: DAC pin 0x17 is connected to 0x06 (which lacks volume
control), and connecting to 0x02 fixes it. The commit links to
**bugzilla.kernel.org bug #220356**, confirming a real user-reported
issue. Accepted by ALSA maintainer Takashi Iwai.

### 2. Code Change Analysis
The change adds a single line:
```c
HDA_CODEC_QUIRK(0x1043, 0x1ee2, "ASUS UM6702RA/RC",
ALC285_FIXUP_ASUS_I2C_SPEAKER2_TO_DAC1),
```
This is placed before the existing `SND_PCI_QUIRK` entry for the same
device. The `HDA_CODEC_QUIRK` macro matches by **codec SSID** (rather
than PCI SSID), enabling the `ALC285_FIXUP_ASUS_I2C_SPEAKER2_TO_DAC1`
fixup which:
1. Overrides the connection list for NID 0x17 to route to DAC 0x02
instead of 0x06 (fixing volume control)
2. Chains to `ALC287_FIXUP_CS35L41_I2C_2` (the existing CS35L41
amplifier configuration)

### 3. Classification
This is a **hardware quirk addition** — one of the explicitly allowed
exception categories for stable backports. It fixes broken audio volume
control on a specific ASUS laptop model.

### 4. Scope and Risk
- **One line added** — minimal change
- Only affects this specific ASUS UM6702RA/RC hardware
- Zero risk to other hardware — quirks only match specific vendor/device
IDs
- The fixup function (`alc285_fixup_speaker2_to_dac1`) is well-
established and used for other devices (Lenovo Carbon X1, ASUS GU605,
etc.)

### 5. User Impact
Users with ASUS UM6702RC laptops have effectively **non-functional
volume control** — audio is either completely silent or at maximum
volume. This is a significant usability issue that makes the laptop's
audio nearly unusable for normal tasks.

### 6. Dependency Analysis
- **`ALC285_FIXUP_ASUS_I2C_SPEAKER2_TO_DAC1`**: Present in v6.6+ and
v6.12+ stable trees ✓
- **`HDA_CODEC_QUIRK` macro**: Introduced in commit `5b1913a79c3e0`
(v6.13-rc1). **NOT present in v6.12.y or older stable trees**
- **File reorganization**: Code moved from
`sound/pci/hda/patch_realtek.c` to `sound/hda/codecs/realtek/alc269.c`
in v6.19+

For **v6.13.y+**: The `HDA_CODEC_QUIRK` infrastructure exists; backport
needs only file path adjustment.
For **v6.12.y and older**: Would need adaptation — either backport the
`HDA_CODEC_QUIRK` infrastructure or use the older codec SSID matching
mechanism. The fixup itself exists but the macro to reference it in the
quirk table does not.

### Verification
- Confirmed `ALC285_FIXUP_ASUS_I2C_SPEAKER2_TO_DAC1` exists in v6.6
(`git show v6.6:sound/pci/hda/patch_realtek.c`) and v6.12
- Confirmed `HDA_CODEC_QUIRK` was introduced in commit `5b1913a79c3e0`
(Oct 2024, v6.13-rc1) via `git tag --contains`
- Confirmed the existing `SND_PCI_QUIRK(0x1043, 0x1ee2, ...)` entry
exists in v6.12 stable tree
- Confirmed the `alc285_fixup_speaker2_to_dac1` function overrides NID
0x17 connection to DAC 0x02 (read from current source)
- Confirmed the `ALC285_FIXUP_ASUS_I2C_SPEAKER2_TO_DAC1` chains to
`ALC287_FIXUP_CS35L41_I2C_2` (verified in source at line 5006)
- Bug report exists at bugzilla.kernel.org #220356 (linked in commit
message, not independently fetched)

### Conclusion
This is a textbook stable-worthy hardware quirk. It's a single-line
addition that fixes completely broken volume control on a specific ASUS
laptop, reported by a real user with a bugzilla entry. The fix uses an
existing, well-tested fixup mechanism. The only concern is that
backporting to v6.12.y and older requires adaptation due to the
`HDA_CODEC_QUIRK` infrastructure dependency, but that's a mechanical
concern for the stable maintainers, not a reason to reject the backport.
For v6.13.y+, it's a trivial backport.

**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 f213f8792b01f..1a9973e1e9a84 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -7251,6 +7251,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x1e93, "ASUS ExpertBook B9403CVAR", ALC294_FIXUP_ASUS_HPE),
SND_PCI_QUIRK(0x1043, 0x1eb3, "ASUS Ally RCLA72", ALC287_FIXUP_TAS2781_I2C),
SND_PCI_QUIRK(0x1043, 0x1ed3, "ASUS HN7306W", ALC287_FIXUP_CS35L41_I2C_2),
+ HDA_CODEC_QUIRK(0x1043, 0x1ee2, "ASUS UM6702RA/RC", ALC285_FIXUP_ASUS_I2C_SPEAKER2_TO_DAC1),
SND_PCI_QUIRK(0x1043, 0x1ee2, "ASUS UM6702RA/RC", ALC287_FIXUP_CS35L41_I2C_2),
SND_PCI_QUIRK(0x1043, 0x1c52, "ASUS Zephyrus G15 2022", ALC289_FIXUP_ASUS_GA401),
SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401),
--
2.51.0