diff options
author | Taijian | 2024-04-11 10:59:18 +0200 |
---|---|---|
committer | Taijian | 2024-04-11 10:59:18 +0200 |
commit | 8ba6b0ce92cff913a9409fb1a5d27e3317c50486 (patch) | |
tree | 8da6aac3308436293ee1f26f4b75461a0ea08cbf | |
parent | 0ad0abb87aa2235000d634857788f7b0a8a56265 (diff) | |
download | aur-8ba6b0ce92cff913a9409fb1a5d27e3317c50486.tar.gz |
update to 6.8.5
-rw-r--r-- | .SRCINFO | 24 | ||||
-rw-r--r-- | 0001-HID-asus-fix-more-n-key-report-descriptors-if-n-key-.patch | 89 | ||||
-rw-r--r-- | 0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch | 150 | ||||
-rw-r--r-- | 0002-HID-asus-make-asus_kbd_init-generic-remove-rog_nkey_.patch | 130 | ||||
-rw-r--r-- | 0002-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-M.patch | 100 | ||||
-rw-r--r-- | 0003-HID-asus-add-ROG-Ally-N-Key-ID-and-keycodes.patch | 50 | ||||
-rw-r--r-- | 0003-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch | 74 | ||||
-rw-r--r-- | 0004-HID-asus-add-ROG-Z13-lightbar.patch | 43 | ||||
-rw-r--r-- | 0004-platform-x86-asus-wmi-support-toggling-POST-sound.patch | 139 | ||||
-rw-r--r-- | 0005-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch | 342 | ||||
-rw-r--r-- | PKGBUILD | 22 | ||||
-rw-r--r-- | config | 5 |
12 files changed, 345 insertions, 823 deletions
@@ -1,6 +1,6 @@ pkgbase = linux-g14 pkgdesc = Linux-g14 - pkgver = 6.8.4.arch1 + pkgver = 6.8.5.arch1 pkgrel = 1 url = https://gitlab.com/dragonn/linux-g14.git arch = x86_64 @@ -17,10 +17,10 @@ pkgbase = linux-g14 makedepends = xz options = !strip options = !debug - source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.4.tar.xz - source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.4.tar.sign - source = https://github.com/archlinux/linux/releases/download/v6.8.4-arch1/linux-v6.8.4-arch1.patch.zst - source = https://github.com/archlinux/linux/releases/download/v6.8.4-arch1/linux-v6.8.4-arch1.patch.zst.sig + source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.5.tar.xz + source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.5.tar.sign + source = https://github.com/archlinux/linux/releases/download/v6.8.5-arch1/linux-v6.8.5-arch1.patch.zst + source = https://github.com/archlinux/linux/releases/download/v6.8.5-arch1/linux-v6.8.5-arch1.patch.zst.sig source = config source = choose-gcc-optimization.sh source = sys-kernel_arch-sources-g14-6.8+--more-uarches-for-kernel.patch::https://raw.githubusercontent.com/graysky2/kernel_compiler_patch/master/more-uarches-for-kernel-6.8-rc4%2B.patch @@ -45,16 +45,20 @@ pkgbase = linux-g14 source = 0007-v2-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch source = 0008-v2-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch source = 0009-v2-platform-x86-asus-wmi-add-clean-up-structs.patch + source = 0001-HID-asus-fix-more-n-key-report-descriptors-if-n-key-.patch + source = 0002-HID-asus-make-asus_kbd_init-generic-remove-rog_nkey_.patch + source = 0003-HID-asus-add-ROG-Ally-N-Key-ID-and-keycodes.patch + source = 0004-HID-asus-add-ROG-Z13-lightbar.patch source = sys-kernel_arch-sources-g14_files-0047-asus-nb-wmi-Add-tablet_mode_sw-lid-flip.patch source = sys-kernel_arch-sources-g14_files-0048-asus-nb-wmi-fix-tablet_mode_sw_int.patch validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E validpgpkeys = 83BC8889351B5DEBBB68416EB8AC08600F108CDF - sha256sums = d5dec495fc00605fa9e04114df547fbc92b33d9ea7a4a2b7073c589590e79e63 + sha256sums = 138923e5d73748b4bdbe9b5a0b8f36dfac9fcc16753a9222928dc6c963effa89 sha256sums = SKIP - sha256sums = bb2b3aa16007a0d5d61571af86a44be414f8672dad5a719cbdc92bfb758b1217 + sha256sums = 4ad162664e08e57ed8abf44827ecc2fce2eeb38b34988483a9183065a229534e sha256sums = SKIP - sha256sums = c5347f53ecce97054ecef72ff1e6d265485c8536e2137e89998a6ec04b683845 + sha256sums = 2fc20cbd7c4f7f3eeeba73b8e354cecb8757050d2c774992959f93ccde16d667 sha256sums = 278118011d7a2eeca9971ac97b31bf0c55ab55e99c662ab9ae4717b55819c9a2 sha256sums = d69232afd0dd6982ae941cf2d1f577f4be2011e3bb847d1db37952acf416b5d3 sha256sums = 0a7ea482fe20c403788d290826cec42fe395e5a6eab07b88845f8b9a9829998d @@ -78,6 +82,10 @@ pkgbase = linux-g14 sha256sums = 66c25f11f3fc2cc0db9a3392400f072f1c3ac9408328128f075a9260f4eb01ef sha256sums = d31ba415c2b65e3485d74f0268f1020dc49f31a6fe3316cf6c74a0690e96c81f sha256sums = 47ad6e0781f1df1f6a6d35b8f20c2bf9dbd7e8e0b92a332cb88145755afba77c + sha256sums = 3be072ed798becd91bae66a75d09235c9cb5e84547b1f4eb7768e954ba109e92 + sha256sums = c1d96328d96964c2ce3ef7609fb7c07e97eb136dfab9f6d4efcce072a5739838 + sha256sums = 2414dc71174c90b92f975a7d16cabc99ba509397d843132764ea9ee91b643dc0 + sha256sums = 107a08aa610d3ba3c7ecec301df2ea8f345bc74107fcf4dac96fe9e89a23dcf1 sha256sums = 15e912a66e4bbce1cf0450f1dc6610653df29df8dd6d5426f9c1b039490436c8 sha256sums = 444f2d86de8c2177655b01596f939f99c2e7abfa8efad8a509e0a334f42dfa85 diff --git a/0001-HID-asus-fix-more-n-key-report-descriptors-if-n-key-.patch b/0001-HID-asus-fix-more-n-key-report-descriptors-if-n-key-.patch new file mode 100644 index 000000000000..74081073ad56 --- /dev/null +++ b/0001-HID-asus-fix-more-n-key-report-descriptors-if-n-key-.patch @@ -0,0 +1,89 @@ +From 7c2c8cca4989bc7803aef60a4aeb3efe1d211a4b Mon Sep 17 00:00:00 2001 +From: "Luke D. Jones" <luke@ljones.dev> +Date: Sat, 2 Dec 2023 17:27:23 +1300 +Subject: [PATCH 1/4] HID: asus: fix more n-key report descriptors if n-key + quirked + +Adjusts the report descriptor for N-Key devices to +make the output count 0x01 which completely avoids +the need for a block of filtering. + +Signed-off-by: Luke D. Jones <luke@ljones.dev> +--- + drivers/hid/hid-asus.c | 49 ++++++++++++++++++++---------------------- + 1 file changed, 23 insertions(+), 26 deletions(-) + +diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c +index 78cdfb8b9a7a..855972a4470f 100644 +--- a/drivers/hid/hid-asus.c ++++ b/drivers/hid/hid-asus.c +@@ -335,36 +335,20 @@ static int asus_raw_event(struct hid_device *hdev, + if (drvdata->quirks & QUIRK_MEDION_E1239T) + return asus_e1239t_event(drvdata, data, size); + +- if (drvdata->quirks & QUIRK_USE_KBD_BACKLIGHT) { ++ /* ++ * Skip these report ID, the device emits a continuous stream associated ++ * with the AURA mode it is in which looks like an 'echo'. ++ */ ++ if (report->id == FEATURE_KBD_LED_REPORT_ID1 || report->id == FEATURE_KBD_LED_REPORT_ID2) ++ return -1; ++ if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) { + /* +- * Skip these report ID, the device emits a continuous stream associated +- * with the AURA mode it is in which looks like an 'echo'. ++ * G713 and G733 send these codes on some keypresses, depending on ++ * the key pressed it can trigger a shutdown event if not caught. + */ +- if (report->id == FEATURE_KBD_LED_REPORT_ID1 || +- report->id == FEATURE_KBD_LED_REPORT_ID2) { ++ if(data[0] == 0x02 && data[1] == 0x30) { + return -1; +- /* Additional report filtering */ +- } else if (report->id == FEATURE_KBD_REPORT_ID) { +- /* +- * G14 and G15 send these codes on some keypresses with no +- * discernable reason for doing so. We'll filter them out to avoid +- * unmapped warning messages later. +- */ +- if (data[1] == 0xea || data[1] == 0xec || data[1] == 0x02 || +- data[1] == 0x8a || data[1] == 0x9e) { +- return -1; +- } + } +- if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) { +- /* +- * G713 and G733 send these codes on some keypresses, depending on +- * the key pressed it can trigger a shutdown event if not caught. +- */ +- if(data[0] == 0x02 && data[1] == 0x30) { +- return -1; +- } +- } +- + } + + if (drvdata->quirks & QUIRK_ROG_CLAYMORE_II_KEYBOARD) { +@@ -1250,6 +1234,19 @@ static __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc, + rdesc[205] = 0x01; + } + ++ /* match many more n-key devices */ ++ if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) { ++ for (int i = 0; i < *rsize + 1; i++) { ++ /* offset to the count from 0x5a report part always 14 */ ++ if (rdesc[i] == 0x85 && rdesc[i + 1] == 0x5a && ++ rdesc[i + 14] == 0x95 && rdesc[i + 15] == 0x05) { ++ hid_info(hdev, "Fixing up Asus N-Key report descriptor\n"); ++ rdesc[i + 15] = 0x01; ++ break; ++ } ++ } ++ } ++ + return rdesc; + } + +-- +2.44.0 + diff --git a/0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch b/0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch deleted file mode 100644 index 9590e07d4a38..000000000000 --- a/0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch +++ /dev/null @@ -1,150 +0,0 @@ -From 55426abb60d99efed912d8309498c0c365e8dcec Mon Sep 17 00:00:00 2001 -From: "Luke D. Jones" <luke@ljones.dev> -Date: Sun, 10 Mar 2024 15:14:37 +1300 -Subject: [PATCH 1/5] platform/x86: asus-wmi: add support for 2024 ROG Mini-LED - -Support the 2024 mini-led backlight and adjust the related functions -to select the relevant dev-id. Also add `available_mini_led_mode` to the -platform sysfs since the available mini-led levels can be different. - -Signed-off-by: Luke D. Jones <luke@ljones.dev> ---- - .../ABI/testing/sysfs-platform-asus-wmi | 8 ++++ - drivers/platform/x86/asus-wmi.c | 48 ++++++++++++++++--- - include/linux/platform_data/x86/asus-wmi.h | 1 + - 3 files changed, 51 insertions(+), 6 deletions(-) - -diff --git a/Documentation/ABI/testing/sysfs-platform-asus-wmi b/Documentation/ABI/testing/sysfs-platform-asus-wmi -index 8a7e25bde085..e32b4f0ae15f 100644 ---- a/Documentation/ABI/testing/sysfs-platform-asus-wmi -+++ b/Documentation/ABI/testing/sysfs-platform-asus-wmi -@@ -126,6 +126,14 @@ Description: - Change the mini-LED mode: - * 0 - Single-zone, - * 1 - Multi-zone -+ * 2 - Multi-zone strong (available on newer generation mini-led) -+ -+What: /sys/devices/platform/<platform>/avilable_mini_led_mode -+Date: Jun 2023 -+KernelVersion: 6.9 -+Contact: "Luke Jones" <luke@ljones.dev> -+Description: -+ List the available mini-led modes. - - What: /sys/devices/platform/<platform>/ppt_pl1_spl - Date: Jun 2023 -diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index 18be35fdb381..a56152ccfbe7 100644 ---- a/drivers/platform/x86/asus-wmi.c -+++ b/drivers/platform/x86/asus-wmi.c -@@ -297,6 +297,7 @@ struct asus_wmi { - - bool panel_overdrive_available; - bool mini_led_mode_available; -+ u32 mini_led_dev_id; - - struct hotplug_slot hotplug_slot; - struct mutex hotplug_lock; -@@ -2109,10 +2110,17 @@ static ssize_t mini_led_mode_show(struct device *dev, - struct asus_wmi *asus = dev_get_drvdata(dev); - int result; - -- result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_MINI_LED_MODE); -- if (result < 0) -- return result; -+ result = asus_wmi_get_devstate_simple(asus, asus->mini_led_dev_id); - -+ // Remap the mode values to match previous generation mini-led including -+ // if errored -19 since some of these bios return a bad result if set to "2" -+ // which is mini-led off -+ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) { -+ if (result >= 0 || result == -19) -+ result = result == 1 ? 2 : result == 0 ? 1 : 0; -+ } else if (result < 0) { -+ return result; -+ } - return sysfs_emit(buf, "%d\n", result); - } - -@@ -2129,10 +2137,15 @@ static ssize_t mini_led_mode_store(struct device *dev, - if (result) - return result; - -- if (mode > 1) -+ if (mode > 1 && asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE) - return -EINVAL; -+ if (mode > 2 && asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) -+ return -EINVAL; -+ // Remap the mode values to match previous generation mini-led -+ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) -+ mode = mode == 2 ? 1 : mode == 0 ? 2 : 0; - -- err = asus_wmi_set_devstate(ASUS_WMI_DEVID_MINI_LED_MODE, mode, &result); -+ err = asus_wmi_set_devstate(asus->mini_led_dev_id, mode, &result); - - if (err) { - pr_warn("Failed to set mini-LED: %d\n", err); -@@ -2150,6 +2163,21 @@ static ssize_t mini_led_mode_store(struct device *dev, - } - static DEVICE_ATTR_RW(mini_led_mode); - -+static ssize_t available_mini_led_mode_show(struct device *dev, -+ struct device_attribute *attr, char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE) -+ return sysfs_emit(buf, "0 1\n"); -+ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) -+ return sysfs_emit(buf, "0 1 2\n"); -+ -+ return sysfs_emit(buf, "0\n"); -+} -+ -+static DEVICE_ATTR_RO(available_mini_led_mode); -+ - /* Quirks *********************************************************************/ - - static void asus_wmi_set_xusb2pr(struct asus_wmi *asus) -@@ -4174,6 +4202,7 @@ static struct attribute *platform_attributes[] = { - &dev_attr_nv_temp_target.attr, - &dev_attr_panel_od.attr, - &dev_attr_mini_led_mode.attr, -+ &dev_attr_available_mini_led_mode.attr, - NULL - }; - -@@ -4496,10 +4525,17 @@ static int asus_wmi_add(struct platform_device *pdev) - asus->nv_dyn_boost_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_DYN_BOOST); - asus->nv_temp_tgt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_THERM_TARGET); - asus->panel_overdrive_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PANEL_OD); -- asus->mini_led_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE); - asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE) - && dmi_match(DMI_BOARD_NAME, "RC71L"); - -+ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE)) { -+ asus->mini_led_mode_available = true; -+ asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE; -+ } else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE2)) { -+ asus->mini_led_mode_available = true; -+ asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE2; -+ } -+ - err = fan_boost_mode_check_present(asus); - if (err) - goto fail_fan_boost_mode; -diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h -index ab1c7deff118..9cadce10ad9a 100644 ---- a/include/linux/platform_data/x86/asus-wmi.h -+++ b/include/linux/platform_data/x86/asus-wmi.h -@@ -71,6 +71,7 @@ - #define ASUS_WMI_DEVID_LID_FLIP 0x00060062 - #define ASUS_WMI_DEVID_LID_FLIP_ROG 0x00060077 - #define ASUS_WMI_DEVID_MINI_LED_MODE 0x0005001E -+#define ASUS_WMI_DEVID_MINI_LED_MODE2 0x0005002E - - /* Storage */ - #define ASUS_WMI_DEVID_CARDREADER 0x00080013 --- -2.44.0 - diff --git a/0002-HID-asus-make-asus_kbd_init-generic-remove-rog_nkey_.patch b/0002-HID-asus-make-asus_kbd_init-generic-remove-rog_nkey_.patch new file mode 100644 index 000000000000..680beffa5b82 --- /dev/null +++ b/0002-HID-asus-make-asus_kbd_init-generic-remove-rog_nkey_.patch @@ -0,0 +1,130 @@ +From de9b01c3b8869451d4cf44ab0baf55440e804fc6 Mon Sep 17 00:00:00 2001 +From: "Luke D. Jones" <luke@ljones.dev> +Date: Sat, 2 Dec 2023 17:47:59 +1300 +Subject: [PATCH 2/4] HID: asus: make asus_kbd_init() generic, remove + rog_nkey_led_init() + +Some of the n-key stuff is old and outdated, so +make asus_kbd_init() generic to use with other +report ID and remove rog_nkey_led_init(). + +Signed-off-by: Luke D. Jones <luke@ljones.dev> +--- + drivers/hid/hid-asus.c | 70 +++++++++++------------------------------- + 1 file changed, 18 insertions(+), 52 deletions(-) + +diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c +index 855972a4470f..cdd998a761fe 100644 +--- a/drivers/hid/hid-asus.c ++++ b/drivers/hid/hid-asus.c +@@ -386,9 +386,9 @@ static int asus_kbd_set_report(struct hid_device *hdev, const u8 *buf, size_t bu + return ret; + } + +-static int asus_kbd_init(struct hid_device *hdev) ++static int asus_kbd_init(struct hid_device *hdev, u8 report_id) + { +- const u8 buf[] = { FEATURE_KBD_REPORT_ID, 0x41, 0x53, 0x55, 0x53, 0x20, 0x54, ++ const u8 buf[] = { report_id, 0x41, 0x53, 0x55, 0x53, 0x20, 0x54, + 0x65, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x63, 0x2e, 0x00 }; + int ret; + +@@ -400,9 +400,10 @@ static int asus_kbd_init(struct hid_device *hdev) + } + + static int asus_kbd_get_functions(struct hid_device *hdev, +- unsigned char *kbd_func) ++ unsigned char *kbd_func, ++ u8 report_id) + { +- const u8 buf[] = { FEATURE_KBD_REPORT_ID, 0x05, 0x20, 0x31, 0x00, 0x08 }; ++ const u8 buf[] = { report_id, 0x05, 0x20, 0x31, 0x00, 0x08 }; + u8 *readbuf; + int ret; + +@@ -431,51 +432,6 @@ static int asus_kbd_get_functions(struct hid_device *hdev, + return ret; + } + +-static int rog_nkey_led_init(struct hid_device *hdev) +-{ +- const u8 buf_init_start[] = { FEATURE_KBD_LED_REPORT_ID1, 0xB9 }; +- u8 buf_init2[] = { FEATURE_KBD_LED_REPORT_ID1, 0x41, 0x53, 0x55, 0x53, 0x20, +- 0x54, 0x65, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x63, 0x2e, 0x00 }; +- u8 buf_init3[] = { FEATURE_KBD_LED_REPORT_ID1, +- 0x05, 0x20, 0x31, 0x00, 0x08 }; +- int ret; +- +- hid_info(hdev, "Asus initialise N-KEY Device"); +- /* The first message is an init start */ +- ret = asus_kbd_set_report(hdev, buf_init_start, sizeof(buf_init_start)); +- if (ret < 0) { +- hid_warn(hdev, "Asus failed to send init start command: %d\n", ret); +- return ret; +- } +- /* Followed by a string */ +- ret = asus_kbd_set_report(hdev, buf_init2, sizeof(buf_init2)); +- if (ret < 0) { +- hid_warn(hdev, "Asus failed to send init command 1.0: %d\n", ret); +- return ret; +- } +- /* Followed by a string */ +- ret = asus_kbd_set_report(hdev, buf_init3, sizeof(buf_init3)); +- if (ret < 0) { +- hid_warn(hdev, "Asus failed to send init command 1.1: %d\n", ret); +- return ret; +- } +- +- /* begin second report ID with same data */ +- buf_init2[0] = FEATURE_KBD_LED_REPORT_ID2; +- buf_init3[0] = FEATURE_KBD_LED_REPORT_ID2; +- +- ret = asus_kbd_set_report(hdev, buf_init2, sizeof(buf_init2)); +- if (ret < 0) { +- hid_warn(hdev, "Asus failed to send init command 2.0: %d\n", ret); +- return ret; +- } +- ret = asus_kbd_set_report(hdev, buf_init3, sizeof(buf_init3)); +- if (ret < 0) +- hid_warn(hdev, "Asus failed to send init command 2.1: %d\n", ret); +- +- return ret; +-} +- + static void asus_schedule_work(struct asus_kbd_leds *led) + { + unsigned long flags; +@@ -558,17 +514,27 @@ static int asus_kbd_register_leds(struct hid_device *hdev) + int ret; + + if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) { +- ret = rog_nkey_led_init(hdev); ++ /* Initialize keyboard */ ++ ret = asus_kbd_init(hdev, FEATURE_KBD_REPORT_ID); ++ if (ret < 0) ++ return ret; ++ ++ /* The LED endpoint is initialised in two HID */ ++ ret = asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID1); ++ if (ret < 0) ++ return ret; ++ ++ ret = asus_kbd_init(hdev, FEATURE_KBD_LED_REPORT_ID2); + if (ret < 0) + return ret; + } else { + /* Initialize keyboard */ +- ret = asus_kbd_init(hdev); ++ ret = asus_kbd_init(hdev, FEATURE_KBD_REPORT_ID); + if (ret < 0) + return ret; + + /* Get keyboard functions */ +- ret = asus_kbd_get_functions(hdev, &kbd_func); ++ ret = asus_kbd_get_functions(hdev, &kbd_func, FEATURE_KBD_REPORT_ID); + if (ret < 0) + return ret; + +-- +2.44.0 + diff --git a/0002-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-M.patch b/0002-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-M.patch deleted file mode 100644 index dbd8ee997626..000000000000 --- a/0002-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-M.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 06d5a9b83548d99b70764166d723489cc8336b1d Mon Sep 17 00:00:00 2001 -From: "Luke D. Jones" <luke@ljones.dev> -Date: Sun, 10 Mar 2024 17:10:05 +1300 -Subject: [PATCH 2/5] platform/x86: asus-wmi: add support for Vivobook GPU MUX - -Adjust existing MUX support to select whichever MUX support is available -so that ASUS Vivobook MUX can also be used if detected. - -Signed-off-by: Luke D. Jones <luke@ljones.dev> ---- - drivers/platform/x86/asus-wmi.c | 18 +++++++++++++----- - include/linux/platform_data/x86/asus-wmi.h | 1 + - 2 files changed, 14 insertions(+), 5 deletions(-) - -diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index a56152ccfbe7..b9a2fb8007c0 100644 ---- a/drivers/platform/x86/asus-wmi.c -+++ b/drivers/platform/x86/asus-wmi.c -@@ -268,6 +268,7 @@ struct asus_wmi { - bool egpu_connect_available; - bool dgpu_disable_available; - bool gpu_mux_mode_available; -+ u32 gpu_mux_dev; - - /* Tunables provided by ASUS for gaming laptops */ - bool ppt_pl2_sppt_available; -@@ -682,7 +683,7 @@ static ssize_t dgpu_disable_store(struct device *dev, - return -EINVAL; - - if (asus->gpu_mux_mode_available) { -- result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_GPU_MUX); -+ result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); - if (result < 0) - /* An error here may signal greater failure of GPU handling */ - return result; -@@ -748,7 +749,7 @@ static ssize_t egpu_enable_store(struct device *dev, - } - - if (asus->gpu_mux_mode_available) { -- result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_GPU_MUX); -+ result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); - if (result < 0) { - /* An error here may signal greater failure of GPU handling */ - pr_warn("Failed to get gpu mux status: %d\n", result); -@@ -801,7 +802,7 @@ static ssize_t gpu_mux_mode_show(struct device *dev, - struct asus_wmi *asus = dev_get_drvdata(dev); - int result; - -- result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_GPU_MUX); -+ result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); - if (result < 0) - return result; - -@@ -847,7 +848,7 @@ static ssize_t gpu_mux_mode_store(struct device *dev, - } - } - -- err = asus_wmi_set_devstate(ASUS_WMI_DEVID_GPU_MUX, optimus, &result); -+ err = asus_wmi_set_devstate(asus->gpu_mux_dev, optimus, &result); - if (err) { - dev_err(dev, "Failed to set GPU MUX mode: %d\n", err); - return err; -@@ -4514,7 +4515,6 @@ static int asus_wmi_add(struct platform_device *pdev) - asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU); - asus->egpu_connect_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU_CONNECTED); - asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU); -- asus->gpu_mux_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX); - asus->kbd_rgb_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE); - asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE); - asus->ppt_pl2_sppt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_PL2_SPPT); -@@ -4536,6 +4536,14 @@ static int asus_wmi_add(struct platform_device *pdev) - asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE2; - } - -+ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX)) { -+ asus->gpu_mux_mode_available = true; -+ asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX; -+ } else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX_VIVO)) { -+ asus->gpu_mux_mode_available = true; -+ asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX_VIVO; -+ } -+ - err = fan_boost_mode_check_present(asus); - if (err) - goto fail_fan_boost_mode; -diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h -index 9cadce10ad9a..b48b024dd844 100644 ---- a/include/linux/platform_data/x86/asus-wmi.h -+++ b/include/linux/platform_data/x86/asus-wmi.h -@@ -128,6 +128,7 @@ - - /* gpu mux switch, 0 = dGPU, 1 = Optimus */ - #define ASUS_WMI_DEVID_GPU_MUX 0x00090016 -+#define ASUS_WMI_DEVID_GPU_MUX_VIVO 0x00090026 - - /* TUF laptop RGB modes/colours */ - #define ASUS_WMI_DEVID_TUF_RGB_MODE 0x00100056 --- -2.44.0 - diff --git a/0003-HID-asus-add-ROG-Ally-N-Key-ID-and-keycodes.patch b/0003-HID-asus-add-ROG-Ally-N-Key-ID-and-keycodes.patch new file mode 100644 index 000000000000..7824f70fcb11 --- /dev/null +++ b/0003-HID-asus-add-ROG-Ally-N-Key-ID-and-keycodes.patch @@ -0,0 +1,50 @@ +From fe9fe2bbb769c5ffe0d096d9732029f900c65872 Mon Sep 17 00:00:00 2001 +From: "Luke D. Jones" <luke@ljones.dev> +Date: Wed, 29 Nov 2023 22:18:11 +1300 +Subject: [PATCH 3/4] HID: asus: add ROG Ally N-Key ID and keycodes + +--- + drivers/hid/hid-asus.c | 7 +++++++ + drivers/hid/hid-ids.h | 1 + + 2 files changed, 8 insertions(+) + +diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c +index cdd998a761fe..3a1a6024d299 100644 +--- a/drivers/hid/hid-asus.c ++++ b/drivers/hid/hid-asus.c +@@ -847,6 +847,10 @@ static int asus_input_mapping(struct hid_device *hdev, + case 0xb3: asus_map_key_clear(KEY_PROG3); break; /* Fn+Left next aura */ + case 0x6a: asus_map_key_clear(KEY_F13); break; /* Screenpad toggle */ + case 0x4b: asus_map_key_clear(KEY_F14); break; /* Arrows/Pg-Up/Dn toggle */ ++ case 0xa5: asus_map_key_clear(KEY_F15); break; /* ROG Ally left back */ ++ case 0xa6: asus_map_key_clear(KEY_F16); break; /* ROG Ally QAM button */ ++ case 0xa7: asus_map_key_clear(KEY_F17); break; /* ROG Ally ROG long-press */ ++ case 0xa8: asus_map_key_clear(KEY_F18); break; /* ROG Ally ROG long-press-release */ + + + default: +@@ -1239,6 +1243,9 @@ static const struct hid_device_id asus_devices[] = { + { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, + USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD3), + QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, ++ USB_DEVICE_ID_ASUSTEK_ROG_NKEY_ALLY), ++ QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, + { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, + USB_DEVICE_ID_ASUSTEK_ROG_CLAYMORE_II_KEYBOARD), + QUIRK_ROG_CLAYMORE_II_KEYBOARD }, +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h +index 8376fb5e2d0b..f1e508a7ef06 100644 +--- a/drivers/hid/hid-ids.h ++++ b/drivers/hid/hid-ids.h +@@ -208,6 +208,7 @@ + #define USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD 0x1866 + #define USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD2 0x19b6 + #define USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD3 0x1a30 ++#define USB_DEVICE_ID_ASUSTEK_ROG_NKEY_ALLY 0x1abe + #define USB_DEVICE_ID_ASUSTEK_ROG_CLAYMORE_II_KEYBOARD 0x196b + #define USB_DEVICE_ID_ASUSTEK_FX503VD_KEYBOARD 0x1869 + +-- +2.44.0 + diff --git a/0003-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch b/0003-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch deleted file mode 100644 index 1fd2ce721522..000000000000 --- a/0003-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 9b038d6db81b457738cf65e43f401ccb8bf505e6 Mon Sep 17 00:00:00 2001 -From: "Luke D. Jones" <luke@ljones.dev> -Date: Sun, 10 Mar 2024 17:20:02 +1300 -Subject: [PATCH 3/5] platform/x86: asus-wmi: add support variant of TUF RGB - -Adds support for a second TUF RGB wmi call that some versions of the TUF -laptop come with. Also adjusts existing support to select whichever is -available. - -Signed-off-by: Luke D. Jones <luke@ljones.dev> ---- - drivers/platform/x86/asus-wmi.c | 12 +++++++++++- - include/linux/platform_data/x86/asus-wmi.h | 1 + - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index b9a2fb8007c0..e1100726de53 100644 ---- a/drivers/platform/x86/asus-wmi.c -+++ b/drivers/platform/x86/asus-wmi.c -@@ -280,6 +280,7 @@ struct asus_wmi { - bool nv_temp_tgt_available; - - bool kbd_rgb_mode_available; -+ u32 kbd_rgb_dev; - bool kbd_rgb_state_available; - - bool throttle_thermal_policy_available; -@@ -870,6 +871,7 @@ static ssize_t kbd_rgb_mode_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) - { -+ struct asus_wmi *asus = dev_get_drvdata(dev); - u32 cmd, mode, r, g, b, speed; - int err; - -@@ -906,7 +908,7 @@ static ssize_t kbd_rgb_mode_store(struct device *dev, - speed = 0xeb; - } - -- err = asus_wmi_evaluate_method3(ASUS_WMI_METHODID_DEVS, ASUS_WMI_DEVID_TUF_RGB_MODE, -+ err = asus_wmi_evaluate_method3(ASUS_WMI_METHODID_DEVS, asus->kbd_rgb_dev, - cmd | (mode << 8) | (r << 16) | (g << 24), b | (speed << 8), NULL); - if (err) - return err; -@@ -4544,6 +4546,14 @@ static int asus_wmi_add(struct platform_device *pdev) - asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX_VIVO; - } - -+ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE)) { -+ asus->kbd_rgb_mode_available = true; -+ asus->kbd_rgb_dev = ASUS_WMI_DEVID_TUF_RGB_MODE; -+ } else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE2)) { -+ asus->kbd_rgb_mode_available = true; -+ asus->kbd_rgb_dev = ASUS_WMI_DEVID_TUF_RGB_MODE2; -+ } -+ - err = fan_boost_mode_check_present(asus); - if (err) - goto fail_fan_boost_mode; -diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h -index b48b024dd844..3e9a01467c67 100644 ---- a/include/linux/platform_data/x86/asus-wmi.h -+++ b/include/linux/platform_data/x86/asus-wmi.h -@@ -132,6 +132,7 @@ - - /* TUF laptop RGB modes/colours */ - #define ASUS_WMI_DEVID_TUF_RGB_MODE 0x00100056 -+#define ASUS_WMI_DEVID_TUF_RGB_MODE2 0x0010005A - - /* TUF laptop RGB power/state */ - #define ASUS_WMI_DEVID_TUF_RGB_STATE 0x00100057 --- -2.44.0 - diff --git a/0004-HID-asus-add-ROG-Z13-lightbar.patch b/0004-HID-asus-add-ROG-Z13-lightbar.patch new file mode 100644 index 000000000000..eff7127026bb --- /dev/null +++ b/0004-HID-asus-add-ROG-Z13-lightbar.patch @@ -0,0 +1,43 @@ +From d9a40306ea83c8799634b6ee8b497d3801967831 Mon Sep 17 00:00:00 2001 +From: "Luke D. Jones" <luke@ljones.dev> +Date: Tue, 2 Apr 2024 15:13:23 +1300 +Subject: [PATCH 4/4] HID: asus: add ROG Z13 lightbar + +Add init of the lightbar which is a small panel on the back of the ASUS +ROG Z13 and uses the same MCU as keyboards. + +Signed-off-by: Luke D. Jones <luke@ljones.dev> +--- + drivers/hid/hid-asus.c | 3 +++ + drivers/hid/hid-ids.h | 1 + + 2 files changed, 4 insertions(+) + +diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c +index 3a1a6024d299..de0c13babc03 100644 +--- a/drivers/hid/hid-asus.c ++++ b/drivers/hid/hid-asus.c +@@ -1243,6 +1243,9 @@ static const struct hid_device_id asus_devices[] = { + { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, + USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD3), + QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, ++ USB_DEVICE_ID_ASUSTEK_ROG_Z13_LIGHTBAR), ++ QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, + { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, + USB_DEVICE_ID_ASUSTEK_ROG_NKEY_ALLY), + QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h +index f1e508a7ef06..94501dbdd463 100644 +--- a/drivers/hid/hid-ids.h ++++ b/drivers/hid/hid-ids.h +@@ -208,6 +208,7 @@ + #define USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD 0x1866 + #define USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD2 0x19b6 + #define USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD3 0x1a30 ++#define USB_DEVICE_ID_ASUSTEK_ROG_Z13_LIGHTBAR 0x18c6 + #define USB_DEVICE_ID_ASUSTEK_ROG_NKEY_ALLY 0x1abe + #define USB_DEVICE_ID_ASUSTEK_ROG_CLAYMORE_II_KEYBOARD 0x196b + #define USB_DEVICE_ID_ASUSTEK_FX503VD_KEYBOARD 0x1869 +-- +2.44.0 + diff --git a/0004-platform-x86-asus-wmi-support-toggling-POST-sound.patch b/0004-platform-x86-asus-wmi-support-toggling-POST-sound.patch deleted file mode 100644 index 2b0f7cf7d06e..000000000000 --- a/0004-platform-x86-asus-wmi-support-toggling-POST-sound.patch +++ /dev/null @@ -1,139 +0,0 @@ -From 1c0f375634b3ddbcf479c4ddb81639e397795802 Mon Sep 17 00:00:00 2001 -From: "Luke D. Jones" <luke@ljones.dev> -Date: Sun, 10 Mar 2024 19:03:11 +1300 -Subject: [PATCH 4/5] platform/x86: asus-wmi: support toggling POST sound - -Add support for toggling the BIOS POST sound on some ASUS laptops. - -Signed-off-by: Luke D. Jones <luke@ljones.dev> ---- - .../ABI/testing/sysfs-platform-asus-wmi | 7 +++ - drivers/platform/x86/asus-wmi.c | 54 +++++++++++++++++++ - include/linux/platform_data/x86/asus-wmi.h | 3 ++ - 3 files changed, 64 insertions(+) - -diff --git a/Documentation/ABI/testing/sysfs-platform-asus-wmi b/Documentation/ABI/testing/sysfs-platform-asus-wmi -index e32b4f0ae15f..f3c53b7453f0 100644 ---- a/Documentation/ABI/testing/sysfs-platform-asus-wmi -+++ b/Documentation/ABI/testing/sysfs-platform-asus-wmi -@@ -194,3 +194,10 @@ Contact: "Luke Jones" <luke@ljones.dev> - Description: - Set the target temperature limit of the Nvidia dGPU: - * min=75, max=87 -+ -+What: /sys/devices/platform/<platform>/boot_sound -+Date: Jun 2023 -+KernelVersion: 6.9 -+Contact: "Luke Jones" <luke@ljones.dev> -+Description: -+ Set if the BIOS POST sound is played on boot. -diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index e1100726de53..e4341abb71e0 100644 ---- a/drivers/platform/x86/asus-wmi.c -+++ b/drivers/platform/x86/asus-wmi.c -@@ -297,6 +297,7 @@ struct asus_wmi { - // The RSOC controls the maximum charging percentage. - bool battery_rsoc_available; - -+ bool boot_sound_available; - bool panel_overdrive_available; - bool mini_led_mode_available; - u32 mini_led_dev_id; -@@ -2106,6 +2107,55 @@ static ssize_t panel_od_store(struct device *dev, - } - static DEVICE_ATTR_RW(panel_od); - -+/* Bootup sound ***************************************************************/ -+ -+static ssize_t boot_sound_show(struct device *dev, -+ struct device_attribute *attr, char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ int result; -+ -+ result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_BOOT_SOUND); -+ if (result < 0) -+ return result; -+ -+ return sysfs_emit(buf, "%d\n", result); -+} -+ -+static ssize_t boot_sound_store(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ int result, err; -+ u32 snd; -+ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ result = kstrtou32(buf, 10, &snd); -+ if (result) -+ return result; -+ -+ if (snd > 1) -+ return -EINVAL; -+ -+ err = asus_wmi_set_devstate(ASUS_WMI_DEVID_BOOT_SOUND, snd, &result); -+ -+ if (err) { -+ pr_warn("Failed to set boot sound: %d\n", err); -+ return err; -+ } -+ -+ if (result > 1) { -+ pr_warn("Failed to set panel boot sound (result): 0x%x\n", result); -+ return -EIO; -+ } -+ -+ sysfs_notify(&asus->platform_device->dev.kobj, NULL, "boot_sound"); -+ -+ return count; -+} -+static DEVICE_ATTR_RW(boot_sound); -+ - /* Mini-LED mode **************************************************************/ - static ssize_t mini_led_mode_show(struct device *dev, - struct device_attribute *attr, char *buf) -@@ -4203,6 +4253,7 @@ static struct attribute *platform_attributes[] = { - &dev_attr_ppt_platform_sppt.attr, - &dev_attr_nv_dynamic_boost.attr, - &dev_attr_nv_temp_target.attr, -+ &dev_attr_boot_sound.attr, - &dev_attr_panel_od.attr, - &dev_attr_mini_led_mode.attr, - &dev_attr_available_mini_led_mode.attr, -@@ -4255,6 +4306,8 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, - ok = asus->nv_dyn_boost_available; - else if (attr == &dev_attr_nv_temp_target.attr) - ok = asus->nv_temp_tgt_available; -+ else if (attr == &dev_attr_boot_sound.attr) -+ ok = asus->boot_sound_available; - else if (attr == &dev_attr_panel_od.attr) - ok = asus->panel_overdrive_available; - else if (attr == &dev_attr_mini_led_mode.attr) -@@ -4526,6 +4579,7 @@ static int asus_wmi_add(struct platform_device *pdev) - asus->ppt_plat_sppt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_PLAT_SPPT); - asus->nv_dyn_boost_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_DYN_BOOST); - asus->nv_temp_tgt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_THERM_TARGET); -+ asus->boot_sound_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_BOOT_SOUND); - asus->panel_overdrive_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PANEL_OD); - asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE) - && dmi_match(DMI_BOARD_NAME, "RC71L"); -diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h -index 3e9a01467c67..3eb5cd6773ad 100644 ---- a/include/linux/platform_data/x86/asus-wmi.h -+++ b/include/linux/platform_data/x86/asus-wmi.h -@@ -137,6 +137,9 @@ - /* TUF laptop RGB power/state */ - #define ASUS_WMI_DEVID_TUF_RGB_STATE 0x00100057 - -+/* Bootup sound control */ -+#define ASUS_WMI_DEVID_BOOT_SOUND 0x00130022 -+ - /* DSTS masks */ - #define ASUS_WMI_DSTS_STATUS_BIT 0x00000001 - #define ASUS_WMI_DSTS_UNKNOWN_BIT 0x00000002 --- -2.44.0 - diff --git a/0005-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch b/0005-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch deleted file mode 100644 index 54402f004083..000000000000 --- a/0005-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch +++ /dev/null @@ -1,342 +0,0 @@ -From 6045f385154a2c0a4aaa692d13bb0fa14bbe1d12 Mon Sep 17 00:00:00 2001 -From: "Luke D. Jones" <luke@ljones.dev> -Date: Mon, 11 Mar 2024 12:15:46 +1300 -Subject: [PATCH 5/5] platform/x86: asus-wmi: store a min default for ppt - options - -Laptops with any of the ppt or nv tunables default to the minimum setting -on boot so we can safely assume a stored value is correct. - -This patch adds storing of those values in the local struct, and enables -reading of those values back. - -Secondary to the above it renames some internal variables to be more -consistent (which makes code grepping show all related parts) - -Signed-off-by: Luke D. Jones <luke@ljones.dev> ---- - drivers/platform/x86/asus-wmi.c | 141 +++++++++++++++++++++++++------- - 1 file changed, 111 insertions(+), 30 deletions(-) - -diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index e4341abb71e0..482e23b55e1e 100644 ---- a/drivers/platform/x86/asus-wmi.c -+++ b/drivers/platform/x86/asus-wmi.c -@@ -272,12 +272,19 @@ struct asus_wmi { - - /* Tunables provided by ASUS for gaming laptops */ - bool ppt_pl2_sppt_available; -+ u32 ppt_pl2_sppt; - bool ppt_pl1_spl_available; -+ u32 ppt_pl1_spl; - bool ppt_apu_sppt_available; -- bool ppt_plat_sppt_available; -+ u32 ppt_apu_sppt; -+ bool ppt_platform_sppt_available; -+ u32 ppt_platform_sppt; - bool ppt_fppt_available; -- bool nv_dyn_boost_available; -- bool nv_temp_tgt_available; -+ u32 ppt_fppt; -+ bool nv_dynamic_boost_available; -+ u32 nv_dynamic_boost; -+ bool nv_temp_target_available; -+ u32 nv_temp_target; - - bool kbd_rgb_mode_available; - u32 kbd_rgb_dev; -@@ -999,11 +1006,10 @@ static ssize_t ppt_pl2_sppt_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) - { -+ struct asus_wmi *asus = dev_get_drvdata(dev); - int result, err; - u32 value; - -- struct asus_wmi *asus = dev_get_drvdata(dev); -- - result = kstrtou32(buf, 10, &value); - if (result) - return result; -@@ -1022,22 +1028,31 @@ static ssize_t ppt_pl2_sppt_store(struct device *dev, - return -EIO; - } - -+ asus->ppt_pl2_sppt = value; - sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_pl2_sppt"); - - return count; - } --static DEVICE_ATTR_WO(ppt_pl2_sppt); -+ -+static ssize_t ppt_pl2_sppt_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ return sysfs_emit(buf, "%d\n", asus->ppt_pl2_sppt); -+} -+static DEVICE_ATTR_RW(ppt_pl2_sppt); - - /* Tunable: PPT, Intel=PL1, AMD=SPL ******************************************/ - static ssize_t ppt_pl1_spl_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) - { -+ struct asus_wmi *asus = dev_get_drvdata(dev); - int result, err; - u32 value; - -- struct asus_wmi *asus = dev_get_drvdata(dev); -- - result = kstrtou32(buf, 10, &value); - if (result) - return result; -@@ -1056,22 +1071,30 @@ static ssize_t ppt_pl1_spl_store(struct device *dev, - return -EIO; - } - -+ asus->ppt_pl1_spl = value; - sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_pl1_spl"); - - return count; - } --static DEVICE_ATTR_WO(ppt_pl1_spl); -+static ssize_t ppt_pl1_spl_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ return sysfs_emit(buf, "%d\n", asus->ppt_pl1_spl); -+} -+static DEVICE_ATTR_RW(ppt_pl1_spl); - - /* Tunable: PPT APU FPPT ******************************************************/ - static ssize_t ppt_fppt_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) - { -+ struct asus_wmi *asus = dev_get_drvdata(dev); - int result, err; - u32 value; - -- struct asus_wmi *asus = dev_get_drvdata(dev); -- - result = kstrtou32(buf, 10, &value); - if (result) - return result; -@@ -1090,22 +1113,31 @@ static ssize_t ppt_fppt_store(struct device *dev, - return -EIO; - } - -+ asus->ppt_fppt = value; - sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_fpu_sppt"); - - return count; - } --static DEVICE_ATTR_WO(ppt_fppt); -+ -+static ssize_t ppt_fppt_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ return sysfs_emit(buf, "%d\n", asus->ppt_fppt); -+} -+static DEVICE_ATTR_RW(ppt_fppt); - - /* Tunable: PPT APU SPPT *****************************************************/ - static ssize_t ppt_apu_sppt_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) - { -+ struct asus_wmi *asus = dev_get_drvdata(dev); - int result, err; - u32 value; - -- struct asus_wmi *asus = dev_get_drvdata(dev); -- - result = kstrtou32(buf, 10, &value); - if (result) - return result; -@@ -1124,22 +1156,31 @@ static ssize_t ppt_apu_sppt_store(struct device *dev, - return -EIO; - } - -+ asus->ppt_apu_sppt = value; - sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_apu_sppt"); - - return count; - } --static DEVICE_ATTR_WO(ppt_apu_sppt); -+ -+static ssize_t ppt_apu_sppt_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ return sysfs_emit(buf, "%d\n", asus->ppt_apu_sppt); -+} -+static DEVICE_ATTR_RW(ppt_apu_sppt); - - /* Tunable: PPT platform SPPT ************************************************/ - static ssize_t ppt_platform_sppt_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) - { -+ struct asus_wmi *asus = dev_get_drvdata(dev); - int result, err; - u32 value; - -- struct asus_wmi *asus = dev_get_drvdata(dev); -- - result = kstrtou32(buf, 10, &value); - if (result) - return result; -@@ -1158,22 +1199,31 @@ static ssize_t ppt_platform_sppt_store(struct device *dev, - return -EIO; - } - -+ asus->ppt_platform_sppt = value; - sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_platform_sppt"); - - return count; - } --static DEVICE_ATTR_WO(ppt_platform_sppt); -+ -+static ssize_t ppt_platform_sppt_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ return sysfs_emit(buf, "%d\n", asus->ppt_platform_sppt); -+} -+static DEVICE_ATTR_RW(ppt_platform_sppt); - - /* Tunable: NVIDIA dynamic boost *********************************************/ - static ssize_t nv_dynamic_boost_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) - { -+ struct asus_wmi *asus = dev_get_drvdata(dev); - int result, err; - u32 value; - -- struct asus_wmi *asus = dev_get_drvdata(dev); -- - result = kstrtou32(buf, 10, &value); - if (result) - return result; -@@ -1192,22 +1242,31 @@ static ssize_t nv_dynamic_boost_store(struct device *dev, - return -EIO; - } - -+ asus->nv_dynamic_boost = value; - sysfs_notify(&asus->platform_device->dev.kobj, NULL, "nv_dynamic_boost"); - - return count; - } --static DEVICE_ATTR_WO(nv_dynamic_boost); -+ -+static ssize_t nv_dynamic_boost_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ return sysfs_emit(buf, "%d\n", asus->nv_dynamic_boost); -+} -+static DEVICE_ATTR_RW(nv_dynamic_boost); - - /* Tunable: NVIDIA temperature target ****************************************/ - static ssize_t nv_temp_target_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) - { -+ struct asus_wmi *asus = dev_get_drvdata(dev); - int result, err; - u32 value; - -- struct asus_wmi *asus = dev_get_drvdata(dev); -- - result = kstrtou32(buf, 10, &value); - if (result) - return result; -@@ -1226,11 +1285,21 @@ static ssize_t nv_temp_target_store(struct device *dev, - return -EIO; - } - -+ asus->nv_temp_target = value; - sysfs_notify(&asus->platform_device->dev.kobj, NULL, "nv_temp_target"); - - return count; - } --static DEVICE_ATTR_WO(nv_temp_target); -+ -+static ssize_t nv_temp_target_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ return sysfs_emit(buf, "%d\n", asus->nv_temp_target); -+} -+static DEVICE_ATTR_RW(nv_temp_target); - - /* Battery ********************************************************************/ - -@@ -4301,11 +4370,11 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, - else if (attr == &dev_attr_ppt_apu_sppt.attr) - ok = asus->ppt_apu_sppt_available; - else if (attr == &dev_attr_ppt_platform_sppt.attr) -- ok = asus->ppt_plat_sppt_available; -+ ok = asus->ppt_platform_sppt_available; - else if (attr == &dev_attr_nv_dynamic_boost.attr) -- ok = asus->nv_dyn_boost_available; -+ ok = asus->nv_dynamic_boost_available; - else if (attr == &dev_attr_nv_temp_target.attr) -- ok = asus->nv_temp_tgt_available; -+ ok = asus->nv_temp_target_available; - else if (attr == &dev_attr_boot_sound.attr) - ok = asus->boot_sound_available; - else if (attr == &dev_attr_panel_od.attr) -@@ -4566,6 +4635,15 @@ static int asus_wmi_add(struct platform_device *pdev) - if (err) - goto fail_platform; - -+ /* ensure defaults for tunables */ -+ asus->ppt_pl2_sppt = 5; -+ asus->ppt_pl1_spl = 5; -+ asus->ppt_apu_sppt = 5; -+ asus->ppt_platform_sppt = 5; -+ asus->ppt_fppt = 5; -+ asus->nv_dynamic_boost = 5; -+ asus->nv_temp_target = 75; -+ - asus->charge_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_CHARGE_MODE); - asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU); - asus->egpu_connect_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU_CONNECTED); -@@ -4576,9 +4654,12 @@ static int asus_wmi_add(struct platform_device *pdev) - asus->ppt_pl1_spl_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_PL1_SPL); - asus->ppt_fppt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_FPPT); - asus->ppt_apu_sppt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_APU_SPPT); -- asus->ppt_plat_sppt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_PLAT_SPPT); -- asus->nv_dyn_boost_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_DYN_BOOST); -- asus->nv_temp_tgt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_THERM_TARGET); -+ asus->ppt_platform_sppt_available = asus_wmi_dev_is_present(asus, -+ ASUS_WMI_DEVID_PPT_PLAT_SPPT); -+ asus->nv_dynamic_boost_available = asus_wmi_dev_is_present(asus, -+ ASUS_WMI_DEVID_NV_DYN_BOOST); -+ asus->nv_temp_target_available = asus_wmi_dev_is_present(asus, -+ ASUS_WMI_DEVID_NV_THERM_TARGET); - asus->boot_sound_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_BOOT_SOUND); - asus->panel_overdrive_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PANEL_OD); - asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE) --- -2.44.0 - @@ -3,7 +3,7 @@ # Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> pkgbase=linux-g14 -pkgver=6.8.4.arch1 +pkgver=6.8.5.arch1 pkgrel=1 pkgdesc='Linux-g14' url="https://gitlab.com/dragonn/linux-g14.git" @@ -56,21 +56,21 @@ source=( amd-tablet-sfh.patch # fix_amd_eDP_HDR_flickering.patch -# 0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch 0001-v2-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch -# 0002-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-M.patch 0002-v2-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch -# 0003-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch 0003-v2-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch -# 0004-platform-x86-asus-wmi-support-toggling-POST-sound.patch 0004-v2-platform-x86-asus-wmi-support-toggling-POST-sound.patch -# 0005-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch 0005-v2-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch 0006-v2-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch 0007-v2-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch 0008-v2-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch 0009-v2-platform-x86-asus-wmi-add-clean-up-structs.patch + 0001-HID-asus-fix-more-n-key-report-descriptors-if-n-key-.patch + 0002-HID-asus-make-asus_kbd_init-generic-remove-rog_nkey_.patch + 0003-HID-asus-add-ROG-Ally-N-Key-ID-and-keycodes.patch + 0004-HID-asus-add-ROG-Z13-lightbar.patch + "sys-kernel_arch-sources-g14_files-0047-asus-nb-wmi-Add-tablet_mode_sw-lid-flip.patch" "sys-kernel_arch-sources-g14_files-0048-asus-nb-wmi-fix-tablet_mode_sw_int.patch" ) @@ -80,11 +80,11 @@ validpgpkeys=( 83BC8889351B5DEBBB68416EB8AC08600F108CDF # Jan Alexander Steffens (heftig) ) -sha256sums=('d5dec495fc00605fa9e04114df547fbc92b33d9ea7a4a2b7073c589590e79e63' +sha256sums=('138923e5d73748b4bdbe9b5a0b8f36dfac9fcc16753a9222928dc6c963effa89' 'SKIP' - 'bb2b3aa16007a0d5d61571af86a44be414f8672dad5a719cbdc92bfb758b1217' + '4ad162664e08e57ed8abf44827ecc2fce2eeb38b34988483a9183065a229534e' 'SKIP' - 'c5347f53ecce97054ecef72ff1e6d265485c8536e2137e89998a6ec04b683845' + '2fc20cbd7c4f7f3eeeba73b8e354cecb8757050d2c774992959f93ccde16d667' '278118011d7a2eeca9971ac97b31bf0c55ab55e99c662ab9ae4717b55819c9a2' 'd69232afd0dd6982ae941cf2d1f577f4be2011e3bb847d1db37952acf416b5d3' '0a7ea482fe20c403788d290826cec42fe395e5a6eab07b88845f8b9a9829998d' @@ -108,6 +108,10 @@ sha256sums=('d5dec495fc00605fa9e04114df547fbc92b33d9ea7a4a2b7073c589590e79e63' '66c25f11f3fc2cc0db9a3392400f072f1c3ac9408328128f075a9260f4eb01ef' 'd31ba415c2b65e3485d74f0268f1020dc49f31a6fe3316cf6c74a0690e96c81f' '47ad6e0781f1df1f6a6d35b8f20c2bf9dbd7e8e0b92a332cb88145755afba77c' + '3be072ed798becd91bae66a75d09235c9cb5e84547b1f4eb7768e954ba109e92' + 'c1d96328d96964c2ce3ef7609fb7c07e97eb136dfab9f6d4efcce072a5739838' + '2414dc71174c90b92f975a7d16cabc99ba509397d843132764ea9ee91b643dc0' + '107a08aa610d3ba3c7ecec301df2ea8f345bc74107fcf4dac96fe9e89a23dcf1' '15e912a66e4bbce1cf0450f1dc6610653df29df8dd6d5426f9c1b039490436c8' '444f2d86de8c2177655b01596f939f99c2e7abfa8efad8a509e0a334f42dfa85') @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 6.8.3-arch1 Kernel Configuration +# Linux/x86 6.8.5-arch1 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.2.1 20230801" CONFIG_CC_IS_GCC=y @@ -566,6 +566,9 @@ CONFIG_CPU_SRSO=y CONFIG_SLS=y # CONFIG_GDS_FORCE_MITIGATION is not set CONFIG_MITIGATION_RFDS=y +CONFIG_SPECTRE_BHI_ON=y +# CONFIG_SPECTRE_BHI_OFF is not set +# CONFIG_SPECTRE_BHI_AUTO is not set CONFIG_ARCH_HAS_ADD_PAGES=y # |