From nobody Sat Apr 18 00:22:04 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 76D1025B1DA; Thu, 12 Feb 2026 17:44:12 +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=1770918254; cv=none; b=EQ4USAbwEl05nDHWbjoy8r6bHZCqpZNze6nl0J0360eXuwTHSy/AEDj3kl/eNuL7mDhVft6PCGBqWI1YFrvmb/UZATgI3QT5+21AtZoPPe+vtLXAwiJDg5VcihOweC11C9Bz2CWsurRF7y5vdzoe/GlSZzwtrhyjrkh9oVD/9KQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770918254; c=relaxed/simple; bh=kSXNLSlhLMRH/McAU3ZITbbzDXSTa3OAkXVwqIUYkdw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hTPJ+3OHupJcnFfLysAgbsfCzhgyN2+NRIGgfQhgEMq/qMBzdwhGKjGKvuLrErNd8kjiTAPM0fadv/JHBbfLs251vKctNEwtIK4D0n5R2R6o+z1Ma9sy3T53Z32y5/x0+L8IEX53Yj3/OYTNDxnlLc0rDJZUNApCwTekxc3qoIc= 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=nSQKncgX; 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="nSQKncgX" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770918241; x=1771523041; i=w_armin@gmx.de; bh=1xkhUoG9ppqwnfNzy+l9eQqfhUKuVVXeQ5LTu3M+73I=; 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=nSQKncgXzN2mMt2mEcLP4AwNNRDIIe1+i0vuIGYaP9QauSdMTYWzm8TmQAg6j33X x5u4B0orcongBk3aRCPoDjGDeGxGMnFYCqyvrlRBklsSqMivji4r6nCEMq/n+B77I p5lBvwyyEavWyiU20g+rxjMdPKbDGlycnx0R8edV80MQMqqH+pznT7VX/3uTwpg+P sOJLhcWw5H3TNb+VLun3wsimNs2cx85RASdRJmvavHvB2PVZf6ZFnl2JZktt2xEf/ L52F4xFgbpwbli8DMJ84yYtURIBONv/Y7wi/ToUlzAvtUpVbSLX7+smu27LiXioam 96nqBsIRv8rNj42W+w== 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 1M4JmT-1vqriK10Gf-00E2Gq; Thu, 12 Feb 2026 18:44: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 v3 1/5] platform/x86: uniwill-laptop: Rename FN lock and super key lock attrs Date: Thu, 12 Feb 2026 18:43:51 +0100 Message-Id: <20260212174355.23965-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212174355.23965-1-W_Armin@gmx.de> References: <20260212174355.23965-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:bzjohncZhFjK0njTFLBHHNpY8mP/J5LScmipgDxbVvZKddtU/B1 8vVEk2Z3bTUJEY5RGqQ1+p9r+a2PbgQ1QLj/KM5NZXazk/6SMJiVugvWEa72AD+kK+++HHe 32fLr68u9mjW6oqyFhB3312F7VAHBEotgJdAu4ZfZxBmWuuEnRvaXeCmJSPoWdWimO0g6fT tcM7ZnLYJ1U421je0NF9w== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:+3l1yNRGlsg=;Q24Oq91Xxcg9HXMBUmUsju8ei/m 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 tjeEqAz053LOxlEFJl+H 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 | 58 ++++++++++--------- drivers/platform/x86/uniwill/uniwill-wmi.h | 6 +- 4 files changed, 39 insertions(+), 37 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..2abae9faceb7 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,11 +377,15 @@ 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. + * Those events might even be reported when the change was done + * using the sysfs attribute! + */ + { 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 }}, + { KE_IGNORE, UNIWILL_OSD_SUPER_KEY_STATE_CHANGED, { KEY_UNKNOWN }}, =20 /* Reported in manual mode when toggling the airplane mode status */ { KE_KEY, UNIWILL_OSD_RFKILL, { KEY_RFKILL }}, @@ -600,8 +604,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 +628,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 +641,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 +676,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 +689,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 +883,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 +899,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 +1507,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 +1567,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 +1645,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..fb1910c0f741 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 @@ -74,7 +74,7 @@ =20 #define UNIWILL_OSD_RFKILL 0xA4 =20 -#define UNIWILL_OSD_SUPER_KEY_LOCK_CHANGED 0xA5 +#define UNIWILL_OSD_SUPER_KEY_STATE_CHANGED 0xA5 =20 #define UNIWILL_OSD_LIGHTBAR_STATE_CHANGED 0xA6 =20 --=20 2.39.5 From nobody Sat Apr 18 00:22:04 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 747583BB40; Thu, 12 Feb 2026 17:44:05 +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=1770918247; cv=none; b=TbX85N2oHX+6R67GLRA7MvUbZyb1fHBOeJzv9UmGqmI0DdbFM7nU5Qlea8pXCI8qZQvL9VJDe7ECHL02+MANKss6/tTqX2jOnpy5JesBsQzKIpP7wPk4VJNLIMvVPr5YVvudThUz2oQqO+WtlbLER5laxHKjvfplGOwaeX3Mz6Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770918247; c=relaxed/simple; bh=SgGEJ6jGJjrH5W4N+tVNl14inJPJDc0oBYU7oFEuoSY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pGe7Em3V9qpc11J/+UAVxUAfk+i32yv+77PbhD7SgATBASOvFbzmo5I5ea0KZeR8rr82skBevrzs5IVQwvEZL4l5Q67UBkrSs4y4Geg8msDxFA1J8LkQ+MTQswALFRmz6b4Y4rdhtRlqLW/j9hrI+qWrjrpmvpwzy2iMIJm7WeI= 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=eOQ22JdP; 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="eOQ22JdP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770918243; x=1771523043; i=w_armin@gmx.de; bh=iCZ4H5tfp9GDmZ6OSXzwWkL5qGUUcYyVBsxa5S1FiI0=; 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=eOQ22JdP+N43h/uL8b/4LExa7kptFvxAeCW5snQObzGb5LpjD/afhjITODzRnNki AKC+rvxeSRg4/Vfg5gKOEGeXCS10U15CWVyAOk3wMvhfVJCmPTNJuDbe9Z6neJWpM 4cqDBdtigbTV8UrQL/NWjAUAYFDUa8nPKzerr8xOCg/gtj9+8bAvxdL8rRGSYaXoU TE2KyVfvoFGdjRBMG8k63/NAcdZR00rOk5TlV0uo6DV7otnfF2PVnwSzV6iTIYlfy 477VkT+jRRFBYJHIibhwkZr20DYgjwGND9Pjz28qv+/aBzwhGgV+8wu84ZWONA8DI yV7KK8VnFh9Wqk4oyQ== 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 1Mlf4c-1vPokj0lvO-00dloz; Thu, 12 Feb 2026 18:44: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 v3 2/5] platform/x86: uniwill-laptop: Fix crash on unexpected battery event Date: Thu, 12 Feb 2026 18:43:52 +0100 Message-Id: <20260212174355.23965-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212174355.23965-1-W_Armin@gmx.de> References: <20260212174355.23965-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:NAhX0Nphx75F13ay370CpqVsHTA1euAojaREyqICigR2PDvhhLM QaMSUEALlCz+tQownteLl7oGYzpDJlN+5JdnFo58F+tXQMWWzeO5QxgLCiMkHrK799kENTs EXzfvDVxVI9WKKykMNTsZwfJ9IRB7B1Ps+xzcUQNR/y3AIuoaS5T6J8BhGHCFuWLLhqn/+3 QD3XN0HxZErGaA/tgACTA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:D7RR4/LUqJw=;1Vh6h4TmYZTUAviDDrO0UhedOvd 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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 2abae9faceb7..03694e51d0ae 100644 --- a/drivers/platform/x86/uniwill/uniwill-acpi.c +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c @@ -1359,6 +1359,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 00:22:04 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 421AB1E5714; Thu, 12 Feb 2026 17:44:06 +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=1770918249; cv=none; b=ZJ9D9k6ZBoWX6iWGJ/qZAUl6OWC98cjAqeEHywpRwG9TV1IKNkxB9Pa3qvuDLnKRvap0gbySCnVrCdfCf5qougBBtnUwK8+e6X7gxM2r4yWCJwW4dR6bPhmNSlAMCMRf4Z3dPQmAPmqT0dMlsH0JZ8l+CC3Y6PEpGPJL37clIkM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770918249; c=relaxed/simple; bh=nc4Czj/QOUaYmoPeWEobBQ1GlfO5PX8mcEO5fLMVPzE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sMrOTN9MBWpK5vbeNV5Vz+R6HjiIh4786U0JwRXkAM6bH5nkxwRel1UbiyoRVyBWpirxRFq8EWENvlEj5Ecun+PAoJ0tsXyD2nFFjTRgNSR0UFl8JdXMDM7CgXnwC7p2z6JHlFcnU3IM1E2CQq8AE1zOhZVXoz79i7xn+QIIQvI= 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=Js0cSAUA; 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="Js0cSAUA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770918245; x=1771523045; i=w_armin@gmx.de; bh=HglzlwWjdI4nJonuODb6c0Lh6RN87yn2wVGh2rDsFU8=; 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=Js0cSAUA/8NJ6k+9SpMrYTPc67QyaYjxS5r7QSf+EQkC8xQ+mP8cX2M3n/jUAPtM 5yVoqKciSqPvhhMN3sPBzH5NzFMHMIDFBegXX6wywkBMVRRtdedzABUyp4RXB09FE LmAkm+y8p3iookezAx7yC6XSduzjd43gC1/U+o2pJwjDU3envCPC4xpOY817qb4z/ hr+4cUNDCESeUaT2RFg/d+wZNs56/7UKZWq8VOzmflQCScIz4uoKPUKwPz7kAD7WY yy/5py2CXHM7Uf3I+barFkVz/cMbtioO136GFKoiYksNb40K7XVIdYo/ooHJBo/8K 9G9RSGI77H7EakOWmg== 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 1N9Mtg-1vlJsv0XpM-00siVE; Thu, 12 Feb 2026 18:44: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 v3 3/5] platform/x86: uniwill-laptop: Mark FN lock status as being volatile Date: Thu, 12 Feb 2026 18:43:53 +0100 Message-Id: <20260212174355.23965-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212174355.23965-1-W_Armin@gmx.de> References: <20260212174355.23965-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:JLJ1+pRdF8TID2Ejb7Nvf0Ti97z5uP12IzSY99GpAApNYt07Yc2 luqLwhA8SfjPAQrfZ3Xh5g+9x2YzEWrSOnuJjWllHlFfyKxEmad4cguJH8FJWhRNWRv9Qn2 STHE4/GeMROMGCYKvuD9s0pu3TtTFjwsM2pSNArHjCdlNbGJbwf5VNBdOglXLY1CdCgdS3F VDD5xa8q95lh4DkxVMWsQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:iulzKokpDJ8=;4AHzTzDEYDjuSPsQge4DZs4Bghi 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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 03694e51d0ae..29daf83c0b26 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; @@ -580,6 +581,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: @@ -1508,7 +1510,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; @@ -1547,7 +1561,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 @@ -1565,7 +1583,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; @@ -1613,7 +1640,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 00:22:04 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 4A23C26E708; Thu, 12 Feb 2026 17:44:08 +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=1770918250; cv=none; b=WDTgCV5Al++WJWCYrMcuf/ADA1HWeGBaIhjscT1oNGvygTQ4aqBudE9RtmirFQ1Nm3bT/8aDWw7MoVr0Oq8K5y1ZlRoeNDe+iM67La4wZk9/N1aESy+ihZecYWd/FRskzwwK4Cp6aHJw+JSMw83p0B9jw61La2jovPOcHVq4Q44= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770918250; c=relaxed/simple; bh=+CLP//bT+AH46tCUnUadqI6N15SCJ1grf7BOsABPDok=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SrxXT/qyMI12el0jW+UVl8GewaiApA/3OCY2UB9JTq9ednet/vptkM7ACelAAqX7PINIK/SvOpMg5knjS5R/7X/AxgMCF0Nteg48MkCjtH3NYNonOGa+6sD0pIcX109YNpxRN/Ea0Js0OgjTINQ9dSlEPt/arOZeC50GF/+VGwQ= 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=ppKipWxn; 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="ppKipWxn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770918247; x=1771523047; i=w_armin@gmx.de; bh=0acc3pYpB5cwEVuVwC8fACmKpCFsOSw/Q6adFRZS4sY=; 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=ppKipWxnFA5VQ5/uICKXnf5KZtBEztupuMjTlHosxjkNDzMTV9T9Nl67iC54hVn7 lEJ7kPSJQiiR0PR8Cx032nZqGuBuBmatxFbAoIhYX5xyssMZ6CzHreFO8pSIC1eJz ZDkRwwd9CRjqJwASjzAszkHyh7/sqGhME2fnxNA81fJcZxY5QJbw93x5DgIh8qL6i FE3b5X3a7pvM0ckhgi+gX3OkC06hKY21VpQhhGFwFyVgnhyuFDFLTWfBLH6u1ejpo APSugapL9b4Z44MnWuCx88D/4ho434ZqUH9sbZXmlYbTLWh/W8pni173EPTLmdLS0 UUnXn7RXRkN3jxgHVg== 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 1M2wGi-1vnIwl0JJc-007STH; Thu, 12 Feb 2026 18:44:07 +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 v3 4/5] platform/x86: uniwill-laptop: Handle FN lock event Date: Thu, 12 Feb 2026 18:43:54 +0100 Message-Id: <20260212174355.23965-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212174355.23965-1-W_Armin@gmx.de> References: <20260212174355.23965-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:YxOnShNSTV9n8+T7FKr5DLDdj7l8om07HtKU8q+eaXpFijzTqhY iiHuH/vzOMqwAInetApp/xC5Uq2DJhWeRbH1xkx8qmMu1qf3wQQABrTroyHdePFZHTUWh2L ne5Yk7eyCnUVaVeVTSZJc8L03WbPtCr7i5dBRDF8BR+XB7CJWdK5yoVUX9JXGKdLufGgT/f JGLTCRIdcs4qH0ze/rMoQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:/wYKPN9IGNQ=;pi92StxPFSmbgF4CqzYh6L3Jv/I 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 /N34KuQ1nNZ0ZHl4TkrIsOAJ7hoGY 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 29daf83c0b26..8f214489e9ed 100644 --- a/drivers/platform/x86/uniwill/uniwill-acpi.c +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c @@ -406,9 +406,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 }}, @@ -1376,6 +1373,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 00:22:04 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 EB648277007; Thu, 12 Feb 2026 17:44:11 +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=1770918253; cv=none; b=WUsLe0U/HTsIWkpdvpMyTLKtoSmavPxlHQLKyE5DEnJAFsl/4XILpuoh8ADQWHRJdBexZCbM2T0h+KeG/9nIgTKGg8yDMGp4qDiYnOiyru3sIefUtbzVbz5I2cnknzlrkAVD+MvNYeZtaVi3ewT2/Z8s3NJsG31rEFIURLSd77c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770918253; c=relaxed/simple; bh=zVKaKQSH81vJWOw3IGI7XlFzy9Bu1HYUfBN5cVJRBrs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=eVPSfe5r/0CbyvhOC52pld30xaq38aw11TzVqcOjVNrKt9gmm8Ac05I7wpEp/+RYYa9pm+f+RbXzGe0M1SCSiKvw1U31UFIfdsUgNP8n5A18U2cKxHrN1MYiOF4r2nf+qUY/z8KWAf9Vt5NS1CDjr38RMgnRgO/O7BH6BmJPM2s= 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=KLF+/U11; 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="KLF+/U11" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770918249; x=1771523049; i=w_armin@gmx.de; bh=Sv6ldGFWGmIy44q/Orc6+U8waHotjQ5RU2OczETEweQ=; 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=KLF+/U11xt4Nksq0kqdnjF6ZdTEDL5AqbQ8vKPzRqlsETCdgW3DyyswvpQmWQwZs dTWyDihTL7Neasosb71HUd94oXTFCmHx4wvAkmcnaQC6Ni27mtDM4/ZiHWw03Vvti 3eQZLchTz0A4plqATZEbznNhWb61WZHDaSHWi7ZZJBgPbMGuWh22OHccfxkFYMER2 MYvt/2usiX71qdUjeGhzfIPtUfkIv14HHIi85M697z+K/wlJDzmAY9f5cUa198ZC4 5gdiuBeLcAQ+pnTI6PkzwZzBtnql3FwZ4bRX1OMY+fV+OvK9wCt8FG20iOfUtDhyE s3H46cW379iK8QdqOg== 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 1M72sJ-1vrPgV3qpD-002FzP; Thu, 12 Feb 2026 18:44:09 +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 v3 5/5] platform/x86: uniwill-laptop: Handle super key changed event Date: Thu, 12 Feb 2026 18:43:55 +0100 Message-Id: <20260212174355.23965-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260212174355.23965-1-W_Armin@gmx.de> References: <20260212174355.23965-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:A6W0g8bVOxxnqsuWRFdPofz/SG6V7VV64aE3DVFkKidjFivohyT HwrI/NLXvWbb0tSGChpRX+iEx4REJhwtMX4xEAZDvXOaa+aQOgn5MAuw4KgZKrrjPVLTSul aBTSf1cp0CA0AvOKHt5pF79NUJ80V0JjtqLey27s+S6qdRjywQiWQ7DH3C3TjnYZlZIvZIu XK9NhSfGWxihSZ93W+grg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:A9ptfDGn/Uo=;8N2fEs295YpQrE8dslKrG9xFT71 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 IUL7BCY0= 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 event to the super_key_enable sysfs attribute as a poll notification. Signed-off-by: Armin Wolf --- drivers/platform/x86/uniwill/uniwill-acpi.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform= /x86/uniwill/uniwill-acpi.c index 8f214489e9ed..c1478878569b 100644 --- a/drivers/platform/x86/uniwill/uniwill-acpi.c +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c @@ -385,8 +385,6 @@ static const struct key_entry uniwill_keymap[] =3D { */ { 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_STATE_CHANGED, { KEY_UNKNOWN }}, =20 /* Reported in manual mode when toggling the airplane mode status */ { KE_KEY, UNIWILL_OSD_RFKILL, { KEY_RFKILL }}, @@ -1357,6 +1355,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_STATE_CHANGED: + /* Optional, might not be reported by all devices */ + 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