All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suzu <suzu1dev@gmail.com>
To: tiwai@suse.com, perex@perex.cz
Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [RFC PATCH] ALSA: hda/intel: Disable power saving on ASUS GU605CX
Date: Mon,  7 Sep 2026 04:24:39 +0800	[thread overview]
Message-ID: <20260906202439.209462-1-suzu1dev@gmail.com> (raw)

On the ASUS ROG Zephyrus G16 GU605CX, the ALC285 analog headphone
output produces a loud pop about ten seconds after playback stops
with power_save=10. This was reproduced with iLoud Micro Monitor
powered speakers connected to the 3.5 mm jack. Setting power_save=0
eliminated the idle pops in repeated pause/resume tests on
7.2.3-arch1-2, with power_save_controller left enabled.

Extend the power-save denylist check to cover the tested Intel HDA
controller (8086:7728, subsystem 1043:1034) on this board. Check the
DMI board vendor and name as well, since GU605CW also uses subsystem
1043:1034 and has not been tested for this issue. Keep the existing
pm_blacklist override behavior.

Disabling idle power saving can increase idle power consumption on
the matched controller. A separate pop during shutdown was still
observed with power_save=0; this change does not address it.

Link: https://github.com/omacom/omarchy/pull/10498
Assisted-by: LLM
Signed-off-by: Suzu <suzu1dev@gmail.com>
---
Validation completed on the affected GU605CX:
- Built and booted the complete patched 7.3-rc1 kernel; the native
  kernel build log contains no warnings.
- Verified that the loaded HDA module's srcversion matches the built
  artifact for 7.3.0-rc1-audio-pop-test.
- Confirmed power_save=10, power_save_controller=Y and pm_blacklist=-1,
  with the expected 1043:1034 power-save denylist message.
- In five samples spanning 40 seconds, the Intel analog PipeWire sink
  was SUSPENDED while the ALC285 remained runtime-active with
  power/control=on. This was sampled observation, not continuous tracing.
- Intel and NVIDIA HDMI codecs were observed suspended with
  power/control=auto; the NVIDIA HDA controller was also suspended.
- After booting this kernel and receiving the pause/resume test
  instructions, the user confirmed that the popping was no longer
  audible. The exact number of cycles and pause durations were not
  separately reported for this patched-kernel test.
- The earlier power_save=0 workaround also passed human pause/resume
  listening tests on 7.2.3-arch1-2, with controller power saving enabled.

Headphone switching, internal speakers and suspend/resume checks have
not been reported for this patched kernel. Boot-time popping remains
unverified. A shutdown pop was previously observed with power_save=0;
this change does not address that shutdown path. No reliable measurement
of additional idle power consumption is available.

Test-build context: an Arch-derived configuration with debug information
and BTF disabled was used. NVIDIA 610.57.04 test modules required a
separate local adaptation for the 7.3 dmem cgroup registration API.
Those modules built and initialized; their objtool return warnings also
occurred in the production-driver build. The NVIDIA adaptation is not
part of this audio patch. Full graphics regression testing was not done.

AI assistance: I asked OpenAI Codex to investigate the idle pops
and prepare a GU605CX-specific fix. It assisted with the patch,
changelog and build/runtime checks. I performed the listening
tests; results are described above. I booted the patched kernel
and confirmed that the idle pop was no longer audible.

No introducing commit has been identified, so no Fixes tag is proposed.

 sound/hda/controllers/intel.c | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/sound/hda/controllers/intel.c b/sound/hda/controllers/intel.c
index 24015c73a..6da1d7ee5 100644
--- a/sound/hda/controllers/intel.c
+++ b/sound/hda/controllers/intel.c
@@ -2328,18 +2328,30 @@ static const struct snd_pci_quirk power_save_denylist[] = {
 	{}
 };
 
+static bool azx_is_power_save_denylisted(struct pci_dev *pci)
+{
+	if (snd_pci_quirk_lookup(pci, power_save_denylist))
+		return true;
+
+	/* GU605CW shares the subsystem ID; only GU605CX was tested. */
+	return pci->vendor == PCI_VENDOR_ID_INTEL &&
+	       pci->device == PCI_DEVICE_ID_INTEL_HDA_ARL &&
+	       pci->subsystem_vendor == 0x1043 &&
+	       pci->subsystem_device == 0x1034 &&
+	       dmi_match(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC.") &&
+	       dmi_match(DMI_BOARD_NAME, "GU605CX");
+}
+
 static void set_default_power_save(struct azx *chip)
 {
 	struct hda_intel *hda = container_of(chip, struct hda_intel, chip);
 	int val = power_save;
 
 	if (pm_blacklist < 0) {
-		const struct snd_pci_quirk *q;
-
-		q = snd_pci_quirk_lookup(chip->pci, power_save_denylist);
-		if (q && val) {
+		if (val && azx_is_power_save_denylisted(chip->pci)) {
 			dev_info(chip->card->dev, "device %04x:%04x is on the power_save denylist, forcing power_save to 0\n",
-				 q->subvendor, q->subdevice);
+				 chip->pci->subsystem_vendor,
+				 chip->pci->subsystem_device);
 			val = 0;
 			hda->runtime_pm_disabled = 1;
 		}

base-commit: 45b5beb60bf7bd41c55ef17f6f2d28b351fad6c0
-- 
2.55.0


             reply	other threads:[~2026-09-06 20:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-06 20:24 Suzu [this message]
2026-09-08  7:21 ` [RFC PATCH] ALSA: hda/intel: Disable power saving on ASUS GU605CX Takashi Iwai

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=20260906202439.209462-1-suzu1dev@gmail.com \
    --to=suzu1dev@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.