From: Armin Wolf <W_Armin@gmx.de>
To: ilpo.jarvinen@linux.intel.com, hdegoede@redhat.com,
chumuzero@gmail.com, corbet@lwn.net, cs@tuxedo.de,
wse@tuxedocomputers.com, ggo@tuxedocomputers.com
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
platform-driver-x86@vger.kernel.org, rdunlap@infradead.org,
alok.a.tiwari@oracle.com, linux-leds@vger.kernel.org,
lee@kernel.org, pobrn@protonmail.com
Subject: [PATCH 0/3] platform/x86: Add support for Uniwill laptop features
Date: Sat, 12 Jul 2025 13:23:07 +0200 [thread overview]
Message-ID: <20250712112310.19964-1-W_Armin@gmx.de> (raw)
This patch series adds support for the various features found on
laptops manufactured by Uniwill. Those features are:
- battery charge limiting
- RGB lightbar control
- hwmon support
- improved hotkey support
- keyboard-related settings
This patch series is based on the following out-of-tree drivers:
- https://github.com/pobrn/qc71_laptop
- https://gitlab.com/tuxedocomputers/development/packages/tuxedo-drivers
Additionally the OEM software of the Intel Nuc x15 was
reverse-engineered to have a better understanding about the underlying
hardware interface.
The first patch introduces the uniwill-wmi driver used for handling
WMI events on Uniwill devices. Due to a grave design error inside the
underlying WMI firmware interface (the WMI GUID was copied from the
Windows driver samples and is thus not unique) the driver cannot be
autoloaded. Instead drivers using this module will load it as an
module dependency.
The second patch introduces the uniwill-laptop driver that does the
majority of the work. This driver talks to the embedded controller
using yet another WMI interface to control the various features
available on those devices. Sadly this WMI firmware interfaces suffers
from the exact same issue (the WMI GUID is not unique) and thus a DMI
whitelist has to be used for loading the driver.
The last patch finally adds some documentation for configuring and
using both drivers.
Special thanks go to:
- github user cyear for bring up this topic on the lm-sensors issue
tracker and being the tester for various prototype versions
- github user dumingqiao for testing the battery, lightbar and
keyboard-related features
- Tuxedo computers for giving advice on how to design the userspace
interface
Please note that the whole series is based onto the pdx86/fixes branch
as it uses the new power_supply_get_property_direct() function.
Changes since the RFC series:
- spelling fixes
- mention the INOU0000 ACPI device inside thew documentation
- use MILLIDEGREE_PER_DEGREE instead of 1000
- use power_supply_get_property_direct() to prevent deadlock
- add support for KEY_KBDILLUMDOWN and KEY_KBDILLUMUP
Since the changes to the driver source code are fairly small i decided
to keep the Tested-by tags from the RFC series.
Armin Wolf (3):
platform/x86: Add Uniwill WMI driver
platform/x86: Add Uniwill laptop driver
Documentation: laptops: Add documentation for uniwill laptops
.../ABI/testing/sysfs-driver-uniwill-laptop | 53 +
Documentation/admin-guide/laptops/index.rst | 1 +
.../admin-guide/laptops/uniwill-laptop.rst | 68 +
Documentation/wmi/devices/uniwill-laptop.rst | 118 ++
Documentation/wmi/devices/uniwill-wmi.rst | 52 +
MAINTAINERS | 17 +
drivers/platform/x86/Kconfig | 2 +
drivers/platform/x86/Makefile | 3 +
drivers/platform/x86/uniwill/Kconfig | 49 +
drivers/platform/x86/uniwill/Makefile | 8 +
drivers/platform/x86/uniwill/uniwill-laptop.c | 1481 +++++++++++++++++
drivers/platform/x86/uniwill/uniwill-wmi.c | 186 +++
drivers/platform/x86/uniwill/uniwill-wmi.h | 122 ++
13 files changed, 2160 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-driver-uniwill-laptop
create mode 100644 Documentation/admin-guide/laptops/uniwill-laptop.rst
create mode 100644 Documentation/wmi/devices/uniwill-laptop.rst
create mode 100644 Documentation/wmi/devices/uniwill-wmi.rst
create mode 100644 drivers/platform/x86/uniwill/Kconfig
create mode 100644 drivers/platform/x86/uniwill/Makefile
create mode 100644 drivers/platform/x86/uniwill/uniwill-laptop.c
create mode 100644 drivers/platform/x86/uniwill/uniwill-wmi.c
create mode 100644 drivers/platform/x86/uniwill/uniwill-wmi.h
--
2.39.5
next reply other threads:[~2025-07-12 11:23 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-12 11:23 Armin Wolf [this message]
2025-07-12 11:23 ` [PATCH 1/3] platform/x86: Add Uniwill WMI driver Armin Wolf
2025-07-12 11:46 ` [External] : " ALOK TIWARI
2025-07-16 16:37 ` Armin Wolf
2025-07-12 11:23 ` [PATCH 2/3] platform/x86: Add Uniwill laptop driver Armin Wolf
2025-07-12 12:31 ` [External] : " ALOK TIWARI
2025-07-16 16:47 ` Armin Wolf
2025-07-13 2:56 ` kernel test robot
2025-07-12 11:23 ` [PATCH 3/3] Documentation: laptops: Add documentation for uniwill laptops Armin Wolf
2025-07-12 12:54 ` [External] : " ALOK TIWARI
2025-07-16 16:51 ` Armin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250712112310.19964-1-W_Armin@gmx.de \
--to=w_armin@gmx.de \
--cc=alok.a.tiwari@oracle.com \
--cc=chumuzero@gmail.com \
--cc=corbet@lwn.net \
--cc=cs@tuxedo.de \
--cc=ggo@tuxedocomputers.com \
--cc=hdegoede@redhat.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=lee@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=pobrn@protonmail.com \
--cc=rdunlap@infradead.org \
--cc=wse@tuxedocomputers.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox