From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 09FC3304BB2 for ; Wed, 19 Aug 2026 04:18:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787113112; cv=none; b=ar1vgBqq3vNV+siTzZalWppTmPTIbV1pU9tJAtbTJj6x38nyE++bSZ18T/IeJcG29ksPBvmDipd7BtF1hosiFZsj3yDAW6z+oEirblhz64p5/HSieysfZHXzMDyP3sSGGkDVXQtCoJA64h/D7QWSQmX2BzzifKJNdZHGcR7GkE8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787113112; c=relaxed/simple; bh=twl+Uy0y2/fAxdUU6z1/qMBiydXMkJib8gHA07kXbRw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uV0NFI6bRJwwnIzVH2J+pIyW4z8lHeTRPR2Svwqd6i7kpeNGoKHDe/4dGrsNhpv49avWkCSAr+Dyc2DNoP+tkIxhZkXaD1KyZa6phY9yiueCDBxH8Y5iN/RliRJ+G1l4qON5ZLdzhpWAgW21C3X356oa7L8/GRHplzkPc4TSvLs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ple4vuQc; arc=none smtp.client-ip=209.85.222.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ple4vuQc" Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-936c02e58dfso44057985a.3 for ; Tue, 18 Aug 2026 21:18:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787113110; x=1787717910; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Ue4mlQRNH0auXc1LYUFJMHPBAnoA99PxBpDAzjIJ1LQ=; b=ple4vuQcJ4lKC/4jQda1hPFGPQYuja6qkWhgZrzgYBdEP+Ap79Aj2n6sug7jrWMZr0 IS/IhEswgw1+BIR8Ifa0TMQLPbVgFOKXP0cGIl6uA3aQpgS0187AZU/Y0QU5N8euOQF1 VQDStd1LD2Gg9v8ut2wRfCVh3vYK4Se79/YVzv90Foy0OLVGA8SbtRFao9sZzJvY94jB yXVM2CoC56+ohjO9BeA52FyrGUB57IbredZB95zGglmtmxUE9r8i+VVh+gS9PhHszpO9 kpEz0MfdySyyIRGTBNsvWek7Tv118E9g5FqAFS5iEJYzvXc3NgogdkecH1ebYhywowL5 RiPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787113110; x=1787717910; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Ue4mlQRNH0auXc1LYUFJMHPBAnoA99PxBpDAzjIJ1LQ=; b=OXOiS7N6Orudi20ha9EPMqiDj1Ojh/Upwv04UIGfRLiYE9Ls092p4BcjMr3jtqnpqG J2n9C88VBrEqnccDzvFItBnrnsRacJ9FAqMo2FjjylB3a8ZvaLuPH3tvyXObZTn6KQT7 MenfyrYCJsl28wHrHpLBHGBfFIojiMWlN+gn91T1o0m6f4Ldm5uPjXjZi89CX2flbE9m u0UqblRTr2EKOCc6mLSv1xHRHqVZwvE76jIvHz5+KnWJbnjh/8eCj1nmsDWsvZGp+244 0SYqM1QozAwaU0KN3mU9AWoeGootHAUvki8Yf3p8Tmq+9z+7V44uEvvTVyRw5DPQTExE fI5Q== X-Forwarded-Encrypted: i=1; AHgh+Rq1+Po3wrzf+ucqXesuxkqHPIdgcUFJ2Hyb1wdHxBvHTqqQJIC6Td/PmXfj8Xp527Ho/ZomhrMFCKG/i9U=@vger.kernel.org X-Gm-Message-State: AOJu0YwFClg9KP/13t2YtIpAvDVRQ2wTU/Zh/FlyYOAAKJemsh5eBBuu AHarjHDMKA78HSxTIkHlsdVEyWwS1bBQs6BhCSjWuvDq7lsNuq/6EuQ= X-Gm-Gg: AR+sD106oxMshzCZye+ZVl9mHI2F3RHrwKSI0lpOKOBhEPYOZkQz5eiLdCWrdKPQdQT nupf2pZrprXvQeFFpwcwlsBAEuoSB4surF7eGGZia3mtTVmEq/JN17qhhvDttl046VxNbTMs/7L zquSM/X9IDke06uf7wAkId3OjUUgIRO2cOSBBwArllQKQ5X6ypEZgGOKmexQdIW9qw8ewytpCgR ZHJT6Ys2WNHh/UTJCB0hCUvFAniAIS/rbZNrmOiYvKsvF1EiZvRLfcVS/TIvz+6qiDApWXQJOPz sSGzUB9Y57Bxf1nSLnTFalvgoYp7Fsugf/W++EY2cgT+ZoNKj5xswV/zdxHFkQ1Lwe1DKGgqSVX DU5Loqb18aaSqxseNoyGNf3oyhHMSwFzQ8hsgCOvrElSgy7LgP5M9cMkSNMj2zKDVMdJjt2clJ2 vGpxYIQMjep9nLG0PR0Mg/ygJwevRd0u/CSLNNykpkPpBu9gllPnKORkUsSFzWoM45qJq+GtqZN 0cKWkgkDkyyPz7Y3QBOJoYWmYYX0C6HbBLdgw71sXMgyjN6ekb0QvfTy/fbh8JVnp0wrqpufIbN /Q64vnh3RHx6i/0H2KXqB2WrgDtPXjtJAB+kTvc= X-Received: by 2002:a05:620a:284a:b0:937:11c9:37f1 with SMTP id af79cd13be357-9371e29f5bcmr202570285a.16.1787113109685; Tue, 18 Aug 2026 21:18:29 -0700 (PDT) Received: from localhost.localdomain (ool-18ba9fde.dyn.optonline.net. [24.186.159.222]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9372056b728sm49696085a.29.2026.08.18.21.18.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 21:18:29 -0700 (PDT) From: Justin Vargas 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 Subject: [PATCH v3] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51 Date: Wed, 19 Aug 2026 00:17:40 -0400 Message-ID: <20260819041740.9645-1-justinyvar@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260729222920.6490-1-justinyvar@gmail.com> References: <20260729222920.6490-1-justinyvar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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: its supported profiles bitmap (misc setting 0x0A) reads 0x53, and writing PLATFORM_PROFILE_PERFORMANCE is rejected by the firmware. The four remaining profiles work as expected. Assisted-by: Claude:claude-opus-5 Signed-off-by: Justin Vargas Tested-by: Justin Vargas --- 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 is now tested (see below). 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.1.8-1-cachyos and loading it on the machine. 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 and audibly change fan behaviour. Writing performance fails with -EIO, consistent with the supported profiles bitmap (misc setting 0x0A) reading 0x53, i.e. bit 5 (turbo) clear. hwmon and fan control, via the acer hwmon device: pwm_enable pwm fan1 (CPU) fan2 (GPU) 2 (auto) 229 2311 RPM 2057 RPM 1 (manual) 255 8167 RPM 2077 RPM 1 (manual) 128 4482 RPM 2065 RPM Setting pwm2 to 255 raised fan2 to 7284 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 (2267 / 2000 RPM at idle). temp1_input, temp2_input and temp3_input are also exposed. The WMI mechanism was cross-checked on Windows, where NitroSense switches profiles via SetGamingMiscSetting with index 0x0B and the same profile values used by this driver. 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 | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index e0eaaefb13d..86c212df49f 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c @@ -466,6 +466,13 @@ 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, + .predator_v4 = 1, + .pwm = 1, +}; + static struct quirk_entry quirk_acer_predator_ph16_72 = { .turbo = 1, .cpu_fans = 1, @@ -662,6 +669,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", -- 2.47.3