summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaijian2024-04-11 10:59:18 +0200
committerTaijian2024-04-11 10:59:18 +0200
commit8ba6b0ce92cff913a9409fb1a5d27e3317c50486 (patch)
tree8da6aac3308436293ee1f26f4b75461a0ea08cbf
parent0ad0abb87aa2235000d634857788f7b0a8a56265 (diff)
downloadaur-8ba6b0ce92cff913a9409fb1a5d27e3317c50486.tar.gz
update to 6.8.5
-rw-r--r--.SRCINFO24
-rw-r--r--0001-HID-asus-fix-more-n-key-report-descriptors-if-n-key-.patch89
-rw-r--r--0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch150
-rw-r--r--0002-HID-asus-make-asus_kbd_init-generic-remove-rog_nkey_.patch130
-rw-r--r--0002-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-M.patch100
-rw-r--r--0003-HID-asus-add-ROG-Ally-N-Key-ID-and-keycodes.patch50
-rw-r--r--0003-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch74
-rw-r--r--0004-HID-asus-add-ROG-Z13-lightbar.patch43
-rw-r--r--0004-platform-x86-asus-wmi-support-toggling-POST-sound.patch139
-rw-r--r--0005-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch342
-rw-r--r--PKGBUILD22
-rw-r--r--config5
12 files changed, 345 insertions, 823 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 45e6b78b3364..30c210bf3a9b 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
-
diff --git a/PKGBUILD b/PKGBUILD
index 43ac04776ce0..1b7111bf8e44 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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')
diff --git a/config b/config
index fd530d6744db..6c3113a0c3f2 100644
--- a/config
+++ b/config
@@ -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
#