Re: [PATCH 1/3] platform/x86: uniwill-laptop: Add PCSpecialist Recoil 16 AMD

From: Armin Wolf

Date: Fri Sep 25 2026 - 19:45:42 EST


Am 25.09.26 um 23:16 schrieb Mohamed Jouini:

The PCSpecialist Recoil 16 AMD is a rebadged TUXEDO Stellaris 16 Gen7 AMD
but reports sys_vendor "PCSpecialist" and board name "X6FR57TY", so the
existing entry does not match it.

Use the Stellaris 16 Gen7 AMD feature set, but with the percentage charge
limit instead of the charging profiles: on this firmware the "balanced"
profile does not limit charging (the battery still charges to full),
whereas the ACPI _BST method reads EC_ADDR_CHARGE_CTRL (CGLM) and reports
the "charge limiting" state bit while it is set to 1-99. Setting
charge_control_end_threshold to 90 on a full battery switches the
reported status from "Full" to "Not charging", and charging stops at 90%.

Hi,

it is to be expected that the EC firmware will emulate a full charge to 100 percent even
when battery health conservation is enabled. I strongly warn you against enabling the
charge limit on machines other that Intel NUC-based models because apparently Uniwill
considers the charge limit feature as a preview on all other models, so accessing it
might permanently damage you battery!

I suggest you continue to use the battery charge modes.

Thanks,
Armin Wolf

Signed-off-by: Mohamed Jouini <amad3v@xxxxxxxxx>
---
drivers/platform/x86/uniwill/uniwill-acpi.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform/x86/uniwill/uniwill-acpi.c
index eeead0159..beba5a76a 100644
--- a/drivers/platform/x86/uniwill/uniwill-acpi.c
+++ b/drivers/platform/x86/uniwill/uniwill-acpi.c
@@ -2787,6 +2787,19 @@ static struct uniwill_device_descriptor tux_featureset_4_nvidia_descriptor __ini
UNIWILL_FEATURE_USB_POWERSHARE,
};
+static struct uniwill_device_descriptor pcs_recoil16_amd_descriptor __initdata = {
+ .features = UNIWILL_FEATURE_FN_LOCK |
+ UNIWILL_FEATURE_SUPER_KEY |
+ UNIWILL_FEATURE_BATTERY_CHARGE_LIMIT |
+ UNIWILL_FEATURE_CPU_TEMP |
+ UNIWILL_FEATURE_GPU_TEMP |
+ UNIWILL_FEATURE_PRIMARY_FAN |
+ UNIWILL_FEATURE_SECONDARY_FAN |
+ UNIWILL_FEATURE_NVIDIA_CTGP_CONTROL |
+ UNIWILL_FEATURE_AC_AUTO_BOOT |
+ UNIWILL_FEATURE_USB_POWERSHARE,
+};
+
static int phxtxx1_probe(struct uniwill_data *data)
{
unsigned int value;
@@ -3268,6 +3281,14 @@ static const struct dmi_system_id uniwill_dmi_table[] __initconst = {
},
.driver_data = &tux_featureset_4_nvidia_descriptor,
},
+ {
+ .ident = "PCSpecialist Recoil 16 AMD",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "PCSpecialist"),
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "X6FR57TY"),
+ },
+ .driver_data = &pcs_recoil16_amd_descriptor,
+ },
{
.ident = "TUXEDO Stellaris 16 Gen7 Intel",
.matches = {