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 NOTE: During testing it turned out that the touchpad_toggle sysfs attribute does not work. The reason for this is unknown, as the driver emulates the behaviour of the OEM application just fine. I suspect that this feature only controls some obscure key combination we dont know about, so i decided to send out this series regardless. Changes since v1: - spelling fixes - add missing error handling when reading PWM duty cycle - fix error when setting the super key lock sysfs attribute 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 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 | 1484 +++++++++++++++++ drivers/platform/x86/uniwill/uniwill-wmi.c | 186 +++ drivers/platform/x86/uniwill/uniwill-wmi.h | 122 ++ 13 files changed, 2163 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