public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev, stable@vger.kernel.org
Cc: Zhang Heng <zhangheng@kylinos.cn>, Takashi Iwai <tiwai@suse.de>,
	Sasha Levin <sashal@kernel.org>,
	perex@perex.cz, tiwai@suse.com, linux-sound@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH AUTOSEL 6.19-6.12] ALSA: hda/realtek: add quirk for ASUS UM6702RC
Date: Tue, 17 Mar 2026 07:32:41 -0400	[thread overview]
Message-ID: <20260317113249.117771-10-sashal@kernel.org> (raw)
In-Reply-To: <20260317113249.117771-1-sashal@kernel.org>

From: Zhang Heng <zhangheng@kylinos.cn>

[ 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@kylinos.cn>
Link: https://patch.msgid.link/20260306123317.575346-1-zhangheng@kylinos.cn
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

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


  parent reply	other threads:[~2026-03-17 11:33 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-17 11:32 [PATCH AUTOSEL 6.19-6.1] ALSA: hda/realtek: add HP Laptop 14s-dr5xxx mute LED quirk Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.6] spi: intel-pci: Add support for Nova Lake mobile SPI flash Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19] objtool: Use HOSTCFLAGS for HAVE_XXHASH test Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.18] powerpc64/ftrace: fix OOL stub count with clang Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.12] nvmet: move async event work off nvmet-wq Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.12] drm/amdgpu: fix gpu idle power consumption issue for gfx v12 Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19] objtool/klp: Disable unsupported pr_debug() usage Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19] ALSA: usb-audio: Add iface reset and delay quirk for SPACETOUCH USB Audio Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.1] usb: core: new quirk to handle devices with zero configurations Sasha Levin
2026-03-17 11:32 ` Sasha Levin [this message]
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.6] objtool: Handle Clang RSP musical chairs Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.12] sched_ext: Use WRITE_ONCE() for the write side of dsq->seq update Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.1] btrfs: set BTRFS_ROOT_ORPHAN_CLEANUP during subvol create Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.18] ALSA: hda/realtek: Add quirk for Gigabyte Technology to fix headphone Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-6.12] i3c: master: dw-i3c: Fix missing of_node for virtual I2C adapter Sasha Levin
2026-03-17 11:32 ` [PATCH AUTOSEL 6.19-5.10] ALSA: hda/realtek: Add headset jack quirk for Thinkpad X390 Sasha Levin

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=20260317113249.117771-10-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=perex@perex.cz \
    --cc=stable@vger.kernel.org \
    --cc=tiwai@suse.com \
    --cc=tiwai@suse.de \
    --cc=zhangheng@kylinos.cn \
    /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