From nobody Thu Apr 2 15:37:39 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2C66318BAD; Tue, 10 Feb 2026 23:30:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766210; cv=none; b=FL8hVbDAmbcCgEtW3f8v9k/VI8+n47e5opi+kKSmGbIMKpTGNFnYNdQ4Z64cJpOKe88pfYposk5O6W4sMOBiVVaUTT1/fw/v0d1yr1ZRvVML3ymB8yFrU5fGGTeB3wW8EjCEzwI/GN1ZAcWqbvXMF3vtvBCXIuWTEHDIzTruvok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766210; c=relaxed/simple; bh=IIhYduzsAKVImbP3haEeeg+pflDeVfQ7y3WQ/YNoze4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CSStdI83aUZ9ffz+dBwe7KQsROcPuya5Mh0gC9RvZH8UnbosU/b2wq6yjDEZ6USRIsrUeOXxf4HxRPKQnNF0J4ivWOw5hus7/RRlG3Qq7MtgOxMDtOq7BTaDdU6t8MgS/leA8PDa0imjhOJu6eaCckZLshDJIx8Jcy3l8iAEebE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=IrsM2Jjy; arc=none smtp.client-ip=212.227.17.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="IrsM2Jjy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770766198; x=1771370998; i=w_armin@gmx.de; bh=Tn/B/kcVmRbsMNNa+BCWfnwPQuwbbLmFiWjtD6Y4JOY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=IrsM2JjyKl3/NC4OkE+XtiiCyaXIhsNx5COPLf7DzGp+fr4WISJRtIL1CEfGWmNx 2cFJM+UKskzCNvNBqGk/Sie2mGMCVvYl969vT+IhAZQoDrqagFRfJtjsZwpeOGDEX QfTQirgBlsARVXZb5qsKsbusUp1t6xQEOawspLw0XhFUhylq6PAFd124IAQ/V4mQO By/eIcQE7/0I9j+Ug4WiiKeJ+v5ODTUlDS3jYQXAIHoIgX9XP2DIALaK7zhYKSoBU H5N9PYVRFTBpNHd9vMNL3rsEIzP24uaw/2Jy+S2Obu8g0Esu95C/TJRAbVeE9AoPq f9AOQZv1Sz1HaUVxIA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([93.202.242.224]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MGQnF-1w1iCu3j6j-00BZFP; Wed, 11 Feb 2026 00:29:58 +0100 From: Armin Wolf To: hansg@kernel.org, ilpo.jarvinen@linux.intel.com Cc: wse@tuxedocomputers.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/5] platform/x86: uniwill-laptop: Rename FN lock and super key lock attrs Date: Wed, 11 Feb 2026 00:29:42 +0100 Message-Id: <20260210232946.302936-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260210232946.302936-1-W_Armin@gmx.de> References: <20260210232946.302936-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:9ZpQr7I6yjFyTNsXkBWxLRSgK66gJPadff/OvXTW49ne61a9KsO 5s7LZQ10mEhfvqqoH1nqQOIZ8/v0+nQs951qGOEND4lJVxh3gGlCArx+Hwr3nqrusZjhQ+S MKnygPlXbkfh8FatyXIhdXAgmAZb99hq4mTWmb/lQlPz7cg4Kjlr/wWysWgMeeHeywBmmkn 9q0HmMGpZW/f2tJ2K5xew== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:BJZAGyvgqEs=;dEIFGQDhZtT06Tl3kQHo5QoZpu8 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 Content-Type: text/plain; charset="utf-8" It turns out that both sysfs attributes actually directly control the FN lock status/super key enable status, rather than the triggering of the associated events. This behavior was first observed on a Tuxedo notebook and was belived to be a hardware quirk. However, it seems that i simply misunderstood the manual of the OEM software for Intel NUC devices. The correct behavior is: - fn_lock_toggle_enable enables/disables FN lock mode - super_key_toggle_enable enables/disables the super key Rename both sysfs attributes to avoid confusing users. Fixes: d050479693bb ("platform/x86: Add Uniwill laptop driver") Signed-off-by: Armin Wolf --- .../ABI/testing/sysfs-driver-uniwill-laptop | 10 ++-- drivers/platform/x86/uniwill/uniwill-acpi.c | 46 +++++++++---------- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-driver-uniwill-laptop b/Docume= ntation/ABI/testing/sysfs-driver-uniwill-laptop index eaeb659793d2..2df70792968f 100644 --- a/Documentation/ABI/testing/sysfs-driver-uniwill-laptop +++ b/Documentation/ABI/testing/sysfs-driver-uniwill-laptop @@ -1,4 +1,4 @@ -What: /sys/bus/platform/devices/INOU0000:XX/fn_lock_toggle_enable +What: /sys/bus/platform/devices/INOU0000:XX/fn_lock Date: November 2025 KernelVersion: 6.19 Contact: Armin Wolf @@ -8,15 +8,15 @@ Description: =20 Reading this file returns the current enable status of the FN lock funct= ionality. =20 -What: /sys/bus/platform/devices/INOU0000:XX/super_key_toggle_enable +What: /sys/bus/platform/devices/INOU0000:XX/super_key_enable Date: November 2025 KernelVersion: 6.19 Contact: Armin Wolf Description: - Allows userspace applications to enable/disable the super = key functionality - of the integrated keyboard by writing "1"/"0" into this fi= le. + Allows userspace applications to enable/disable the super key of the int= egrated + keyboard by writing "1"/"0" into this file. =20 - Reading this file returns the current enable status of the super key fun= ctionality. + Reading this file returns the current enable status of the super key. =20 What: /sys/bus/platform/devices/INOU0000:XX/touchpad_toggle_enable Date: November 2025 diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform= /x86/uniwill/uniwill-acpi.c index 3c9af441d133..856d5e38e045 100644 --- a/drivers/platform/x86/uniwill/uniwill-acpi.c +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c @@ -314,8 +314,8 @@ #define LED_CHANNELS 3 #define LED_MAX_BRIGHTNESS 200 =20 -#define UNIWILL_FEATURE_FN_LOCK_TOGGLE BIT(0) -#define UNIWILL_FEATURE_SUPER_KEY_TOGGLE BIT(1) +#define UNIWILL_FEATURE_FN_LOCK BIT(0) +#define UNIWILL_FEATURE_SUPER_KEY BIT(1) #define UNIWILL_FEATURE_TOUCHPAD_TOGGLE BIT(2) #define UNIWILL_FEATURE_LIGHTBAR BIT(3) #define UNIWILL_FEATURE_BATTERY BIT(4) @@ -600,8 +600,8 @@ static const struct regmap_config uniwill_ec_config =3D= { .use_single_write =3D true, }; =20 -static ssize_t fn_lock_toggle_enable_store(struct device *dev, struct devi= ce_attribute *attr, - const char *buf, size_t count) +static ssize_t fn_lock_store(struct device *dev, struct device_attribute *= attr, const char *buf, + size_t count) { struct uniwill_data *data =3D dev_get_drvdata(dev); unsigned int value; @@ -624,8 +624,7 @@ static ssize_t fn_lock_toggle_enable_store(struct devic= e *dev, struct device_att return count; } =20 -static ssize_t fn_lock_toggle_enable_show(struct device *dev, struct devic= e_attribute *attr, - char *buf) +static ssize_t fn_lock_show(struct device *dev, struct device_attribute *a= ttr, char *buf) { struct uniwill_data *data =3D dev_get_drvdata(dev); unsigned int value; @@ -638,10 +637,10 @@ static ssize_t fn_lock_toggle_enable_show(struct devi= ce *dev, struct device_attr return sysfs_emit(buf, "%d\n", !!(value & FN_LOCK_STATUS)); } =20 -static DEVICE_ATTR_RW(fn_lock_toggle_enable); +static DEVICE_ATTR_RW(fn_lock); =20 -static ssize_t super_key_toggle_enable_store(struct device *dev, struct de= vice_attribute *attr, - const char *buf, size_t count) +static ssize_t super_key_enable_store(struct device *dev, struct device_at= tribute *attr, + const char *buf, size_t count) { struct uniwill_data *data =3D dev_get_drvdata(dev); unsigned int value; @@ -673,8 +672,7 @@ static ssize_t super_key_toggle_enable_store(struct dev= ice *dev, struct device_a return count; } =20 -static ssize_t super_key_toggle_enable_show(struct device *dev, struct dev= ice_attribute *attr, - char *buf) +static ssize_t super_key_enable_show(struct device *dev, struct device_att= ribute *attr, char *buf) { struct uniwill_data *data =3D dev_get_drvdata(dev); unsigned int value; @@ -687,7 +685,7 @@ static ssize_t super_key_toggle_enable_show(struct devi= ce *dev, struct device_at return sysfs_emit(buf, "%d\n", !(value & SUPER_KEY_LOCK_STATUS)); } =20 -static DEVICE_ATTR_RW(super_key_toggle_enable); +static DEVICE_ATTR_RW(super_key_enable); =20 static ssize_t touchpad_toggle_enable_store(struct device *dev, struct dev= ice_attribute *attr, const char *buf, size_t count) @@ -881,8 +879,8 @@ static int uniwill_nvidia_ctgp_init(struct uniwill_data= *data) =20 static struct attribute *uniwill_attrs[] =3D { /* Keyboard-related */ - &dev_attr_fn_lock_toggle_enable.attr, - &dev_attr_super_key_toggle_enable.attr, + &dev_attr_fn_lock.attr, + &dev_attr_super_key_enable.attr, &dev_attr_touchpad_toggle_enable.attr, /* Lightbar-related */ &dev_attr_rainbow_animation.attr, @@ -897,13 +895,13 @@ static umode_t uniwill_attr_is_visible(struct kobject= *kobj, struct attribute *a struct device *dev =3D kobj_to_dev(kobj); struct uniwill_data *data =3D dev_get_drvdata(dev); =20 - if (attr =3D=3D &dev_attr_fn_lock_toggle_enable.attr) { - if (uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK_TOGGLE)) + if (attr =3D=3D &dev_attr_fn_lock.attr) { + if (uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK)) return attr->mode; } =20 - if (attr =3D=3D &dev_attr_super_key_toggle_enable.attr) { - if (uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY_TOGGLE)) + if (attr =3D=3D &dev_attr_super_key_enable.attr) { + if (uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY)) return attr->mode; } =20 @@ -1505,7 +1503,7 @@ static void uniwill_shutdown(struct platform_device *= pdev) =20 static int uniwill_suspend_keyboard(struct uniwill_data *data) { - if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY_TOGGLE)) + if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY)) return 0; =20 /* @@ -1565,7 +1563,7 @@ static int uniwill_resume_keyboard(struct uniwill_dat= a *data) unsigned int value; int ret; =20 - if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY_TOGGLE)) + if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY)) return 0; =20 ret =3D regmap_read(data->regmap, EC_ADDR_SWITCH_STATUS, &value); @@ -1643,16 +1641,16 @@ static struct platform_driver uniwill_driver =3D { }; =20 static struct uniwill_device_descriptor lapac71h_descriptor __initdata =3D= { - .features =3D UNIWILL_FEATURE_FN_LOCK_TOGGLE | - UNIWILL_FEATURE_SUPER_KEY_TOGGLE | + .features =3D UNIWILL_FEATURE_FN_LOCK | + UNIWILL_FEATURE_SUPER_KEY | UNIWILL_FEATURE_TOUCHPAD_TOGGLE | UNIWILL_FEATURE_BATTERY | UNIWILL_FEATURE_HWMON, }; =20 static struct uniwill_device_descriptor lapkc71f_descriptor __initdata =3D= { - .features =3D UNIWILL_FEATURE_FN_LOCK_TOGGLE | - UNIWILL_FEATURE_SUPER_KEY_TOGGLE | + .features =3D UNIWILL_FEATURE_FN_LOCK | + UNIWILL_FEATURE_SUPER_KEY | UNIWILL_FEATURE_TOUCHPAD_TOGGLE | UNIWILL_FEATURE_LIGHTBAR | UNIWILL_FEATURE_BATTERY | --=20 2.39.5 From nobody Thu Apr 2 15:37:39 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF9163254B9; Tue, 10 Feb 2026 23:30:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766211; cv=none; b=d/UQjCBuNhRJcJ80Q3qwY6hH8klOEJcaKPaGZMFonlMkqprHz+uzZQwN/ImpC2J/wKGB7ujE87BXRKmcwG10Rdh9TDonFX8Fh52L4Kx1A2qWizE8ao39f6J1jL9/4BLwkv7NVgvG9TKS41vZRcMV1ZwfE1Y0jBQj0Zt62I8Hlr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766211; c=relaxed/simple; bh=6oGR9K2BnzJDQSFZyZG8oQWUItRh9IL7GGzhSPcEVr8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dpGgocb1AgS0Fl8StSJ4E/sZ7gxaVIFyaYMLA3NcebKiL/eYODo2RSkQY44mAGCIjM6iL2Rl5MFB340uJCElxgzQ2cBlCMiufYFJkoTPX4z/nB6xxlljsBKQb35opB7beYBil8dgf81zHyCRzkP46fyQA2pOBEZobgTAeJV4pi4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=KEDc5iQ1; arc=none smtp.client-ip=212.227.17.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="KEDc5iQ1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770766200; x=1771371000; i=w_armin@gmx.de; bh=MxRYQQe/YScp6GeFBt8J+AuOn/moDV0qTdC4sNULT2E=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=KEDc5iQ1vzoWL3RF76mEKEP5QmDRD8dFzZDkzIeI7kKez/pYZmw6C9MxgHNl5Tc4 /L/Gcf4W4PSVRRafToZ3GiamGwrKqOL+kVer3l25P93Mn+FLI+QELHZkYlFmvQv51 HqLVsxlZwykjVGomlNsfUtgFsrKqLAbFmKbdWqvr7n5/hTN70FRPFz31nWjkuzZHw sfqtjA7yfy916t8DZldElcKGy+8Kgnu7UDgh6GxW4epgMQhb9iH4/SAm6zwJZMtGN GeI2QfGc52EBbe5O0dNo7brB2qpM8vj3Y5iLsuAKVV5iFCsBrQ2Z9f3cpObtIfsIY 5AJurbpplcqOtaFXDw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([93.202.242.224]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MStCY-1wEikr3A5e-00PPLj; Wed, 11 Feb 2026 00:30:00 +0100 From: Armin Wolf To: hansg@kernel.org, ilpo.jarvinen@linux.intel.com Cc: wse@tuxedocomputers.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/5] platform/x86: uniwill-laptop: Fix crash on unexpected battery event Date: Wed, 11 Feb 2026 00:29:43 +0100 Message-Id: <20260210232946.302936-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260210232946.302936-1-W_Armin@gmx.de> References: <20260210232946.302936-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:4RjvO9SUsiY9/3vbgZ/p8JRXcP6q31BltGJ31hd4ExPlj++mAuN qNs1/bEpzmTZZXhvwLMFMZvrpQHBJJmEFX4JGbuMVV9aHQjPLApiz8j1PNCT+cjxj5iffMj IzNm5JQYQwcZOpDZitn8MUPUx+NFp6FUFi2Axr6jgB0eQVt8dT5ojMmgqV7LZbiTe6v7/aI rsmqKvQHcw9aaq6jXIdNg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:eop/dj/qQH0=;Yclqe85cu9z58Akl9mtZAD4ohtY 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 9wpOv6TgXzYEzUSRcPhy Content-Type: text/plain; charset="utf-8" On devices that have not UNIWILL_FEATURE_BATTERY set, the underlying hardware might still send the UNIWILL_OSD_BATTERY_ALERT event. In such a situation, the driver will access uninitialized data structures when handling said event. Prevent this by only handling the UNIWILL_OSD_BATTERY_ALERT event when UNIWILL_FEATURE_BATTERY is set. Fixes: d050479693bb ("platform/x86: Add Uniwill laptop driver") Signed-off-by: Armin Wolf --- drivers/platform/x86/uniwill/uniwill-acpi.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform= /x86/uniwill/uniwill-acpi.c index 856d5e38e045..938e39647be5 100644 --- a/drivers/platform/x86/uniwill/uniwill-acpi.c +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c @@ -1355,6 +1355,9 @@ static int uniwill_notifier_call(struct notifier_bloc= k *nb, unsigned long action =20 switch (action) { case UNIWILL_OSD_BATTERY_ALERT: + if (!uniwill_device_supports(data, UNIWILL_FEATURE_BATTERY)) + return NOTIFY_DONE; + mutex_lock(&data->battery_lock); list_for_each_entry(entry, &data->batteries, head) { power_supply_changed(entry->battery); --=20 2.39.5 From nobody Thu Apr 2 15:37:39 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D61F31618C; Tue, 10 Feb 2026 23:30:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766214; cv=none; b=DhYXh9X82K91OQZU7urWLqQ8UN+/EPBEBEjeb1TyhyUgkF+N78D1ZqEstdVv1zZu56Fm2NVWnnYg0Q4Yf3YLOWfXE3BaHxcegAGfcXS74e/QeoEqeCLLFqR5mEEzegst1IKKYsWjMKiJ8fUUt+rWEMR1STBK+3DAszH7s8QOMgk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766214; c=relaxed/simple; bh=UccsnU/dr6V5kge6N9UjBGTYxZu9EO8rCdBPXNvNRzg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=QOtfwGFZEWfnwbTyPUjvIZ592PRkAMRte7RW5imJPug0/+Z5fAH9OkT0oDsENLi9s1fKYUpnOsPefSPNHHiFKdb3WL9FSwBBhgHq5rMUiW9STs4X4PxJ8JThlgBpUJkxBLno/8zRIlR7vposcXZ2npxN/DOEiehG/x+ApZM51lw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=M0WYplfo; arc=none smtp.client-ip=212.227.17.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="M0WYplfo" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770766202; x=1771371002; i=w_armin@gmx.de; bh=THTQXMIKeVsYSmqJyVL/DNq+JqgNTJ8A4stF67oa+wU=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=M0WYplfoZLXGhKVplyTv9TVbntCHzC/B/vOo+DvrBnLfsorK6qnybj4H5SIHCLU9 HNGPQExOGmxAdPiFWrLBabGYuvKP5gLFAzLXrnOfSyo82oNQa/sGvrmLeqCl3lgHL aC6wLlkv7phM05CWrAT9XBRxh5EEaLsmC8f6y9jEI0S85pjb4CKTDf9CrN30xZJkW NOrvOjmn8AaSbWZUPVe3tt14D+dsFkfiwRrVJ6pDxN1ysqL7wlAn5KnWCkXqmpWjV 0CHZbxbJVEmVQjtXVUp7dwCfC+Kj5Fhk7idnaAMJHErZsvTwt6cDomZupp3mCQ+gy gosyroFf8b2Q207jvw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([93.202.242.224]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MKsj7-1w6ERY2Vaf-00Yzqo; Wed, 11 Feb 2026 00:30:01 +0100 From: Armin Wolf To: hansg@kernel.org, ilpo.jarvinen@linux.intel.com Cc: wse@tuxedocomputers.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/5] platform/x86: uniwill-laptop: Mark FN lock status as being volatile Date: Wed, 11 Feb 2026 00:29:44 +0100 Message-Id: <20260210232946.302936-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260210232946.302936-1-W_Armin@gmx.de> References: <20260210232946.302936-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:xowTGBnqtQVxxQgICO6LYGy3wqr49xMATA67CFtID2VoUC08dmZ R49XBSu996lK7HXL/GUPo+18BJnxGia3nDQTDzm9Qx0fF8Ck4PdpHiN39EiC1Crq5POtUyf ZCChqnSwMjR6yg98KJcvLRW4mRr36kxc78vSYazvXPYn148ugIYS4XMXqJZNtaCUkQrHv3B Jwa45fCwQ1uAiOEDPWZlA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:yBVPa6PSM2Y=;ccCDWswL/SPAo461Ya7VfgjAvU0 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 qN2vmnIi63qj9/ID9pol Content-Type: text/plain; charset="utf-8" It turns out that the FN lock status can be changed by the underlying hardware when the user presses a special key combination. Mark the associated register as volatile to prevent regmap from caching said value. Also add the necessary suspend/resume handling. Fixes: d050479693bb ("platform/x86: Add Uniwill laptop driver") Signed-off-by: Armin Wolf --- drivers/platform/x86/uniwill/uniwill-acpi.c | 39 ++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform= /x86/uniwill/uniwill-acpi.c index 938e39647be5..fa1ffe541983 100644 --- a/drivers/platform/x86/uniwill/uniwill-acpi.c +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c @@ -330,6 +330,7 @@ struct uniwill_data { struct acpi_battery_hook hook; unsigned int last_charge_ctrl; struct mutex battery_lock; /* Protects the list of currently registered b= atteries */ + unsigned int last_status; unsigned int last_switch_status; struct mutex super_key_lock; /* Protects the toggling of the super key lo= ck state */ struct list_head batteries; @@ -576,6 +577,7 @@ static bool uniwill_volatile_reg(struct device *dev, un= signed int reg) case EC_ADDR_SECOND_FAN_RPM_1: case EC_ADDR_SECOND_FAN_RPM_2: case EC_ADDR_BAT_ALERT: + case EC_ADDR_BIOS_OEM: case EC_ADDR_PWM_1: case EC_ADDR_PWM_2: case EC_ADDR_TRIGGER: @@ -1504,7 +1506,19 @@ static void uniwill_shutdown(struct platform_device = *pdev) regmap_clear_bits(data->regmap, EC_ADDR_AP_OEM, ENABLE_MANUAL_CTRL); } =20 -static int uniwill_suspend_keyboard(struct uniwill_data *data) +static int uniwill_suspend_fn_lock(struct uniwill_data *data) +{ + if (!uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK)) + return 0; + + /* + * The EC_ADDR_BIOS_OEM is marked as volatile, so we have to restore it + * ourselves. + */ + return regmap_read(data->regmap, EC_ADDR_BIOS_OEM, &data->last_status); +} + +static int uniwill_suspend_super_key(struct uniwill_data *data) { if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY)) return 0; @@ -1543,7 +1557,11 @@ static int uniwill_suspend(struct device *dev) struct uniwill_data *data =3D dev_get_drvdata(dev); int ret; =20 - ret =3D uniwill_suspend_keyboard(data); + ret =3D uniwill_suspend_fn_lock(data); + if (ret < 0) + return ret; + + ret =3D uniwill_suspend_super_key(data); if (ret < 0) return ret; =20 @@ -1561,7 +1579,16 @@ static int uniwill_suspend(struct device *dev) return 0; } =20 -static int uniwill_resume_keyboard(struct uniwill_data *data) +static int uniwill_resume_fn_lock(struct uniwill_data *data) +{ + if (!uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK)) + return 0; + + return regmap_update_bits(data->regmap, EC_ADDR_BIOS_OEM, FN_LOCK_STATUS, + data->last_status); +} + +static int uniwill_resume_super_key(struct uniwill_data *data) { unsigned int value; int ret; @@ -1609,7 +1636,11 @@ static int uniwill_resume(struct device *dev) if (ret < 0) return ret; =20 - ret =3D uniwill_resume_keyboard(data); + ret =3D uniwill_resume_fn_lock(data); + if (ret < 0) + return ret; + + ret =3D uniwill_resume_super_key(data); if (ret < 0) return ret; =20 --=20 2.39.5 From nobody Thu Apr 2 15:37:39 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B54D532694A; Tue, 10 Feb 2026 23:30:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766211; cv=none; b=MWvbSGVMyuO776rwJ/EFB1r2PhZlAs8pSRLClISqX2blFzR3Gb+kra+Y1bErnnFNHQJW4GTsWg5zmY6+wEN/BvB+hspXUR2jkk+oqm+4m5wWRp2sGrXLugHafk5E/8uOlI4sQxP8x6mdOnXYbmzmL2H2b0bl+Qs7V2KbQ0PyF/M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766211; c=relaxed/simple; bh=TrJHzYjterZ/rudL0a5Cmv/05KwT7f0/ZmjUkzdbZMg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GDUykD5hnlmlF2niPo+dtL+Q64KBanC7p4wqLHsLRrSmP+QiJroOBXc9+XorLi16Wj2ABgClHMPHDchjB89TQC0gGu9+4QGZi6ydEhHbmYaBqHkLc2x04XEsNkTItTltbANFZS5l8qi5xs6yuFEfRotq9CcYdCiF51OaPG0uJgM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=ANB5wyk3; arc=none smtp.client-ip=212.227.17.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="ANB5wyk3" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770766203; x=1771371003; i=w_armin@gmx.de; bh=vFl5nSVzsFLkWB8ebMtJNw/74UNa322NIlh2BsTfvP8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=ANB5wyk3Giupg/gllKXXDLL+kx8j9sYf2SmbX17uS5lBIJuuQTeA2t1DyQ+/C3xT 0OGjPt39oXWpSdyD1BpJ8/EBqyXRUzkvjA4o8fQj3PKHlADEBXX8Q2+fYliB3IEA2 WL5F5eSpS1CJZrvUqRHfnQQbyVhAGJ+ozMoii+eBp3Q6VFr1YaAPSh0iPGLIikXyS wZaFUjp5dh4deQ9Kc22i+4N366rpDnUvnz1Yj3MX/nStimC+w9aAMIWeL0uU3DnUb hMXQwqXS6HUxOruGFsOAm9DEFfonWlpkdnPRadtbhdHVmTtBBSAyInCXgrrhu3Exu fmPgF1y1XFjbnSeQcw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([93.202.242.224]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N49lJ-1vgm781qTJ-015rM2; Wed, 11 Feb 2026 00:30:03 +0100 From: Armin Wolf To: hansg@kernel.org, ilpo.jarvinen@linux.intel.com Cc: wse@tuxedocomputers.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/5] platform/x86: uniwill-laptop: Handle FN lock event Date: Wed, 11 Feb 2026 00:29:45 +0100 Message-Id: <20260210232946.302936-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260210232946.302936-1-W_Armin@gmx.de> References: <20260210232946.302936-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:QzwBVJXIWzJbv/hFJzsMk7BhVDMROgAbcmWfot9ChesmRsgAXHn mllQLzlFNj3ohG7aa4FpEMp6pYo2e7XFjvHvRQSh43Ehoa0GttsUm4OLZuQYV92qYe8byFE Cx9CQxTmE7CbRxVZF9Z+bWN6kmw7BIU28kGhgxtDwYrpIMZnvVuvCY09o24rNKe3THw9F1h lEJciO1PokhojADbWHMTg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:rwphQk+3VS8=;TE5ftL4ehEmpTS+TcGITIzfqFUx +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 vTNxmi3M= Content-Type: text/plain; charset="utf-8" On many devices, the user can toggle the Fn lock state by pressing Fn + Esc. Forward the associated event to the fn_lock sysfs attribute as a poll notification. Signed-off-by: Armin Wolf --- drivers/platform/x86/uniwill/uniwill-acpi.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform= /x86/uniwill/uniwill-acpi.c index fa1ffe541983..e162af1d9118 100644 --- a/drivers/platform/x86/uniwill/uniwill-acpi.c +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c @@ -402,9 +402,6 @@ static const struct key_entry uniwill_keymap[] =3D { /* Reported when the user wants to toggle the mute status */ { KE_IGNORE, UNIWILL_OSD_MUTE, { KEY_MUTE }}, =20 - /* Reported when the user locks/unlocks the Fn key */ - { KE_IGNORE, UNIWILL_OSD_FN_LOCK, { KEY_FN_ESC }}, - /* Reported when the user wants to toggle the brightness of the keyboard = */ { KE_KEY, UNIWILL_OSD_KBDILLUMTOGGLE, { KEY_KBDILLUMTOG= GLE }}, { KE_KEY, UNIWILL_OSD_KB_LED_LEVEL0, { KEY_KBDILLUMTOG= GLE }}, @@ -1372,6 +1369,13 @@ static int uniwill_notifier_call(struct notifier_blo= ck *nb, unsigned long action * gets implemented. */ =20 + return NOTIFY_OK; + case UNIWILL_OSD_FN_LOCK: + if (!uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK)) + return NOTIFY_DONE; + + sysfs_notify(&data->dev->kobj, NULL, "fn_lock"); + return NOTIFY_OK; default: mutex_lock(&data->input_lock); --=20 2.39.5 From nobody Thu Apr 2 15:37:39 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 63171333448; Tue, 10 Feb 2026 23:30:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766217; cv=none; b=eODrxEr+Ib8rrA3mLJkNjsiqHN7UebIbLXDT4VP33wmj2hUIkjUDs+XWaXkAnbKjPG3Zol4LiQalb38S0QOEk0YMLsbWlDSo36DEzehPwmqZ/BS2pt3o8083B02/go1lBjmsstAbXzrq73wwAPwVE8Thy1qWI27bu6qfvbvvQaw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770766217; c=relaxed/simple; bh=pQoG88jV7mEdEhVKU+etXqUr9H7ljQz5YkoRYnTHSss=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=a7gIdj6wHga1IRuMll+oTr2acrv8oFVAtfv1S0vQSsUPjJQnbIXxzISHNPElX0HjAjA7FcvCjE6ooh8n6ezNHjnwO8MGtCeQKzTHH58pFSkDELcb7pPu9abu4rQwWZ3Y9c24QGqsFqq8F9BJJ7nUPRjM+91n99pNyttuphQoxmQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=LPY4tYIw; arc=none smtp.client-ip=212.227.17.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="LPY4tYIw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770766206; x=1771371006; i=w_armin@gmx.de; bh=ivRcoZ05eLq3QaGF2INQXAAfXk0viYFYVkQjYMzIxPE=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=LPY4tYIw3mvTgK4n2eUbqM89LTpRGyxfpZnD87MQm8X+m1GCwMmRFgoE8IH0sv+r o/SgmMB37MSm2WubFfC2P7vUEGN1az0eTe0/wKDHVXD4eOofllaxvh16JNYQOUUlp svAkiHRUIZzTy99BdZH4lO043YMr2xvx7HDgRRIiCW1RXnPk5KOY7nwGKMQ+WDKka I7xRSU+4SvvEngUkBt6+X/WFdyS7B1kCBQmSMVy0tlf8ejH+AGAOws/vCW5nZWefB JQRxaQQlmjM+7149Up+hcJ2x1nFBsVLCKE/yj9xn4DramTWo4/UtknBDUKpnqYOGt NOzhJK4Ru0EhxH76Ow== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([93.202.242.224]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MhlGq-1vL08r2Noe-00bJn9; Wed, 11 Feb 2026 00:30:05 +0100 From: Armin Wolf To: hansg@kernel.org, ilpo.jarvinen@linux.intel.com Cc: wse@tuxedocomputers.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/5] platform/x86: uniwill-laptop: Handle super key lock events Date: Wed, 11 Feb 2026 00:29:46 +0100 Message-Id: <20260210232946.302936-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260210232946.302936-1-W_Armin@gmx.de> References: <20260210232946.302936-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:FiIDtqET+ZstP2srIn4xugpPLNZw7aclTpQZKhTQ3mkqd/jK64H LE9aj6bLkyABV5yHrPRnG28AZMYzSxfSaQsfwfuScYFP7t0+4eURYLfthJO67LYIq1+xXBv 3qY/WXyWrpxJjk7uhRwTayN/jZEDLRNRalaQ04YHX7bAyxnVJpAgS2OI68ipdgYHAe6GKG2 9B18kZl8pCmijlb4p7UYw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:owpcdnurq9s=;iIdxtfwmu4GhOu+lvJwAQP7q2Sb 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 mqaiI6AU= Content-Type: text/plain; charset="utf-8" On many devices, the user can toggle the super key lock state by pressing Fn + F9. Forward the associated events to the super_key_lock sysfs attribute as a poll notification. Signed-off-by: Armin Wolf --- drivers/platform/x86/uniwill/uniwill-acpi.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform= /x86/uniwill/uniwill-acpi.c index e162af1d9118..26ee21a95a8b 100644 --- a/drivers/platform/x86/uniwill/uniwill-acpi.c +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c @@ -378,9 +378,6 @@ static const struct key_entry uniwill_keymap[] =3D { { KE_IGNORE, UNIWILL_OSD_CAPSLOCK, { KEY_CAPSLOCK }}, { KE_IGNORE, UNIWILL_OSD_NUMLOCK, { KEY_NUMLOCK }}, =20 - /* Reported when the user locks/unlocks the super key */ - { KE_IGNORE, UNIWILL_OSD_SUPER_KEY_LOCK_ENABLE, { KEY_UNKNOWN }}, - { KE_IGNORE, UNIWILL_OSD_SUPER_KEY_LOCK_DISABLE, { KEY_UNKNOWN }}, /* Optional, might not be reported by all devices */ { KE_IGNORE, UNIWILL_OSD_SUPER_KEY_LOCK_CHANGED, { KEY_UNKNOWN }}, =20 @@ -1353,6 +1350,14 @@ static int uniwill_notifier_call(struct notifier_blo= ck *nb, unsigned long action struct uniwill_battery_entry *entry; =20 switch (action) { + case UNIWILL_OSD_SUPER_KEY_LOCK_ENABLE: + case UNIWILL_OSD_SUPER_KEY_LOCK_DISABLE: + if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY)) + return NOTIFY_DONE; + + sysfs_notify(&data->dev->kobj, NULL, "super_key_enable"); + + return NOTIFY_OK; case UNIWILL_OSD_BATTERY_ALERT: if (!uniwill_device_supports(data, UNIWILL_FEATURE_BATTERY)) return NOTIFY_DONE; --=20 2.39.5