[RFC PATCH 0/3] platform/x86: Add support for Uniwill laptop features

Armin Wolf posted 3 patches 3 months, 3 weeks ago
There is a newer version of this series
.../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  |  109 ++
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 | 1477 +++++++++++++++++
drivers/platform/x86/uniwill/uniwill-wmi.c    |  178 ++
drivers/platform/x86/uniwill/uniwill-wmi.h    |  122 ++
13 files changed, 2139 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
[RFC PATCH 0/3] platform/x86: Add support for Uniwill laptop features
Posted by Armin Wolf 3 months, 3 weeks ago
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://github.com/tuxedocomputers/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
yet another WMI interface to control the various features. 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

I send this series as an RFC to gather feedback and to request any
involved developers if they want to have their Co-developed-by tags
on the final patch 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  |  109 ++
 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 | 1477 +++++++++++++++++
 drivers/platform/x86/uniwill/uniwill-wmi.c    |  178 ++
 drivers/platform/x86/uniwill/uniwill-wmi.h    |  122 ++
 13 files changed, 2139 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
Re: [RFC PATCH 0/3] platform/x86: Add support for Uniwill laptop features
Posted by Werner Sembach 3 months, 3 weeks ago
Hi Armin,

Am 15.06.25 um 19:59 schrieb Armin Wolf:
> 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://github.com/tuxedocomputers/tuxedo-drivers
Better use 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
> yet another WMI interface to control the various features. 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
>
> I send this series as an RFC to gather feedback and to request any
> involved developers if they want to have their Co-developed-by tags
> on the final patch series.

Afaik most of the initial uniwill module in tuxedo-drivers was written by 
Christoffer, he is currently on holiday, but I will ask him when he is back. I 
also did later added to it later.

Since this driver is a complete rewrite I'm not sure if a Co-developed by for 
Christoffer and me is appropriate, but we would ofc be happy about it. Maybe for 
finding out the EC register meanings that you probably at least partially copied 
over from tuxedo-drivers?

Or do you see another label more fitting?

Best regards,

Werner

>
> 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  |  109 ++
>   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 | 1477 +++++++++++++++++
>   drivers/platform/x86/uniwill/uniwill-wmi.c    |  178 ++
>   drivers/platform/x86/uniwill/uniwill-wmi.h    |  122 ++
>   13 files changed, 2139 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
>
Re: [RFC PATCH 0/3] platform/x86: Add support for Uniwill laptop features
Posted by Armin Wolf 3 months, 3 weeks ago
Am 16.06.25 um 14:59 schrieb Werner Sembach:

> Hi Armin,
>
> Am 15.06.25 um 19:59 schrieb Armin Wolf:
>> 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://github.com/tuxedocomputers/tuxedo-drivers
> Better use 
> 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
>> yet another WMI interface to control the various features. 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
>>
>> I send this series as an RFC to gather feedback and to request any
>> involved developers if they want to have their Co-developed-by tags
>> on the final patch series.
>
> Afaik most of the initial uniwill module in tuxedo-drivers was written 
> by Christoffer, he is currently on holiday, but I will ask him when he 
> is back. I also did later added to it later.
>
> Since this driver is a complete rewrite I'm not sure if a Co-developed 
> by for Christoffer and me is appropriate, but we would ofc be happy 
> about it. Maybe for finding out the EC register meanings that you 
> probably at least partially copied over from tuxedo-drivers?
>
I did, but i mostly relied on the reverse-engineered OEM application for that.

> Or do you see another label more fitting?
>
I could also include your names inside the individual driver source code in a special thank-you section.

Thanks,
Armin Wolf

> Best regards,
>
> Werner
>
>>
>> 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  |  109 ++
>>   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 | 1477 +++++++++++++++++
>>   drivers/platform/x86/uniwill/uniwill-wmi.c    |  178 ++
>>   drivers/platform/x86/uniwill/uniwill-wmi.h    |  122 ++
>>   13 files changed, 2139 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
>>