Skip to content

Commit 489c721

Browse files
committed
asus-wmi: fixup screenpad brightness
Signed-off-by: Luke Jones <[email protected]>
1 parent beddffa commit 489c721

File tree

1 file changed

+21
-31
lines changed

1 file changed

+21
-31
lines changed

drivers/platform/x86/asus-wmi.c

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ module_param(fnlock_default, bool, 0444);
123123
#define NVIDIA_TEMP_MIN 75
124124
#define NVIDIA_TEMP_MAX 87
125125

126-
#define ASUS_SCREENPAD_BRIGHT_MIN 20
127126
#define ASUS_SCREENPAD_BRIGHT_MAX 255
128127
#define ASUS_SCREENPAD_BRIGHT_DEFAULT 60
129128

@@ -4239,43 +4238,37 @@ static int read_screenpad_brightness(struct backlight_device *bd)
42394238
return err;
42404239
/* The device brightness can only be read if powered, so return stored */
42414240
if (err == BACKLIGHT_POWER_OFF)
4242-
return asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN;
4241+
return bd->props.brightness;
42434242

42444243
err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_SCREENPAD_LIGHT, &retval);
42454244
if (err < 0)
42464245
return err;
42474246

4248-
return (retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK) - ASUS_SCREENPAD_BRIGHT_MIN;
4247+
return (retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK);
42494248
}
42504249

42514250
static int update_screenpad_bl_status(struct backlight_device *bd)
42524251
{
4253-
struct asus_wmi *asus = bl_get_data(bd);
4254-
int power, err = 0;
4252+
int err = 0;
42554253
u32 ctrl_param;
42564254

4257-
power = read_screenpad_backlight_power(asus);
4258-
if (power < 0)
4259-
return power;
4260-
4261-
if (bd->props.power != power) {
4262-
if (power != BACKLIGHT_POWER_ON) {
4263-
/* Only brightness > 0 can power it back on */
4264-
ctrl_param = asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN;
4265-
err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_LIGHT,
4266-
ctrl_param, NULL);
4267-
} else {
4268-
err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER, 0, NULL);
4269-
}
4270-
} else if (power == BACKLIGHT_POWER_ON) {
4271-
/* Only set brightness if powered on or we get invalid/unsync state */
4272-
ctrl_param = bd->props.brightness + ASUS_SCREENPAD_BRIGHT_MIN;
4255+
ctrl_param = bd->props.brightness;
4256+
if (ctrl_param >= 0 && bd->props.power) {
4257+
err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER, 1,
4258+
NULL);
4259+
if (err < 0)
4260+
return err;
4261+
ctrl_param = bd->props.brightness;
42734262
err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_LIGHT, ctrl_param, NULL);
4263+
if (err < 0)
4264+
return err;
42744265
}
42754266

4276-
/* Ensure brightness is stored to turn back on with */
4277-
if (err == 0)
4278-
asus->driver->screenpad_brightness = bd->props.brightness + ASUS_SCREENPAD_BRIGHT_MIN;
4267+
if (!bd->props.power) {
4268+
err = asus_wmi_set_devstate(ASUS_WMI_DEVID_SCREENPAD_POWER, 0, NULL);
4269+
if (err < 0)
4270+
return err;
4271+
}
42794272

42804273
return err;
42814274
}
@@ -4293,22 +4286,19 @@ static int asus_screenpad_init(struct asus_wmi *asus)
42934286
int err, power;
42944287
int brightness = 0;
42954288

4296-
power = read_screenpad_backlight_power(asus);
4289+
power = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_SCREENPAD_POWER);
42974290
if (power < 0)
42984291
return power;
42994292

4300-
if (power != BACKLIGHT_POWER_OFF) {
4293+
if (power) {
43014294
err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_SCREENPAD_LIGHT, &brightness);
43024295
if (err < 0)
43034296
return err;
43044297
}
4305-
/* default to an acceptable min brightness on boot if too low */
4306-
if (brightness < ASUS_SCREENPAD_BRIGHT_MIN)
4307-
brightness = ASUS_SCREENPAD_BRIGHT_DEFAULT;
43084298

43094299
memset(&props, 0, sizeof(struct backlight_properties));
43104300
props.type = BACKLIGHT_RAW; /* ensure this bd is last to be picked */
4311-
props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX - ASUS_SCREENPAD_BRIGHT_MIN;
4301+
props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX;
43124302
bd = backlight_device_register("asus_screenpad",
43134303
&asus->platform_device->dev, asus,
43144304
&asus_screenpad_bl_ops, &props);
@@ -4319,7 +4309,7 @@ static int asus_screenpad_init(struct asus_wmi *asus)
43194309

43204310
asus->screenpad_backlight_device = bd;
43214311
asus->driver->screenpad_brightness = brightness;
4322-
bd->props.brightness = brightness - ASUS_SCREENPAD_BRIGHT_MIN;
4312+
bd->props.brightness = brightness;
43234313
bd->props.power = power;
43244314
backlight_update_status(bd);
43254315

0 commit comments

Comments
 (0)