platform/x86: asus-wmi: add support for ASUS screenpad
authorLuke D. Jones <luke@ljones.dev>
Wed, 30 Aug 2023 03:22:37 +0000 (15:22 +1200)
committerHans de Goede <hdegoede@redhat.com>
Tue, 12 Sep 2023 08:18:07 +0000 (10:18 +0200)
commit2c97d3e55b70edf33b6e7f211bab8a748a0a2bcc
tree8fb7893bfbaa9608cbf854fae9752490548842cb
parenteab541aac7f49d2f6e21e486af0bd3048cebb3dd
platform/x86: asus-wmi: add support for ASUS screenpad

Add support for the WMI methods used to turn off and adjust the
brightness of the secondary "screenpad" device found on some high-end
ASUS laptops like the GX650P series and others.

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
6. When the device is off it is "unplugged"

asus_wmi sets the minimum brightness as 20 in general use, and 60 for
booting with values <= min.

The ACPI methods are used in a new backlight device named asus_screenpad.

Signed-off-by: Luke D. Jones <luke@ljones.dev>
Link: https://lore.kernel.org/r/20230830032237.42987-2-luke@ljones.dev
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/asus-wmi.c
drivers/platform/x86/asus-wmi.h
include/linux/platform_data/x86/asus-wmi.h