diff options
Diffstat (limited to '0001-hid-asus-reset-the-backlight-brightness-level-on-resume.patch')
-rw-r--r-- | 0001-hid-asus-reset-the-backlight-brightness-level-on-resume.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/0001-hid-asus-reset-the-backlight-brightness-level-on-resume.patch b/0001-hid-asus-reset-the-backlight-brightness-level-on-resume.patch new file mode 100644 index 000000000000..59698ca0f7cc --- /dev/null +++ b/0001-hid-asus-reset-the-backlight-brightness-level-on-resume.patch @@ -0,0 +1,59 @@ +From ca054bb924b349c586d783e4473c4cab404c40a1 Mon Sep 17 00:00:00 2001 +From: Denis Benato <benato.denis96@gmail.com> +Date: Fri, 17 Nov 2023 14:15:56 +1300 +Subject: [PATCH] HID: hid-asus: reset the backlight brightness level on resume + +Some devices managed by this driver automatically set brightness to 0 +before entering a suspended state and reset it back to a default +brightness level after the resume: +this has the effect of having the kernel report wrong brightness +status after a sleep, and on some devices (like the Asus RC71L) that +brightness is the intensity of LEDs directly facing the user. + +Fix the above issue by setting back brightness to the level it had +before entering a sleep state. + +Signed-off-by: Denis Benato <benato.denis96@gmail.com> +Signed-off-by: Luke D. Jones <luke@ljones.dev> +Signed-off-by: Jiri Kosina <jkosina@suse.cz> +--- + drivers/hid/hid-asus.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c +index b70673a929a1ed..78cdfb8b9a7aeb 100644 +--- a/drivers/hid/hid-asus.c ++++ b/drivers/hid/hid-asus.c +@@ -1000,6 +1000,24 @@ static int asus_start_multitouch(struct hid_device *hdev) + return 0; + } + ++static int __maybe_unused asus_resume(struct hid_device *hdev) { ++ struct asus_drvdata *drvdata = hid_get_drvdata(hdev); ++ int ret = 0; ++ ++ if (drvdata->kbd_backlight) { ++ const u8 buf[] = { FEATURE_KBD_REPORT_ID, 0xba, 0xc5, 0xc4, ++ drvdata->kbd_backlight->cdev.brightness }; ++ ret = asus_kbd_set_report(hdev, buf, sizeof(buf)); ++ if (ret < 0) { ++ hid_err(hdev, "Asus failed to set keyboard backlight: %d\n", ret); ++ goto asus_resume_err; ++ } ++ } ++ ++asus_resume_err: ++ return ret; ++} ++ + static int __maybe_unused asus_reset_resume(struct hid_device *hdev) + { + struct asus_drvdata *drvdata = hid_get_drvdata(hdev); +@@ -1294,6 +1312,7 @@ static struct hid_driver asus_driver = { + .input_configured = asus_input_configured, + #ifdef CONFIG_PM + .reset_resume = asus_reset_resume, ++ .resume = asus_resume, + #endif + .event = asus_event, + .raw_event = asus_raw_event |