Unverified Commit 26cbe119 authored by Armin Wolf's avatar Armin Wolf Committed by Ilpo Järvinen
Browse files

platform/x86: uniwill-laptop: Do not enable the charging limit even when forced

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: d0504796 ("platform/x86: Add Uniwill laptop driver")
Link: https://www.reddit.com/r/XMG_gg/comments/ld9yyf/battery_limit_hidden_function_discovered_on/


Reviewed-by: default avatarWerner Sembach <wse@tuxedocomputers.com>
Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarArmin Wolf <W_Armin@gmx.de>
Link: https://patch.msgid.link/20260512232145.329260-5-W_Armin@gmx.de


Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
parent fb4b67c4
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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/
+2 −2
Original line number Diff line number Diff line
@@ -2507,8 +2507,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");
	}