[PATCH v5 0/1] platform/x86: asus-wmi: add support for ASUS screenpad

From: Luke D. Jones
Date: Sun Aug 27 2023 - 19:24:59 EST


Adds support for the screenpad(-plus) found on a few ASUS laptops that have a main 16:9 or 16:10
screen and a shorter screen below the main but above the keyboard.
The support consists of:
- On off control
- Setting brightness from 0-255

There are some small quirks with this device when considering only the raw WMI methods:
1. The Off method can only switch the device off
2. Changing the brightness turns the device back on
3. To turn the device back on the brightness must be > 1
4. When the device is off the brightness can't be changed (so it is stored by the driver if device
is off).
5. Booting with a value of 0 brightness (retained by bios) means the bios will set a value
of > 0, < 15 which is far too dim and was unexpected by testers. The compromise was to set the
brightness to 60 which is a usable brightness if the module init brightness was under 15.
6. When the device is off it is "unplugged"

All of the above points are addressed within the patch to create a good user experience and keep
within user expectations.

Changelog:
- V5
- Add minimum brightness to prevent screen from becoming invisible
- Previous: https://lore.kernel.org/all/20230630041743.911303-1-luke@xxxxxxxxxx/
- V4
- Fix a null dereference that happened if the display was powered off and dev struct uninitialised yet
- Previous: https://lore.kernel.org/all/20230620030033.55033-1-luke@xxxxxxxxxx/
- V3
- Refactor error handling in all functions
- V2
- Complete refactor to use as a backlight device

Luke D. Jones (1):
platform/x86: asus-wmi: add support for ASUS screenpad

drivers/platform/x86/asus-wmi.c | 131 +++++++++++++++++++++
drivers/platform/x86/asus-wmi.h | 1 +
include/linux/platform_data/x86/asus-wmi.h | 4 +
3 files changed, 136 insertions(+)

--
2.41.0