Skip to content

Commit bfd3e53

Browse files
NeroReflexgregkh
authored andcommitted
platform/x86: asus-wmi: fix screenpad brightness range
[ Upstream commit 8d95d1f ] Fix screenpad brightness range being too limited without reason: testing this patch on a Zenbook Duo showed the hardware minimum not being too low, therefore allow the user to configure the entire range, and expose to userspace the hardware brightness range and value. Fixes: 2c97d3e ("platform/x86: asus-wmi: add support for ASUS screenpad") Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev> Link: https://patch.msgid.link/20260302174431.349816-3-denis.benato@linux.dev Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 38a9aa1 commit bfd3e53

1 file changed

Lines changed: 6 additions & 10 deletions

File tree

drivers/platform/x86/asus-wmi.c

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ module_param(fnlock_default, bool, 0444);
127127
#define NVIDIA_TEMP_MIN 75
128128
#define NVIDIA_TEMP_MAX 87
129129

130-
#define ASUS_SCREENPAD_BRIGHT_MIN 20
131130
#define ASUS_SCREENPAD_BRIGHT_MAX 255
132131
#define ASUS_SCREENPAD_BRIGHT_DEFAULT 60
133132

@@ -4143,13 +4142,13 @@ static int read_screenpad_brightness(struct backlight_device *bd)
41434142
return err;
41444143
/* The device brightness can only be read if powered, so return stored */
41454144
if (err == BACKLIGHT_POWER_OFF)
4146-
return asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN;
4145+
return bd->props.brightness;
41474146

41484147
err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_SCREENPAD_LIGHT, &retval);
41494148
if (err < 0)
41504149
return err;
41514150

4152-
return (retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK) - ASUS_SCREENPAD_BRIGHT_MIN;
4151+
return retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK;
41534152
}
41544153

41554154
static int update_screenpad_bl_status(struct backlight_device *bd)
@@ -4189,22 +4188,19 @@ static int asus_screenpad_init(struct asus_wmi *asus)
41894188
int err, power;
41904189
int brightness = 0;
41914190

4192-
power = read_screenpad_backlight_power(asus);
4191+
power = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_SCREENPAD_POWER);
41934192
if (power < 0)
41944193
return power;
41954194

4196-
if (power != BACKLIGHT_POWER_OFF) {
4195+
if (power) {
41974196
err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_SCREENPAD_LIGHT, &brightness);
41984197
if (err < 0)
41994198
return err;
42004199
}
4201-
/* default to an acceptable min brightness on boot if too low */
4202-
if (brightness < ASUS_SCREENPAD_BRIGHT_MIN)
4203-
brightness = ASUS_SCREENPAD_BRIGHT_DEFAULT;
42044200

42054201
memset(&props, 0, sizeof(struct backlight_properties));
42064202
props.type = BACKLIGHT_RAW; /* ensure this bd is last to be picked */
4207-
props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX - ASUS_SCREENPAD_BRIGHT_MIN;
4203+
props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX;
42084204
bd = backlight_device_register("asus_screenpad",
42094205
&asus->platform_device->dev, asus,
42104206
&asus_screenpad_bl_ops, &props);
@@ -4215,7 +4211,7 @@ static int asus_screenpad_init(struct asus_wmi *asus)
42154211

42164212
asus->screenpad_backlight_device = bd;
42174213
asus->driver->screenpad_brightness = brightness;
4218-
bd->props.brightness = brightness - ASUS_SCREENPAD_BRIGHT_MIN;
4214+
bd->props.brightness = brightness;
42194215
bd->props.power = power;
42204216
backlight_update_status(bd);
42214217

0 commit comments

Comments
 (0)