On Fri, 17 Apr 2026, Armin Wolf wrote: > It seems that on some older models (~2020) the battery charging limit > can permanently damage the battery. Prevent users from enabling this > feature thru the "force" module parameter to avoid causing permanent > hardware damage on such devices. > > Fixes: d050479693bb ("platform/x86: Add Uniwill laptop driver") > Link: https://www.reddit.com/r/XMG_gg/comments/ld9yyf/battery_limit_hidden_function_discovered_on/ > Signed-off-by: Armin Wolf > --- > Documentation/admin-guide/laptops/uniwill-laptop.rst | 10 ++++++++++ > drivers/platform/x86/uniwill/uniwill-acpi.c | 4 ++-- > 2 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/Documentation/admin-guide/laptops/uniwill-laptop.rst b/Documentation/admin-guide/laptops/uniwill-laptop.rst > index 561334865feb..1f3ca84c7d88 100644 > --- a/Documentation/admin-guide/laptops/uniwill-laptop.rst > +++ b/Documentation/admin-guide/laptops/uniwill-laptop.rst > @@ -43,6 +43,11 @@ Support for changing the platform performance mode is currently not implemented. > Battery Charging Control > ------------------------ > > +.. warning:: Some devices do not properly implement the charging threshold interface. Forcing > + the driver to enable access to said interface on such devices might damage the > + battery [1]_. Because of this the driver will not enable said feature even when > + using the ``force`` module parameter. > + > The ``uniwill-laptop`` driver supports controlling the battery charge limit. This happens over > the standard ``charge_control_end_threshold`` power supply sysfs attribute. All values > between 1 and 100 percent are supported. > @@ -70,3 +75,8 @@ The ``uniwill-laptop`` driver allows to set the configurable TGP for devices wit > allow it. > > See Documentation/ABI/testing/sysfs-driver-uniwill-laptop for details. > + > +References > +========== > + > +.. [1] https://www.reddit.com/r/XMG_gg/comments/ld9yyf/battery_limit_hidden_function_discovered_on/ > diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform/x86/uniwill/uniwill-acpi.c > index 7c7ea0e76966..dac80c78ca0b 100644 > --- a/drivers/platform/x86/uniwill/uniwill-acpi.c > +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c > @@ -2499,8 +2499,8 @@ static int __init uniwill_init(void) > } > > if (force) { > - /* Assume that the device supports all features */ > - device_descriptor.features = UINT_MAX; > + /* Assume that the device supports all features except the charge limit */ > + device_descriptor.features = UINT_MAX & ~UNIWILL_FEATURE_BATTERY; > pr_warn("Enabling potentially unsupported features\n"); > } > > Reviewed-by: Ilpo Järvinen -- i.