From nobody Sat Apr 18 01:58:26 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 1BFEE3594F; Thu, 12 Feb 2026 07:02:46 +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=1770879769; cv=none; b=vBgnRK6lYppKzjLqkBVizE6qdJK1yk+NOLfkvDtqTV8ei233u/KvQ46OXFpIa02J7PeNpZZg+eqE2wzvd4BBByiAoQrF1ZGaj2shxi4170IiJ/oYfgBYYj7oHLSF0hVQPwHPdrmb/PAvsjKwRQU9bTpmnsWke72cerVbFhf95+U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770879769; c=relaxed/simple; bh=ayeccREfQpvtGlfiVc18viu3guvYh0W7INbDvultY0Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZTRLcljbFI2he2iE4MsfEZsa3mNJPtnY3UMEC6DL+pi3jsFmBEJCcp2fhOur82c3ReGL/Ckfe6icIDQpe2m5kRBSxaU25OvuAEZsAPgk9ah5WX4XhzHIrofjnUgcgGQFqCDoFl8GTiMHEOIVjcOnzPru9edu3ddhuLZm59w1cKo= 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=ox+vYl88; 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="ox+vYl88" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770879765; x=1771484565; i=w_armin@gmx.de; bh=hc4xV0ENrP7wE+WkCySf5E1F/9T/Os5OfmPbua+z7Vo=; 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=ox+vYl88dTdhxZ0ZoTa0j703VjUZoy2dteAaiQjOniU9kyJgU5JCiINMD2XPptlB tzQrQd4Y1VHFi8EmIkAiNrmXec4bfk6P8jus/I4XWE1ZGDSiR4x/IZn2wMaWkQZZA +pdXwMe3l9Ymmk6XU6kuW9+VsoD+pSrLkLdCg86NH23v81wV6/vGgO8GsUWATRi9C lDVP9PcIJ1ip71AoTrNGOSuFNu/z/Qf76skX2ZSZu/85WByRCHZwb8jLYybdL+0jK C7QViN6bl25LDAH7T7YYNUN6yv8aSnlCllq4iLka+MhxEAIExiEP4Kyf841gc6YUm hQHpZTb3PIZUwHQp8Q== 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 1M1Ycl-1voUeM0JFT-00Fgpc; Thu, 12 Feb 2026 08:02:45 +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 v2 1/5] platform/x86: uniwill-laptop: Rename FN lock and super key lock attrs Date: Thu, 12 Feb 2026 08:02:32 +0100 Message-Id: <20260212070236.17296-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212070236.17296-1-W_Armin@gmx.de> References: <20260212070236.17296-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:NeHK2p3wzOfO/pvKa90DFWFCVa0yZay8Ll7shxL+NEKGgTN99Nt r/RJXZ6OHVPfPoxZkKK6iHM0eMfFThToS833t/na+bLqc0sqFaSE54FfTOgk//K+aVlkcXq NNuGtBNQBFWx4oVV4pgk70y8pKqLp+vn3Q9uvOaQraFPeP50W+64iizTmhb3fvTHEWibDdm dB3nStccYZFHwxQ5LS2bg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Y3jWlHP1tK8=;fQM/ctFwJd6BzzxPJqtrkwwiHoK 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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 ++-- .../admin-guide/laptops/uniwill-laptop.rst | 2 +- drivers/platform/x86/uniwill/uniwill-acpi.c | 52 +++++++++---------- drivers/platform/x86/uniwill/uniwill-wmi.h | 4 +- 4 files changed, 33 insertions(+), 35 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/Documentation/admin-guide/laptops/uniwill-laptop.rst b/Documen= tation/admin-guide/laptops/uniwill-laptop.rst index a16baf15516b..aff5f57a6bd4 100644 --- a/Documentation/admin-guide/laptops/uniwill-laptop.rst +++ b/Documentation/admin-guide/laptops/uniwill-laptop.rst @@ -24,7 +24,7 @@ Keyboard settings =20 The ``uniwill-laptop`` driver allows the user to enable/disable: =20 - - the FN and super key lock functionality of the integrated keyboard + - the FN lock and super key of the integrated keyboard - the touchpad toggle functionality of the integrated touchpad =20 See Documentation/ABI/testing/sysfs-driver-uniwill-laptop for details. diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform= /x86/uniwill/uniwill-acpi.c index 3c9af441d133..30acf752adce 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) @@ -377,9 +377,9 @@ 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 }}, + /* Reported when the user enables/disables the super key */ + { KE_IGNORE, UNIWILL_OSD_SUPER_KEY_DISABLE, { KEY_UNKNOWN }}, + { KE_IGNORE, UNIWILL_OSD_SUPER_KEY_ENABLE, { KEY_UNKNOWN }}, /* Optional, might not be reported by all devices */ { KE_IGNORE, UNIWILL_OSD_SUPER_KEY_LOCK_CHANGED, { KEY_UNKNOWN }}, =20 @@ -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 | diff --git a/drivers/platform/x86/uniwill/uniwill-wmi.h b/drivers/platform/= x86/uniwill/uniwill-wmi.h index 48783b2e9ffb..fb1fd20392a0 100644 --- a/drivers/platform/x86/uniwill/uniwill-wmi.h +++ b/drivers/platform/x86/uniwill/uniwill-wmi.h @@ -64,8 +64,8 @@ #define UNIWILL_OSD_KB_LED_LEVEL3 0x3E #define UNIWILL_OSD_KB_LED_LEVEL4 0x3F =20 -#define UNIWILL_OSD_SUPER_KEY_LOCK_ENABLE 0x40 -#define UNIWILL_OSD_SUPER_KEY_LOCK_DISABLE 0x41 +#define UNIWILL_OSD_SUPER_KEY_DISABLE 0x40 +#define UNIWILL_OSD_SUPER_KEY_ENABLE 0x41 =20 #define UNIWILL_OSD_MENU_JP 0x42 =20 --=20 2.39.5 From nobody Sat Apr 18 01:58:26 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 2FF4523F424; Thu, 12 Feb 2026 07:02:52 +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=1770879774; cv=none; b=KgpW51kyhPWuGgEABpLkK3QFycuiA9t72GoPmAO8/zcEht5yDe9Qj1w8fiUU5DquiX9TsY7nHXLGH3srpRaklj9ystskRvyAVlEplGI2dWnqZYRFdMro2VfXtqdzfSsJnGuExQrIamy2TDlvPZQMtOpe1yy4CFIkLkNgxHGGjsY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770879774; c=relaxed/simple; bh=sa6CYTU5cL/hpWUbRgp1qPiZPytf4PLf4/u8hIGKACo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GXBHqslqB2J4wzMSIGBZcpaFibhc3gu92szyfLBrUwXcv4HCX8crmg7SMngON2KyX5+d177U+6pSDN/kJdvWcxsiySmKJIY3kT530DFqBG85Fff2LjcCFt0E7EnlwYmqRhkVgR1ASzpg9g3PQM3x0MWwME9ETedyi6rzlmex18E= 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=bm5Oaz+u; 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="bm5Oaz+u" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770879767; x=1771484567; i=w_armin@gmx.de; bh=EUFJ1FojByf4WN3V1kf4vyC8qEwv4Cvf0RDvuUtPexA=; 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=bm5Oaz+uNh+YhICY2ULiXOdIKw17ANFQKP5HzqvCKBYp7HDck3KLj2daA7w6mp0U NOSjyh+6pOYj4OLqmkrMcYrLkJFIOCubT63ptiR6YqtyxGbosRBGYx9lsC1ADZ0QZ I8E5hlwN7B7YIghIK0SqvU8+5OOOPE07CaK1i27QSxl+ohD3+1WuOwm9I1aH1UE/N K3H0nkAnYW3IIvKuTa/ZesyzEeREKs2t7tjCPUPPAPEttTWXnwEaEDHAFn8zgXWB5 m/SYLLk6Q6HD6l3JFjIfhD8IhUXhfLidy7bPOpoXtsWMcJajFEodRHSLYXNcOWdU4 nZxq4+BHQ7PVdzLUmA== 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 1MOA3F-1w9rHb3r2X-00LaDd; Thu, 12 Feb 2026 08:02:47 +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 v2 2/5] platform/x86: uniwill-laptop: Fix crash on unexpected battery event Date: Thu, 12 Feb 2026 08:02:33 +0100 Message-Id: <20260212070236.17296-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212070236.17296-1-W_Armin@gmx.de> References: <20260212070236.17296-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:24u/Ir2sllFVAUf9bLrzaGBcFsBVn9NpxbDmdFdUu5q6Ch6jgwP W0INhGIQ5SjUa8XZcczmFgYNTofRWdAYZexCeyA3QDTYVDYAjDKymKfm9VEU3eWlem1TtUV pMqJA2dBj8O8Cia9rPsmGEeFgN36HZoh2IxyQPdshVKglqEyfoJ+h50rbCfZR8Kiyt8szVA GImyhWE/hka9nSNWhQSKw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:HTbgU6kJohE=;EfVFrdQEuNvOlo5kx6eBpFO4WPO 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 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 30acf752adce..ca66288e0d5d 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 Sat Apr 18 01:58:26 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 24F9BBA34; Thu, 12 Feb 2026 07:02:54 +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=1770879776; cv=none; b=hWBMYGxXooyCJtXA07ZyoO7ABi2+t77AFRH2VRRInNO7Gr8NmSKoK6/PXN7HYkMknKQc2oWA3/9Y+X7RwFRv+eOySzq76zFisQvrxWzhWh1aAZjZZTBzkbvOmIPGFJR+Ybc/nQlhlhNbKDMt5cgqk121O5nkIB8phOm4SFe0dww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770879776; c=relaxed/simple; bh=37nR4fMidhFiBaPoF36iozZr4tqKD/V/bHy1eOB9bmg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rKjlgSSBpvYgCC0YGPkx1SCZ12tGD8gPRIo5LhdcKA8klcySJPoOuoL0HzzEq15q5e7lZQKUttvjdd/lOkRH1NO3r0/aiQzo5vdWTmRJDvaWe8I3joMRN3EZwtT6RCaT9xJx86Z+4lD+r0LSrEMl6RfisGD2vVVOAbMPJLEJ4E8= 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=gDptQUsO; 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="gDptQUsO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770879769; x=1771484569; i=w_armin@gmx.de; bh=azcG0NDpxMJZHFPjxRLnijLybw5rz9BsVUnYNy4ZCj4=; 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=gDptQUsOSAOl4qjkZwi1jX0YvD5d+k5sGOk9rMZ1Ym6IAc8z6B5T5iomaexGelXT jAPj6nL+tmr1N3Xxo7CXpWAJr0tgz9I4Sq4Tu6NrQO9wG1FZh6Hds1sdb+zIucKad fsJjVYTWaEsZZQanrP/M4pbs5RG5hz4Li0wn8SO3lZi0AOmBIK5z7w9uKRq+Hxv6Z fwGzFSrHPWFGfsLj2RwecsoS108Y+X8M+f/lrOxDSKn9W2pBFVs5HJs4Zc5uAfRxU mFAIEWZMt+ln8MC0TUICJAXdd9rqOKnGl6PuRB0UPNQr6iEkA/mZQxBVLDpo91D/3 uNCApd821Scjq/rmGQ== 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 1N3KTy-1viDJS3cI6-00vRMs; Thu, 12 Feb 2026 08:02:49 +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 v2 3/5] platform/x86: uniwill-laptop: Mark FN lock status as being volatile Date: Thu, 12 Feb 2026 08:02:34 +0100 Message-Id: <20260212070236.17296-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212070236.17296-1-W_Armin@gmx.de> References: <20260212070236.17296-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:gZnJbDobw5H2Lnc1wNnj5ajy7p+qcrZJAx3QCJwbyl9On/28Sgh sAOi3hDyOQApM4L16DTAFIvXxcPKGr4cfXv74waX1Ofh38chMBHpupWz6LWrHWm+OEVWmFh Rvz5K0Dlv1tShrHk0OJtnRZPu3gfOdJzVg7Wt0yoCLVPEdzeLVVsX9ssn/ASxaXKmOVcfjU uLg5Pb5POEZBm7mOYKHTw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:m7Mw61CB7hQ=;1A39xs3AzdKhKA4dX3dHypnFSD4 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 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 ca66288e0d5d..5ff8fcec9d9e 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 Sat Apr 18 01:58:26 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 E0E5E28CF49; Thu, 12 Feb 2026 07:02:59 +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=1770879781; cv=none; b=M+mtODiLue8nfvihvcSO6dRYVLnm/AqHKRV6MZP5OPFvYToZDwke0APPo1hknx6m6KM3kMhcUBmrQ36ig5NdOAC5fadWQUtbjUfzw2yRnmfUQA7oPhHt1Ikuw8ZUoeAuMH5b3m47rWX87Xj0TrBc5SHMjxgdIoLDKGruk1vumNM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770879781; c=relaxed/simple; bh=iWoz/RXFyu0qvw2iBlfsNazFTR/zqoX6Mt723oU44+c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Bgw4k8KPT1kmd3YldBxvnW430PaVKqreIfV8ZCk1gfhTVW+Nkt4WVocw/aLRZc+LCiuV6PYwFZizBBtWQ7RIittundasm7ZPN+G7KZ8qUJFOEYIaYfFilElwQxXdKUCpPD5Mh/aUUtSsLESDbZfy7GBKaHKNJsHbCSm50EycJy8= 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=dGZQiHPc; 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="dGZQiHPc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770879771; x=1771484571; i=w_armin@gmx.de; bh=/T6LXWJKHRbPYRiq/9MejegjR5c/zSd6mMGoanPYgbQ=; 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=dGZQiHPcURFHjAIMb0VKmbmI2CvUFnvBeBtQkPHtiahuhH0ay1Owm9eioZal9RqH Ww3uRE5xtRxlBTe6cht2LaTmvuyOhIQtUoeFEM1m8IxJV781ZPAB3TLg9zaphlvID SPK6/UejOEpYrtiNmsnnXqEySCAqK9DKo3NEHTp9Dhp0W8rZ/AblXLdufYLmfte4D Z8g4VUGPNypr7wh6SG8ABNL635LtcdpEHB3pabIjljEbNhGnhetsNzJ8SBrVOFYhL EOIGP+lC+lJ73Fo2uQNUOKVe2enc4t88Ir2SLqy6HBPX1tMzCCPj5YGiwWbK04FRi PGr23PtPWEoNGojNwA== 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 1Mf078-1vK5lw3ODi-00cygG; Thu, 12 Feb 2026 08:02:51 +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 v2 4/5] platform/x86: uniwill-laptop: Handle FN lock event Date: Thu, 12 Feb 2026 08:02:35 +0100 Message-Id: <20260212070236.17296-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212070236.17296-1-W_Armin@gmx.de> References: <20260212070236.17296-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:CGJAl8fOSHhbBRzZUDfoc+hNnDOokLGc1H6Rkh5aeRSO58GlNxj 2V8HIhyBlP0XjKTUNrWcEpBgrGOfYa21sFSX0FQO8MVGU+EdwSLGJJvNzJ2C4UYbaxyMJFe sf401p0DDyLp7CAMcBZAKgrOjm+b+vCpe4muvQKIjBW32Ou32oODmqmBAntzww023W22POG 9YpQn0d26WjQdxDYRlEMA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:AcJD6+e6hCw=;pxmkDOjVPq+avaQhZbeGNlW8c5S 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 qGN5/8jwU6EzM0SPOJrETAR0cEtZM 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 5ff8fcec9d9e..afa534da6d57 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 Sat Apr 18 01:58:26 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 C1E4521FF26; Thu, 12 Feb 2026 07:02:55 +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=1770879777; cv=none; b=CqhB6InOYPo8og/4qTsKLz5MU5hCfs8gdjdSfZN7DhZi8iB+pkWHcLtJoVbskddCF3OQe/u1UGfswgAg5Ef6RQ7z8zVOVMcse1fzHB+cqNCaRkFpZAY51rkuLbGaGOH7WBg9L5loRAIhywQn9GbEnn332ils6ykIKjt/BJcGlJo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770879777; c=relaxed/simple; bh=SE7gEoZ+dEfHGRInNcKWsKvv5KuSq2wDxg4nC8t0YGc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mhU5CNySAar4aHL4sB4bQtY/XeYHU5aLda43gw7HU+Cm8R8zSwZ2F+oNQnL4yqMh34ekjZHlq6rdFaKBv3hVhEwS38RBBdgAbZqYwEV28r8mZN7BzkXMT3ISojxktszgHGmhFK1Mh3oXuLcox/Y8pzAb8YfWjrMHY2nmNxpdTz4= 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=i90FMVOp; 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="i90FMVOp" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770879772; x=1771484572; i=w_armin@gmx.de; bh=bJB6e1RTr/AUgGx1Y0uId8bipyTX8qUIJ3ZoRPdGMIk=; 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=i90FMVOpkmHQtiYlc776FzbKTZnC7cQHXQ4OmCl3z5Ns9oRqsMoQszrk7SIijWdz vuNxGtqnjHXSQlBq09c6e6WjtN5LaxxPNQ6ZrSZUhyQ+o8dw8xViWiK9qZ8pVrTMi rV+R/6XsEqqHcEVVXhquRdYQDVxqZ69Q97rZRyNjHu7lEmpsdCwmFLcqyriqnjWdF 3CMqohMoxEs+fmHd1R2AP5FdN8X5JsKXHmv9zWeHffjo897JhuPZfIjZknOwiw7vK HbZw7MI/4wZYUQGnb6zTvE3IpMMmyJP1+v+vpWOgngV9RwxOCHROIUbk91oTuvAvE FWKQME5XDKAcfJh5VA== 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 1MOiDX-1w9JJb1ru3-00U3wb; Thu, 12 Feb 2026 08:02:52 +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 v2 5/5] platform/x86: uniwill-laptop: Handle super key enable/disable events Date: Thu, 12 Feb 2026 08:02:36 +0100 Message-Id: <20260212070236.17296-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212070236.17296-1-W_Armin@gmx.de> References: <20260212070236.17296-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:eCZgZe47HOrai0k8sf5uFYscLbk730RWg6T6V9+qdnglY0N/kwG dcceoiMR79ur1oeHzJezRZdi/syoF8Ps7KJ9SQIn9MTuzigP+U0F6yAaPvddEXaPzoKHHiZ U5QcQs0rX/G+qLoQl+IWoAyGaJJFhu0KLefidDRcMGcmz//IvLwlcovuyjufuTztYYPZ6Dh kx29lwH35WPCyjatGjRPQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:MRmMSU8jNR0=;HiNiBruWviORm/SEPyo71FSoNlR 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 Content-Type: text/plain; charset="utf-8" On many devices, the user can enable/disable the super key by pressing Fn + F9. Forward the associated events to the super_key_enable 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 afa534da6d57..d97a1e050740 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 enables/disables the super key */ - { KE_IGNORE, UNIWILL_OSD_SUPER_KEY_DISABLE, { KEY_UNKNOWN }}, - { KE_IGNORE, UNIWILL_OSD_SUPER_KEY_ENABLE, { 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_DISABLE: + case UNIWILL_OSD_SUPER_KEY_ENABLE: + 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