]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Merge tag 'platform-drivers-x86-v7.0-1' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 13 Feb 2026 23:39:15 +0000 (15:39 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 13 Feb 2026 23:39:15 +0000 (15:39 -0800)
Pull x86 platform driver updates from Ilpo Järvinen:
 "Highlights:

   - amd/pmf:
      - Avoid overwriting BIOS input values when events occur rapidly
      - Fix PMF driver issues related to S4 (in part on crypto/ccp side)
      - Add NPU metrics API (for accel side consumers)
      - Allow disabling Smart PC function through a module parameter

   - asus-wmi & HID/asus:
      - Unification of backlight control (replaces quirks)
      - Support multiple interfaces for controlling keyboard/RGB brightness
      - Simplify init sequence

   - hp-wmi:
      - Add manual fan control for Victus S models
      - Add fan mode keep-alive
      - Fix platform profile values for Omen 16-wf1xxx
      - Add EC offset to get the thermal profile

   - intel/pmc: Show substate residencies also for non-primary PMCs

   - intel/ISST:
      - Store and restore data for all domains
      - Write interface improvements

   - lenovo-wmi:
      - Support multiple Capability Data
      - Add HWMON reporting and tuning support

   - mellanox/mlx-platform: Add HI173 & HI174 support

   - surface/aggregator_registry: Add Surface Pro 11 (QCOM)

   - thinkpad_acpi: Add support for HW damage detection capability

   - uniwill: Implement cTGP setting

   - wmi:
      - Introduce marshalling support
      - Convert a few drivers to use the new buffer-based WMI API

   - tools/power/x86/intel-speed-select: Allow read operations for non-root

   - Miscellaneous cleanups / refactoring / improvements"

* tag 'platform-drivers-x86-v7.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (68 commits)
  platform/x86: lenovo-wmi-{capdata,other}: Fix HWMON channel visibility
  platform/x86: hp-wmi: Add EC offsets to read Victus S thermal profile
  platform: mellanox: mlx-platform: Add support DGX flavor of next-generation 800GB/s ethernet switch.
  platform: mellanox: mlx-platform: Add support for new Nvidia DGX system based on class VMOD0010
  HID: asus: add support for the asus-wmi brightness handler
  platform/x86: asus-wmi: add keyboard brightness event handler
  platform/x86: asus-wmi: remove unused keyboard backlight quirk
  HID: asus: listen to the asus-wmi brightness device instead of creating one
  platform/x86: asus-wmi: Add support for multiple kbd led handlers
  HID: asus: early return for ROG devices
  HID: asus: move vendor initialization to probe
  HID: asus: fortify keyboard handshake
  HID: asus: use same report_id in response
  HID: asus: initialize additional endpoints only for certain devices
  HID: asus: simplify RGB init sequence
  platform/wmi: string-kunit: Add missing oversized string test case
  platform/x86/amd/pmf: Added a module parameter to disable the Smart PC function
  platform/x86/uniwill: Implement cTGP setting
  platform/x86: uniwill-laptop: Introduce device descriptor system
  platform/x86/amd: Use scope-based cleanup for wbrf_record()
  ...

1  2 
drivers/hid/hid-asus.c
drivers/platform/x86/intel/wmi/thunderbolt.c
include/linux/platform_data/x86/asus-wmi.h

index df7c03dde67fa73eb271b5628a2b905010eee383,f5c8df20b88bf9ecf0c8c5ead6900b27f960f62b..8ffcd12038e8a649ad78503e0a359b77f393d1fe
@@@ -49,8 -47,9 +48,8 @@@ MODULE_DESCRIPTION("Asus HID Keyboard a
  #define T100CHI_MOUSE_REPORT_ID 0x06
  #define FEATURE_REPORT_ID 0x0d
  #define INPUT_REPORT_ID 0x5d
 -#define HID_USAGE_PAGE_VENDOR 0xff310000
  #define FEATURE_KBD_REPORT_ID 0x5a
- #define FEATURE_KBD_REPORT_SIZE 16
+ #define FEATURE_KBD_REPORT_SIZE 64
  #define FEATURE_KBD_LED_REPORT_ID1 0x5d
  #define FEATURE_KBD_LED_REPORT_ID2 0x5e
  
  #define QUIRK_T90CHI                  BIT(9)
  #define QUIRK_MEDION_E1239T           BIT(10)
  #define QUIRK_ROG_NKEY_KEYBOARD               BIT(11)
--#define QUIRK_ROG_CLAYMORE_II_KEYBOARD BIT(12)
++#define QUIRK_ROG_CLAYMORE_II_KEYBOARD        BIT(12)
  #define QUIRK_ROG_ALLY_XPAD           BIT(13)
 -#define QUIRK_ROG_NKEY_ID1ID2_INIT            BIT(14)
 +#define QUIRK_HID_FN_LOCK             BIT(14)
++#define QUIRK_ROG_NKEY_ID1ID2_INIT    BIT(15)
  
  #define I2C_KEYBOARD_QUIRKS                   (QUIRK_FIX_NOTEBOOK_REPORT | \
                                                 QUIRK_NO_INIT_REPORTS | \
@@@ -363,10 -324,15 +362,21 @@@ static int asus_event(struct hid_devic
                         usage->hid & HID_USAGE);
        }
  
-       if (drvdata->quirks & QUIRK_HID_FN_LOCK &&
-               usage->type == EV_KEY && usage->code == KEY_FN_ESC && value == 1) {
-               drvdata->fn_lock = !drvdata->fn_lock;
-               schedule_work(&drvdata->fn_lock_sync_work);
+       if (usage->type == EV_KEY && value) {
+               switch (usage->code) {
+               case KEY_KBDILLUMUP:
+                       return !asus_hid_event(ASUS_EV_BRTUP);
+               case KEY_KBDILLUMDOWN:
+                       return !asus_hid_event(ASUS_EV_BRTDOWN);
+               case KEY_KBDILLUMTOGGLE:
+                       return !asus_hid_event(ASUS_EV_BRTTOGGLE);
++              case KEY_FN_ESC:
++                      if (drvdata->quirks & QUIRK_HID_FN_LOCK) {
++                              drvdata->fn_lock = !drvdata->fn_lock;
++                              schedule_work(&drvdata->fn_lock_sync_work);
++                      }
++                      break;
+               }
        }
  
        return 0;
@@@ -1021,17 -903,6 +999,12 @@@ static int asus_input_configured(struc
  
        drvdata->input = input;
  
-       if (drvdata->enable_backlight &&
-           !asus_kbd_wmi_led_control_present(hdev) &&
-           asus_kbd_register_leds(hdev))
-               hid_warn(hdev, "Failed to initialize backlight.\n");
 +      if (drvdata->quirks & QUIRK_HID_FN_LOCK) {
 +              drvdata->fn_lock = true;
 +              INIT_WORK(&drvdata->fn_lock_sync_work, asus_sync_fn_lock);
 +              asus_kbd_set_fn_lock(hdev, true);
 +      }
 +
        return 0;
  }
  
@@@ -1314,6 -1179,13 +1281,13 @@@ static int asus_probe(struct hid_devic
                return ret;
        }
  
 -              if ((rep->application & HID_USAGE_PAGE) == HID_USAGE_PAGE_VENDOR)
+       /* Check for vendor for RGB init and handle generic devices properly. */
+       rep_enum = &hdev->report_enum[HID_INPUT_REPORT];
+       list_for_each_entry(rep, &rep_enum->report_list, list) {
++              if ((rep->application & HID_USAGE_PAGE) == HID_UP_ASUSVENDOR)
+                       is_vendor = true;
+       }
        ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
        if (ret) {
                hid_err(hdev, "Asus hw start failed: %d\n", ret);
@@@ -1490,10 -1372,10 +1477,10 @@@ static const struct hid_device_id asus_
          QUIRK_USE_KBD_BACKLIGHT },
        { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
            USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD),
-         QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD },
+         QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_ROG_NKEY_ID1ID2_INIT },
        { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
            USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD2),
-         QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_HID_FN_LOCK },
 -        QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_ROG_NKEY_ID1ID2_INIT },
++        QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_HID_FN_LOCK | QUIRK_ROG_NKEY_ID1ID2_INIT },
        { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
            USB_DEVICE_ID_ASUSTEK_ROG_Z13_LIGHTBAR),
          QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD },
index 15e5763a20dd724ad9d648d896c75779089e8f6f,f01dd096c689942d0e4a2bbebcea5fda6104a934..47017f2d759707f81fd572422d97abdf2534c2f7
@@@ -7,10 -7,8 +7,9 @@@
  
  #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
  
- #include <linux/acpi.h>
  #include <linux/device.h>
  #include <linux/fs.h>
 +#include <linux/hex.h>
  #include <linux/kernel.h>
  #include <linux/module.h>
  #include <linux/string.h>