All of lore.kernel.org
 help / color / mirror / Atom feed
From: Justin Vargas <justinyvar@gmail.com>
To: jlee@suse.com, hansg@kernel.org, ilpo.jarvinen@linux.intel.com
Cc: W_Armin@gmx.de, platform-driver-x86@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Justin Vargas <justinyvar@gmail.com>
Subject: [PATCH v4] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
Date: Sun, 20 Sep 2026 01:39:18 -0400	[thread overview]
Message-ID: <20260920053918.1888-1-justinyvar@gmail.com> (raw)
In-Reply-To: <20260729222920.6490-1-justinyvar@gmail.com>

The Acer Nitro ANV15-51 uses the Predator V4 WMI interface for thermal
profile handling, hardware monitoring and fan control, but has no quirk
entry, so none of these features are available.

Add a quirk entry for this model.

Note that this machine does not support the turbo thermal profile:
writing PLATFORM_PROFILE_PERFORMANCE is rejected by the firmware with
-EIO. The four remaining profiles work as expected.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Justin Vargas <justinyvar@gmail.com>
Tested-by: Justin Vargas <justinyvar@gmail.com>
---
v4: Rebased onto review-ilpo-next as requested. The quirk now sets
    .hwmon and .platform_profile separately following 4bee415640e
    ("platform/x86: acer-wmi: split hwmon from platform profile quirk"),
    and uses bool values following 93f8ae8a26b ("platform/x86: acer-wmi:
    use bool for boolean quirk fields"). Dropped the reference to the
    supported profiles bitmap from the commit message, since b0908e03fdd4
    ("platform/x86: acer-wmi: Stop using ACPI bitmap for platform profile
    choices") stopped trusting it; the turbo claim now rests only on the
    firmware rejecting the write. Retested on the new base.
v3: Use a model-specific quirk_entry with cpu_fans, gpu_fans and pwm
    set, as suggested by Armin Wolf, instead of reusing
    quirk_acer_predator_v4. Fan control tested.
v2: Add Assisted-by trailer per
    Documentation/process/coding-assistants.rst.

Tested on an Acer Nitro ANV15-51, BIOS V1.60 (04/08/2026), by building
this patch as an out-of-tree acer-wmi module against kernel
7.2.6-1-cachyos and loading it on the machine. No module parameter was
needed - the DMI quirk matches on its own.

Thermal profiles:

  $ cat /sys/firmware/acpi/platform_profile_choices
  low-power quiet balanced balanced-performance performance

  low-power, quiet, balanced and balanced-performance all apply
  successfully. Writing performance fails with -EIO.

hwmon and fan control, via the acer hwmon device:

  pwm1_enable  pwm1   fan1 (CPU)  fan2 (GPU)
  2 (auto)     229    2501 RPM    2286 RPM
  1 (manual)   255    8136 RPM    2303 RPM
  1 (manual)   128    4464 RPM    2293 RPM

  Driving pwm2 to 255 raised fan2 to 7309 RPM while fan1 was unaffected,
  so the two fans are independently controllable. Restoring
  pwm1_enable/pwm2_enable to 2 returned both fans to automatic control.

  temp1_input, temp2_input and temp3_input are also exposed.

  Note: .cpu_fans and .gpu_fans are set here following
  quirk_acer_predator_ph16_72, and this is the configuration that was
  tested. If you would prefer them dropped, as in
  quirk_acer_nitro_an515_58, I am happy to send a v5.

The analysis and patch were produced with AI assistance (see the
Assisted-by trailer); all testing was performed by me on the physical
machine, and I take responsibility for the patch as signed off above.

 drivers/platform/x86/acer-wmi.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
index d3d741aad55..51b2ae9e57a 100644
--- a/drivers/platform/x86/acer-wmi.c
+++ b/drivers/platform/x86/acer-wmi.c
@@ -474,6 +474,14 @@ static struct quirk_entry quirk_acer_predator_ph315_53 = {
 	.gpu_fans = 1,
 };
 
+static struct quirk_entry quirk_acer_nitro_anv15_51 = {
+	.cpu_fans = 1,
+	.gpu_fans = 1,
+	.hwmon = true,
+	.platform_profile = true,
+	.pwm = true,
+};
+
 static struct quirk_entry quirk_acer_predator_ph16_72 = {
 	.turbo = true,
 	.cpu_fans = 1,
@@ -682,6 +690,15 @@ static const struct dmi_system_id acer_quirks[] __initconst = {
 		},
 		.driver_data = &quirk_acer_nitro_an515_58,
 	},
+	{
+		.callback = dmi_matched,
+		.ident = "Acer Nitro ANV15-51",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Nitro ANV15-51"),
+		},
+		.driver_data = &quirk_acer_nitro_anv15_51,
+	},
 	{
 		.callback = dmi_matched,
 		.ident = "Acer Predator PH315-53",

base-commit: f475845eaf3d749114a63270bf2efea459e14dd2
-- 
2.47.3


  parent reply	other threads:[~2026-09-20  5:41 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-29 22:29 [PATCH] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51 Justin Vargas
2026-07-29 23:51 ` [PATCH v2] " Justin Vargas
2026-07-30  9:17   ` Armin Wolf
2026-07-30 14:05     ` Justin Vargas
2026-07-31  7:15       ` Justin Vargas
2026-08-18  0:51         ` Justin Vargas
2026-08-19  4:17 ` [PATCH v3] " Justin Vargas
2026-09-18 11:19   ` Ilpo Järvinen
2026-09-20  5:39 ` Justin Vargas [this message]
2026-10-05 18:24   ` [PATCH v4] " Ilpo Järvinen

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=20260920053918.1888-1-justinyvar@gmail.com \
    --to=justinyvar@gmail.com \
    --cc=W_Armin@gmx.de \
    --cc=hansg@kernel.org \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=jlee@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    /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.