From nobody Thu Feb 12 21:40:28 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 69226F9D9; Sat, 4 Jan 2025 15:31:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736004664; cv=none; b=pOeGhvIz++Z2ShWSH+IGmmzSmCj4hdr2FlAeEXK/Lxyzs4wl5SsYInoVJKE3uRzvPgXeQsX2JGbR5uR3Djgsu6jXc4X46H0BDyh+u4KRKcnghCoX0qHaaGe0HgpHHlZIClM5LnoQ+mwC4Sdz7o7bMPAotzoPLo4FNADqpFUYMTo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736004664; c=relaxed/simple; bh=QZVrpuhMlTaz+SSifxG1ApZYCAX0+m/5iaJrT7356nw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BHq461w8UZCWyQgQd8M2wOg9vyEmfg6/p/JmM8IFEVFxP43991zzYsHu5IKyvYh0f65dwe1pu7H28Kp/BvRah6IGz7kGpnd9WSnNePYllqciIAOk+OcVibw/gqcjnPe4na3EyGXGZjaAttk3ZruYcjGIjbkJkEnJ+ajFD0xOWTo= 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=i0bLr7DZ; arc=none smtp.client-ip=209.85.214.177 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="i0bLr7DZ" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-216281bc30fso213581915ad.0; Sat, 04 Jan 2025 07:31:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736004661; x=1736609461; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=jz9CR8HU51wLXH1c29C9rHDFl8M8LY+bOXNRU4zBiFo=; b=i0bLr7DZKjsBnWfP0Ve9FH6gvCrL+szuNxUK2PAdemk70njVqVG++BINmOg/B4vvIM ln/YtN8NhZweoNqce67X6oX7cgs/QLOiH58s6U86iiznX6CoAO7FwndE5a0UtJrZLWP3 mlkoqZSnoe3dmHYNxDZvrVTgW0ap92mqrGzXGhTynd4sZA2+TrorhzK2wTW4SR7drvut V5/JO8pfjSfP4Hs9N5L8Tr18cRqkif3yA013yli8dHv+6byeOWZInzox2Eb68AgmHUxV dhD4Ybn8UHtY46j+n6pq3ybLZ4se4aRfQINM4SOonFrpLLrcvBKm6Y/3KgbYtoyw/DpO kRWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736004661; x=1736609461; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jz9CR8HU51wLXH1c29C9rHDFl8M8LY+bOXNRU4zBiFo=; b=vUiVGXbJue+uTgvhUVPzcKHmZj/Nrjyte8judZeJRa/6HflF5u1obKyDPPV4Jx3v2X y7zDbpShUGeAHGQJy9oZJbwDm8glM3Vjqs3uONwC0kTkTSGQFCIdV7FzeLoVFxouFQ+o S4kNd+qQjdcHAflT8YZu5fTNc7Js5usyw3CQS6v/7l8lf6ImwihaAo6ziWEfq9C28hZH 7Q92Dug7wz3WNWunS6HWPoD74ESf2ihZ2YhX+clhWhBTPNvOE3X/jSA+8GcWQ7xXSC4e 7a6hXY7zQ3Jjy8d7OhkN7y2rvTW3lJjnsoCDxz1pmEs9/AyAS70IQxq8HVa8+IuBTDR8 duXg== X-Forwarded-Encrypted: i=1; AJvYcCUtz4U+SXxKnoCZW7oGBU0a3wALnz12MgRkX3xKu4stCEyFUTGMkenrOLzvfCv/di5Ia3ULS1VkK3n8P/M=@vger.kernel.org X-Gm-Message-State: AOJu0YyMn6FqAzCyAdjkg3PPtF6R+w0/wLY1+JOoBGLnxCoVxQGvYPPZ 3Ly3VUT5S0GIefAYmgnSlKe3PCsf9jiqa4R/tNoP+zHv/Um38knSr3rdt4GWrhg= X-Gm-Gg: ASbGncsigMPV0iy5FojEWVGx7bCgI9c5Cs/E77qpI2/L1LgwRVOVLtaxsnbos19ypJP 3MzS/vJTdKfy34OhCPyX38ZQ/TeWldpLSOyAomsesiaFcipIkMXa4Ji9rB9XX1CK9CAumQSIbi7 kIJBi2ea9t5poY1NP12Y26vXqJZZ0zqVlydvGdYvhg0YMgaCQ7gfwQjmCTcmehSq/zugkJCsE2S iubkWQJB3RezfY15dMW6zTxOeHuC3tXvhI223/LY4zbMXygiANHBg9VjdBP2ve+ X-Google-Smtp-Source: AGHT+IEPFmO6W6gZjk2aMz1/ra2d5DFY8ROaH6LYShghvw9Kfge7m74KhKaAmmWM6Lp8qkItz52v8A== X-Received: by 2002:a17:903:320a:b0:216:4cc0:aa4e with SMTP id d9443c01a7336-219e6f37f88mr780756435ad.47.1736004660986; Sat, 04 Jan 2025 07:31:00 -0800 (PST) Received: from [172.19.0.1] ([2401:4900:315c:e91e:a8f1:4734:ec05:235a]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc97182dsm262417815ad.82.2025.01.04.07.30.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Jan 2025 07:31:00 -0800 (PST) From: Hridesh MG Date: Sat, 04 Jan 2025 20:59:20 +0530 Subject: [PATCH v2 1/3] platform/x86: acer-wmi: use WMI calls for platform profile handling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250104-platform_profile-v2-1-b58164718903@gmail.com> References: <20250104-platform_profile-v2-0-b58164718903@gmail.com> In-Reply-To: <20250104-platform_profile-v2-0-b58164718903@gmail.com> To: Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Armin Wolf Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Shuah Khan , Hridesh MG X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1736004654; l=11377; i=hridesh699@gmail.com; s=20241114; h=from:subject:message-id; bh=QZVrpuhMlTaz+SSifxG1ApZYCAX0+m/5iaJrT7356nw=; b=fJIURnvGcLrBxt9ieBK0DpS6rM0zm/ilLOT8+t/kI7myZWzsytTcnVPjmVEiKTO2CQfgZaS1A jFLnsyp9kGTB1zKK6gZb1EsLKAlgOpqR8WhU7/HgzEenZRhawCxJPqP X-Developer-Key: i=hridesh699@gmail.com; a=ed25519; pk=otVQutD5ZTsEpajsGv/haM3pQj0yofkuYrdNcaX5AUE= Improve the platform profile handling by using WMI calls to fetch the current platform profile instead of directly accessing it from the EC. This is beneficial because the EC address differs for certain laptops. Link: https://lore.kernel.org/platform-driver-x86/d7be714c-3103-42ee-ad15-2= 23a3fe67f80@gmx.de/ Co-developed-by: Armin Wolf Signed-off-by: Armin Wolf Signed-off-by: Hridesh MG --- drivers/platform/x86/acer-wmi.c | 189 ++++++++++++++++++++++++++++--------= ---- 1 file changed, 133 insertions(+), 56 deletions(-) diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wm= i.c index b3043d78a7b38a7b773da5ecd4846ca11e8595f5..5370056fb2d03a768162f2f1643= ef27dc6deafa8 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c @@ -31,6 +31,7 @@ #include #include #include +#include #include =20 MODULE_AUTHOR("Carlos Corbacho"); @@ -68,8 +69,11 @@ MODULE_LICENSE("GPL"); #define ACER_WMID_GET_GAMING_SYS_INFO_METHODID 5 #define ACER_WMID_SET_GAMING_FAN_BEHAVIOR 14 #define ACER_WMID_SET_GAMING_MISC_SETTING_METHODID 22 +#define ACER_WMID_GET_GAMING_MISC_SETTING_METHODID 23 =20 -#define ACER_PREDATOR_V4_THERMAL_PROFILE_EC_OFFSET 0x54 +#define ACER_GAMING_MISC_SETTING_STATUS_MASK GENMASK_ULL(7, 0) +#define ACER_GAMING_MISC_SETTING_INDEX_MASK GENMASK_ULL(7, 0) +#define ACER_GAMING_MISC_SETTING_VALUE_MASK GENMASK_ULL(15, 8) =20 #define ACER_PREDATOR_V4_RETURN_STATUS_BIT_MASK GENMASK_ULL(7, 0) #define ACER_PREDATOR_V4_SENSOR_INDEX_BIT_MASK GENMASK_ULL(15, 8) @@ -115,6 +119,13 @@ enum acer_wmi_predator_v4_sensor_id { ACER_WMID_SENSOR_GPU_TEMPERATURE =3D 0x0A, }; =20 +enum acer_wmi_gaming_misc_setting { + ACER_WMID_MISC_SETTING_OC_1 =3D 0x0005, + ACER_WMID_MISC_SETTING_OC_2 =3D 0x0007, + ACER_WMID_MISC_SETTING_SUPPORTED_PROFILES =3D 0x000A, + ACER_WMID_MISC_SETTING_PLATFORM_PROFILE =3D 0x000B, +}; + static const struct key_entry acer_wmi_keymap[] __initconst =3D { {KE_KEY, 0x01, {KEY_WLAN} }, /* WiFi */ {KE_KEY, 0x03, {KEY_WLAN} }, /* WiFi */ @@ -751,20 +762,12 @@ static bool platform_profile_support; */ static int last_non_turbo_profile; =20 -enum acer_predator_v4_thermal_profile_ec { - ACER_PREDATOR_V4_THERMAL_PROFILE_ECO =3D 0x04, - ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO =3D 0x03, - ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE =3D 0x02, - ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET =3D 0x01, - ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED =3D 0x00, -}; - -enum acer_predator_v4_thermal_profile_wmi { - ACER_PREDATOR_V4_THERMAL_PROFILE_ECO_WMI =3D 0x060B, - ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO_WMI =3D 0x050B, - ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE_WMI =3D 0x040B, - ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET_WMI =3D 0x0B, - ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED_WMI =3D 0x010B, +enum acer_predator_v4_thermal_profile { + ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET =3D 0x00, + ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED =3D 0x01, + ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE =3D 0x04, + ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO =3D 0x05, + ACER_PREDATOR_V4_THERMAL_PROFILE_ECO =3D 0x06, }; =20 /* Find which quirks are needed for a particular vendor/ model pair */ @@ -1477,6 +1480,45 @@ WMI_gaming_execute_u64(u32 method_id, u64 in, u64 *o= ut) return status; } =20 +static int WMI_gaming_execute_u32_u64(u32 method_id, u32 in, u64 *out) +{ + struct acpi_buffer result =3D { ACPI_ALLOCATE_BUFFER, NULL }; + struct acpi_buffer input =3D { + .length =3D sizeof(in), + .pointer =3D &in, + }; + union acpi_object *obj; + acpi_status status; + int ret =3D 0; + + status =3D wmi_evaluate_method(WMID_GUID4, 0, method_id, &input, &result); + if (ACPI_FAILURE(status)) + return -EIO; + + obj =3D result.pointer; + if (obj && out) { + switch (obj->type) { + case ACPI_TYPE_INTEGER: + *out =3D obj->integer.value; + break; + case ACPI_TYPE_BUFFER: + if (obj->buffer.length < sizeof(*out)) + ret =3D -ENOMSG; + else + *out =3D get_unaligned_le64(obj->buffer.pointer); + + break; + default: + ret =3D -ENOMSG; + break; + } + } + + kfree(obj); + + return ret; +} + static acpi_status WMID_gaming_set_u64(u64 value, u32 cap) { u32 method_id =3D 0; @@ -1565,6 +1607,48 @@ static void WMID_gaming_set_fan_mode(u8 fan_mode) WMID_gaming_set_u64(gpu_fan_config2 | gpu_fan_config1 << 16, ACER_CAP_TUR= BO_FAN); } =20 +static int WMID_gaming_set_misc_setting(enum acer_wmi_gaming_misc_setting = setting, u8 value) +{ + acpi_status status; + u64 input =3D 0; + u64 result; + + input |=3D FIELD_PREP(ACER_GAMING_MISC_SETTING_INDEX_MASK, setting); + input |=3D FIELD_PREP(ACER_GAMING_MISC_SETTING_VALUE_MASK, value); + + status =3D WMI_gaming_execute_u64(ACER_WMID_SET_GAMING_MISC_SETTING_METHO= DID, input, &result); + if (ACPI_FAILURE(status)) + return -EIO; + + /* The return status must be zero for the operation to have succeeded */ + if (FIELD_GET(ACER_GAMING_MISC_SETTING_STATUS_MASK, result)) + return -EIO; + + return 0; +} + +static int WMID_gaming_get_misc_setting(enum acer_wmi_gaming_misc_setting = setting, u8 *value) +{ + u64 input =3D 0; + u64 result; + int ret; + + input |=3D FIELD_PREP(ACER_GAMING_MISC_SETTING_INDEX_MASK, setting); + + ret =3D WMI_gaming_execute_u32_u64(ACER_WMID_GET_GAMING_MISC_SETTING_METH= ODID, input, + &result); + if (ret < 0) + return ret; + + /* The return status must be zero for the operation to have succeeded */ + if (FIELD_GET(ACER_GAMING_MISC_SETTING_STATUS_MASK, result)) + return -EIO; + + *value =3D FIELD_GET(ACER_GAMING_MISC_SETTING_VALUE_MASK, result); + + return 0; +} + /* * Generic Device (interface-independent) */ @@ -1833,9 +1917,8 @@ acer_predator_v4_platform_profile_get(struct platform= _profile_handler *pprof, u8 tp; int err; =20 - err =3D ec_read(ACER_PREDATOR_V4_THERMAL_PROFILE_EC_OFFSET, &tp); - - if (err < 0) + err =3D WMID_gaming_get_misc_setting(ACER_WMID_MISC_SETTING_PLATFORM_PROF= ILE, &tp); + if (err) return err; =20 switch (tp) { @@ -1865,36 +1948,33 @@ static int acer_predator_v4_platform_profile_set(struct platform_profile_handler *ppr= of, enum platform_profile_option profile) { - int tp; - acpi_status status; + int tp, err; =20 switch (profile) { case PLATFORM_PROFILE_PERFORMANCE: - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO; break; case PLATFORM_PROFILE_BALANCED_PERFORMANCE: - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE; break; case PLATFORM_PROFILE_BALANCED: - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; break; case PLATFORM_PROFILE_QUIET: - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET; break; case PLATFORM_PROFILE_LOW_POWER: - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_ECO_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_ECO; break; default: return -EOPNOTSUPP; } =20 - status =3D WMI_gaming_execute_u64( - ACER_WMID_SET_GAMING_MISC_SETTING_METHODID, tp, NULL); - - if (ACPI_FAILURE(status)) - return -EIO; + err =3D WMID_gaming_set_misc_setting(ACER_WMID_MISC_SETTING_PLATFORM_PROF= ILE, tp); + if (err) + return err; =20 - if (tp !=3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO_WMI) + if (tp !=3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO) last_non_turbo_profile =3D tp; =20 return 0; @@ -1923,6 +2003,7 @@ static int acer_platform_profile_setup(struct platfor= m_device *device) set_bit(PLATFORM_PROFILE_LOW_POWER, platform_profile_handler.choices); =20 + err =3D platform_profile_register(&platform_profile_handler); if (err) return err; @@ -1931,7 +2012,7 @@ static int acer_platform_profile_setup(struct platfor= m_device *device) =20 /* Set default non-turbo profile */ last_non_turbo_profile =3D - ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED_WMI; + ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; } return 0; } @@ -1946,12 +2027,10 @@ static int acer_thermal_profile_change(void) u8 current_tp; int tp, err; u64 on_AC; - acpi_status status; - - err =3D ec_read(ACER_PREDATOR_V4_THERMAL_PROFILE_EC_OFFSET, - ¤t_tp); =20 - if (err < 0) + err =3D WMID_gaming_get_misc_setting(ACER_WMID_MISC_SETTING_PLATFORM_PRO= FILE, + ¤t_tp); + if (err) return err; =20 /* Check power source */ @@ -1962,54 +2041,52 @@ static int acer_thermal_profile_change(void) switch (current_tp) { case ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO: if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; else if (cycle_gaming_thermal_profile) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_ECO_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_ECO; else tp =3D last_non_turbo_profile; break; case ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE: if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; else - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO; break; case ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED: if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_ECO_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_ECO; else if (cycle_gaming_thermal_profile) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE; else - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO; break; case ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET: if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; else if (cycle_gaming_thermal_profile) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; else - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO; break; case ACER_PREDATOR_V4_THERMAL_PROFILE_ECO: if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; else if (cycle_gaming_thermal_profile) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET; else - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO_WMI; + tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO; break; default: return -EOPNOTSUPP; } =20 - status =3D WMI_gaming_execute_u64( - ACER_WMID_SET_GAMING_MISC_SETTING_METHODID, tp, NULL); - - if (ACPI_FAILURE(status)) - return -EIO; + err =3D WMID_gaming_set_misc_setting(ACER_WMID_MISC_SETTING_PLATFORM_PRO= FILE, tp); + if (err) + return err; =20 /* Store non-turbo profile for turbo mode toggle*/ - if (tp !=3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO_WMI) + if (tp !=3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO) last_non_turbo_profile =3D tp; =20 platform_profile_notify(&platform_profile_handler); --=20 2.47.1 From nobody Thu Feb 12 21:40:28 2026 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (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 CD7E51BEF7C; Sat, 4 Jan 2025 15:31:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736004668; cv=none; b=g0lvAlebpD6rTstuPLOk76YJPyMKk+nVE7y0ml0ycnlrPRuqCCdgXJSqQk3Wu4svDZIhsQ1dt/Toqq1EZvDrf6salvHeoN/yX3Omk7X9CyXHsVUhx/v6ixtePUFliKuATvzy9IDfVak4kUaDnGA9UBRzMi/yRPY3FxhmGV9mioU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736004668; c=relaxed/simple; bh=mCXy1uJgyqnmmInbiiIS+FP9bIVqBoKc27WQ/yYkNFY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Q+zWwMvkCPWnX+xOiK8xGM9lPAWsfPsEFNBGtSQb12tLme7FuMavim3Oip+Xx9pQy/7BcYyIHAZRk0LGhG7tyHZ4P342QWExDx7HxpeGqLW7kg6HW1o5itgI0Pc4WFdNvtuRC1Vixl8Je+gzM3JniDqsz5LnXtSyq8VGzZdPujE= 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=SSUnKIuJ; arc=none smtp.client-ip=209.85.216.43 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="SSUnKIuJ" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-2ef70c7efa5so14902411a91.2; Sat, 04 Jan 2025 07:31:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736004664; x=1736609464; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=KIX3N8dFiE43DOEk6pDwhXB7Ih17CUSWDmrTq7CElGc=; b=SSUnKIuJgp2As5Yqh9Y7JgEeVZKswhM+J9Eanoe2CoXWmN2jUFN4taqwOI9t0ILXQD EdmjXGAf/6jVDLW1ct+173PMIkGWcgOefMQH+88Lodifbt03nSHe17Pn3Zfb0xeA8lrq e8ETxXwOvb7i4fghGRO+G+TkUWvv5e9yKqKmXivmCbyvQbsolafivp1vLgItfyp9TpRq yOVSCQEFfb+S259xa82LoR3Y6DMu6X9Jgyu0iqwu3CNPghefJIs49YpW1k4KED+bXhFW p0wF2LF72QhGK/0X4ZOPWsPiCT82LpIZ+GUPlihyxGzfhJGoGB65elsPl9Yr1gs9CrWn xyYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736004664; x=1736609464; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KIX3N8dFiE43DOEk6pDwhXB7Ih17CUSWDmrTq7CElGc=; b=QqOJmPT6Tsx4l2VREjKVZJ7iPsjIQXsmETl9LwSoJvDi3trZ5EcmQYUcmRZOieToa0 dpHUjt148A78dCp5O86276/uvqdbDDaANm8tieW2lQrmmDuRzihRyFJR9nPoNJskm8UK h1KQQzOpiuO1NdxNdX9SIMn1YqMIYTP1SBPEynY5PjCCkIH+fGwVjJyzFoeE8e58LySj Yqg7M1t0Ed5oWuNe1MRsO9nn/vbNxTYoYlaOCm0KsoCqFnTe0I2KGWmtoSp/JasoTRhN 6smL43mzsrOr1VM9lQTgAN4/kvQisz1O3lyZrYQG+s1Q5aYklX7B1lOsbpSFB7Y0sKXv QUjg== X-Forwarded-Encrypted: i=1; AJvYcCUkIB5I27En9OcP1Bs0xRthQj7hKabRKa0S07vYrQsc/gSkBTDuUsSUB9myltzY6B5wrFCapFgtqHqB4N0=@vger.kernel.org X-Gm-Message-State: AOJu0YzQ34nubZ1VqVwZPZG58YzwU/s9pAbZT0lBmnwPUQYbduhOFxG0 RKreMC4ys5beCB/ZOKnGfFPezp+o+Km4VjV0vkQY07vfrowVfqJMuDG6q1xGHv8= X-Gm-Gg: ASbGncvp8Y7KO2NBzjoDeT/D8Xq9uSesljlmBfwADkl8nYP388X+ZoPFsm+p5qt3TES e8JprKEdrxOa3eBI3ZfXNYmiwKWQn2E7rdIVKSBgVVEicc/BYsleW8dioZz8Cun0DWeMsoMXt9N TfmlSMPIYwwTr9nz2O3Qu3xuu9sNmprKBBcewzERm0s41jXaCLz3LQTqZGV7zQ1mzQ1FgdP7jFI ljiPrf/w0mrOpIXTrA9WkKD9g77XJ56XNEFkw4XqVMzcKOXExehqAGJmG9lzHm9 X-Google-Smtp-Source: AGHT+IGO5er6q2NQvNZLo4aDAqnNAiVE9Ug9sRW5d+JGDc799FOq5dUnHNMTTjuh1yGy5N8e7V9DLg== X-Received: by 2002:a17:90b:3d45:b0:2eb:140d:f6df with SMTP id 98e67ed59e1d1-2f452dfcd01mr76120277a91.1.1736004664203; Sat, 04 Jan 2025 07:31:04 -0800 (PST) Received: from [172.19.0.1] ([2401:4900:315c:e91e:a8f1:4734:ec05:235a]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc97182dsm262417815ad.82.2025.01.04.07.31.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Jan 2025 07:31:03 -0800 (PST) From: Hridesh MG Date: Sat, 04 Jan 2025 20:59:21 +0530 Subject: [PATCH v2 2/3] platform/x86: acer-wmi: use an ACPI bitmap to set the platform profile choices Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250104-platform_profile-v2-2-b58164718903@gmail.com> References: <20250104-platform_profile-v2-0-b58164718903@gmail.com> In-Reply-To: <20250104-platform_profile-v2-0-b58164718903@gmail.com> To: Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Armin Wolf Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Shuah Khan , Hridesh MG X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1736004654; l=2962; i=hridesh699@gmail.com; s=20241114; h=from:subject:message-id; bh=mCXy1uJgyqnmmInbiiIS+FP9bIVqBoKc27WQ/yYkNFY=; b=kjPy632rMvEd3fFJ4av2xGL+BpOqq98nSSGTumVzgnGb16IBYxcLzJx5IOVuJ2b+TVNUqiqIZ qpdqS+ljn4nBEyXV9AWZ/FBaZKIZCE0UVEZqFG0i+PhmXckkaOu1QfA X-Developer-Key: i=hridesh699@gmail.com; a=ed25519; pk=otVQutD5ZTsEpajsGv/haM3pQj0yofkuYrdNcaX5AUE= Currently the choices for the platform profile are hardcoded. There is an ACPI bitmap accessible via WMI that specifies the supported profiles, use this bitmap to dynamically set the choices for the platform profile. Link: https://lore.kernel.org/platform-driver-x86/ecb60ee5-3df7-4d7e-8ebf-8= c162b339ade@gmx.de/ Signed-off-by: Hridesh MG --- drivers/platform/x86/acer-wmi.c | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wm= i.c index 5370056fb2d03a768162f2f1643ef27dc6deafa8..f6c47deb4c452fc193f22c479c7= 30aecb1e69e44 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c @@ -33,6 +33,7 @@ #include #include #include +#include =20 MODULE_AUTHOR("Carlos Corbacho"); MODULE_DESCRIPTION("Acer Laptop WMI Extras Driver"); @@ -1983,6 +1984,7 @@ acer_predator_v4_platform_profile_set(struct platform= _profile_handler *pprof, static int acer_platform_profile_setup(struct platform_device *device) { if (quirks->predator_v4) { + unsigned long supported_profiles; int err; =20 platform_profile_handler.name =3D "acer-wmi"; @@ -1992,16 +1994,30 @@ static int acer_platform_profile_setup(struct platf= orm_device *device) platform_profile_handler.profile_set =3D acer_predator_v4_platform_profile_set; =20 - set_bit(PLATFORM_PROFILE_PERFORMANCE, - platform_profile_handler.choices); - set_bit(PLATFORM_PROFILE_BALANCED_PERFORMANCE, - platform_profile_handler.choices); - set_bit(PLATFORM_PROFILE_BALANCED, - platform_profile_handler.choices); - set_bit(PLATFORM_PROFILE_QUIET, - platform_profile_handler.choices); - set_bit(PLATFORM_PROFILE_LOW_POWER, - platform_profile_handler.choices); + err =3D WMID_gaming_get_misc_setting(ACER_WMID_MISC_SETTING_SUPPORTED_PR= OFILES, + (u8 *)&supported_profiles); + if (err) + return err; + + if (test_bit(ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET, &supported_profiles= )) + set_bit(PLATFORM_PROFILE_QUIET, + platform_profile_handler.choices); + + if (test_bit(ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED, &supported_profi= les)) + set_bit(PLATFORM_PROFILE_BALANCED, + platform_profile_handler.choices); + + if (test_bit(ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE, &supported_pr= ofiles)) + set_bit(PLATFORM_PROFILE_BALANCED_PERFORMANCE, + platform_profile_handler.choices); + + if (test_bit(ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO, &supported_profiles= )) + set_bit(PLATFORM_PROFILE_PERFORMANCE, + platform_profile_handler.choices); + + if (test_bit(ACER_PREDATOR_V4_THERMAL_PROFILE_ECO, &supported_profiles)) + set_bit(PLATFORM_PROFILE_LOW_POWER, + platform_profile_handler.choices); =20 =20 err =3D platform_profile_register(&platform_profile_handler); --=20 2.47.1 From nobody Thu Feb 12 21:40:28 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 732BA1CCEC8; Sat, 4 Jan 2025 15:31:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736004670; cv=none; b=qzUq+m7cE7cbj14nyUePGO2OHzEPTuq7G5wxDX7i0zJxZgkIYJjfSzi0X+hzGTAHCOWnWcXCDKNI2zY+MOrRcW06dWy6yGk9tPMfiJzFGsYD26gPwSc9JWYF38tArUSRsmt7SDqXXHqC/Ed9yEdEz4Q/Q5O1teRBmNklKEp3HoQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736004670; c=relaxed/simple; bh=TyZONBQJQqKfqJ3muZg6yHspgdruiXY2D2uolFj8ljo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ClWOouaFiCGW/s8vGUSJ/kEIAdavxrCkm91JkHLhSthCNBDtDeuBR10dt2rvWFkMio/kyFuXrco+b/Ejlg8YLTKXFEMToFxywn5E4I3ivpmtOMBiksDGsEY0+Jb+A7kGIczLCMHqSTYRGhl5pnocevg31W13Uu2sswfW1Bkc7YI= 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=PFnSnbIE; arc=none smtp.client-ip=209.85.214.175 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="PFnSnbIE" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2161eb94cceso129776255ad.2; Sat, 04 Jan 2025 07:31:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736004667; x=1736609467; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ys4oGORKa1ZEzSV5egWXtTRM/Kqz3c5tu6DAtr8KGiU=; b=PFnSnbIEqYjp1z01O3933iv+Sz3yVNXnW7QtfRY0GTKcCDZgQr5CA32D0sfe0I+6M8 Pbvx33EIdBJxdYI/oAglLNwALfrGSfy+3utNPAkEd0xnbjJi/CdkioEIdDyTCAFuCdb3 wOX+SfpHO3sHrqIqlOLpsc9idp8lkvLVbB/xf/QPYrmn54A0kr50Sv01SuLoke9dQ2S4 j+MFMNtjP3sTMGOhSSFGWlRKu8JMgnHA1rsnTOVpKma383TMN3ExFyMnJjjjZIlSbRR3 HMOcYxEF//vWNzi/wzZlFgPZH544rE2+SCA2EW/603UatQuLIbMzyEgPjUMRV9m4HV5i 4a4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736004667; x=1736609467; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ys4oGORKa1ZEzSV5egWXtTRM/Kqz3c5tu6DAtr8KGiU=; b=twTJqJ+A5OitYvK8MhPgU6jXn/aXS6Z47Ex7SRFOAt9XREga1Rx82mHVkG3tCzaS/l DOXG2VavIqP5sJRPgsnGu7uVhUV7OL0mvIbCwt4WCLvJXBlkbq61KHHTlYdDG3oUWDzX Ko5PINmm+95toh/FKh0jVYnlF6muZiF8jne0S+EJVNMY/SM/hQyYD28/6UelEZKKlUG1 icWKlRwF6/a371ropNLMGHOFbD5cN1IlfW+bKDPgvIDL96pKjr67FsT3Qq5PqLkG9Y1D pc+TrVwJ829J5NRlfm/qF3qfMGX73Io/xGlXUQeXaskPYz+WeyXlb0gNQ//QZoUqZEDr EI6A== X-Forwarded-Encrypted: i=1; AJvYcCVUluQfYaJksUkDmNFX4cVmon+X2g0Drx50ZkxrRyHO8Gnbg+tsDdiy35p1klM0WAFx8uX24QwiDfwyVoM=@vger.kernel.org X-Gm-Message-State: AOJu0YwUPj2STrKxAQ6tgSEznEH4NXY++4PQ96wlTlQWbiq+6S21cEnh ecrHO6Zza2UXObP5pCOaRG9TCVQNqWnuwoyXOxptGD6rrx99qjKmh7EkBUkh1ag= X-Gm-Gg: ASbGncuiCX2jZsza+8BFawSc/zGGJojVBR+2AZVs0c6vtHqebBmwYwOCFgG3riCXWaN wKezB4Xx/puobqlJub2Pcn2ySSCAJCELNP7ytAG+rUQoMaXfhHnGsIJqf40r5Ml88i1dc5uAweM kBNBv/7Ky7MEAOEVtOQUM9Ji+d77GssISrdr69qFChnQ2wj94MR+BxYIjpGpxVtdQBaOdRJseHD /8bS0OMHr0LkU/OWhlREd1tgETwdmnNQQxcF6BvYuHVQZ6OtvsFhT3nHj6BVMIU X-Google-Smtp-Source: AGHT+IF9g4iY/btbkKpWHSq/VYEOO/n/xBzFvebiYwWmcm4ICknkh5rNKk110kZ49EKm3QWX9BjzTA== X-Received: by 2002:a17:903:946:b0:216:2af7:a2a3 with SMTP id d9443c01a7336-219e6f27157mr907385785ad.53.1736004667310; Sat, 04 Jan 2025 07:31:07 -0800 (PST) Received: from [172.19.0.1] ([2401:4900:315c:e91e:a8f1:4734:ec05:235a]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc97182dsm262417815ad.82.2025.01.04.07.31.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Jan 2025 07:31:06 -0800 (PST) From: Hridesh MG Date: Sat, 04 Jan 2025 20:59:22 +0530 Subject: [PATCH v2 3/3] platform/x86: acer-wmi: simplify platform profile cycling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250104-platform_profile-v2-3-b58164718903@gmail.com> References: <20250104-platform_profile-v2-0-b58164718903@gmail.com> In-Reply-To: <20250104-platform_profile-v2-0-b58164718903@gmail.com> To: Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Armin Wolf Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Shuah Khan , Hridesh MG X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1736004654; l=4441; i=hridesh699@gmail.com; s=20241114; h=from:subject:message-id; bh=TyZONBQJQqKfqJ3muZg6yHspgdruiXY2D2uolFj8ljo=; b=GZN62rtVyUZiw0F70F2F1z1eDoHr0HyLyz/bYLsSWUEY/oDqOcvrcZkCRbRC91oLbeq9CILUu hjjRKUAmNyZBM4s6cSuveFbRMAKryQV0kpSLNieKxu4YTK6DJYBi0/7 X-Developer-Key: i=hridesh699@gmail.com; a=ed25519; pk=otVQutD5ZTsEpajsGv/haM3pQj0yofkuYrdNcaX5AUE= Make use of platform_profile_cycle() to simplify the logic used for cycling through the different platform profiles. Also remove the handling for AC power as the hardware will accept the different profiles regardless of whether or not AC is plugged in. Link: https://lore.kernel.org/platform-driver-x86/20e3ac66-b040-49a9-ab00-0= adcfdaed2ff@gmx.de/ Signed-off-by: Hridesh MG --- drivers/platform/x86/acer-wmi.c | 87 +++++++++++--------------------------= ---- 1 file changed, 23 insertions(+), 64 deletions(-) diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wm= i.c index f6c47deb4c452fc193f22c479c730aecb1e69e44..9c73f78eb302323299e03bf9dbe= b2c68bb422938 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c @@ -34,6 +34,7 @@ #include #include #include +#include "linux/bitmap.h" =20 MODULE_AUTHOR("Carlos Corbacho"); MODULE_DESCRIPTION("Acer Laptop WMI Extras Driver"); @@ -1975,9 +1976,6 @@ acer_predator_v4_platform_profile_set(struct platform= _profile_handler *pprof, if (err) return err; =20 - if (tp !=3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO) - last_non_turbo_profile =3D tp; - return 0; } =20 @@ -2036,76 +2034,37 @@ static int acer_platform_profile_setup(struct platf= orm_device *device) static int acer_thermal_profile_change(void) { /* - * This mode key can rotate each mode or toggle turbo mode. - * On battery, only ECO and BALANCED mode are available. + * This mode key will either cycle through each mode or toggle the perfor= mance profile. */ if (quirks->predator_v4) { u8 current_tp; - int tp, err; - u64 on_AC; + int max_perf, tp, err; =20 - err =3D WMID_gaming_get_misc_setting(ACER_WMID_MISC_SETTING_PLATFORM_PRO= FILE, - ¤t_tp); - if (err) - return err; + if (cycle_gaming_thermal_profile) { + platform_profile_cycle(); + } else { + err =3D WMID_gaming_get_misc_setting(ACER_WMID_MISC_SETTING_PLATFORM_PR= OFILE, + ¤t_tp); + if (err) + return err; =20 - /* Check power source */ - err =3D WMID_gaming_get_sys_info(ACER_WMID_CMD_GET_PREDATOR_V4_BAT_STATU= S, &on_AC); - if (err < 0) - return err; + max_perf =3D find_last_bit(platform_profile_handler.choices, + PLATFORM_PROFILE_LAST); =20 - switch (current_tp) { - case ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO: - if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; - else if (cycle_gaming_thermal_profile) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_ECO; - else + if (current_tp =3D=3D max_perf) { tp =3D last_non_turbo_profile; - break; - case ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE: - if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; - else - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO; - break; - case ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED: - if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_ECO; - else if (cycle_gaming_thermal_profile) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_PERFORMANCE; - else - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO; - break; - case ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET: - if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; - else if (cycle_gaming_thermal_profile) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; - else - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO; - break; - case ACER_PREDATOR_V4_THERMAL_PROFILE_ECO: - if (!on_AC) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_BALANCED; - else if (cycle_gaming_thermal_profile) - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_QUIET; - else - tp =3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO; - break; - default: - return -EOPNOTSUPP; - } - - err =3D WMID_gaming_set_misc_setting(ACER_WMID_MISC_SETTING_PLATFORM_PRO= FILE, tp); - if (err) - return err; + } else { + last_non_turbo_profile =3D current_tp; + tp =3D max_perf; + } =20 - /* Store non-turbo profile for turbo mode toggle*/ - if (tp !=3D ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO) - last_non_turbo_profile =3D tp; + err =3D WMID_gaming_set_misc_setting( + ACER_WMID_MISC_SETTING_PLATFORM_PROFILE, tp); + if (err) + return err; =20 - platform_profile_notify(&platform_profile_handler); + platform_profile_notify(&platform_profile_handler); + } } =20 return 0; --=20 2.47.1