summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.com>2026-08-03 21:18:12 +0200
committerJiri Kosina <jkosina@suse.com>2026-08-03 21:18:12 +0200
commit7d3ee91cea3be01bbceef364b75b73aa836dcc38 (patch)
tree87fe07e3f61741bcaab3bac072db1f0d541f4302
parent75cb5feb881748854e8d23c2f18d76a744bee591 (diff)
parent206107536018272a9c786fab74cdd90ee748ac2f (diff)
downloadlinux-next-7d3ee91cea3be01bbceef364b75b73aa836dcc38.tar.gz
linux-next-7d3ee91cea3be01bbceef364b75b73aa836dcc38.zip
Merge branch 'for-7.2/upstream-fixes' into for-next
-rw-r--r--drivers/hid/hid-asus.c18
-rw-r--r--drivers/hid/hid-ids.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
index f6e882a1cee6..ec966fc0a411 100644
--- a/drivers/hid/hid-asus.c
+++ b/drivers/hid/hid-asus.c
@@ -99,6 +99,7 @@ MODULE_DESCRIPTION("Asus HID Keyboard and TouchPad");
#define QUIRK_ROG_CLAYMORE_II_KEYBOARD BIT(12)
#define QUIRK_ROG_ALLY_XPAD BIT(13)
#define QUIRK_HID_FN_LOCK BIT(14)
+#define QUIRK_FILTER_CAMERA_COMPANION BIT(15)
#define I2C_KEYBOARD_QUIRKS (QUIRK_FIX_NOTEBOOK_REPORT | \
QUIRK_NO_INIT_REPORTS | \
@@ -559,6 +560,17 @@ static int asus_raw_event(struct hid_device *hdev,
return -1;
}
+ /*
+ * The camera-toggle key reports its vendor usage (0x85) together with a
+ * companion state byte in the same array report, e.g. "5a 85 01" and
+ * "5a 85 10" for the two toggle positions. The 0x10 companion aliases the
+ * brightness-down vendor usage and would spuriously dim the panel, so drop
+ * the companion slots and leave only the camera usage for input mapping.
+ */
+ if (drvdata->quirks & QUIRK_FILTER_CAMERA_COMPANION &&
+ report->id == FEATURE_KBD_REPORT_ID && size >= 3 && data[1] == 0x85)
+ memset(&data[2], 0, size - 2);
+
return 0;
}
@@ -1228,6 +1240,8 @@ static int asus_input_mapping(struct hid_device *hdev,
case 0x6c: asus_map_key_clear(KEY_SLEEP); break;
case 0x7c: asus_map_key_clear(KEY_MICMUTE); break;
case 0x82: asus_map_key_clear(KEY_CAMERA); break;
+ case 0x85: asus_map_key_clear(KEY_CAMERA); break;
+ case 0x86: asus_map_key_clear(KEY_PROG1); break; /* MyASUS key */
case 0x88: asus_map_key_clear(KEY_RFKILL); break;
case 0xb5: asus_map_key_clear(KEY_CALC); break;
case 0xc4: asus_map_key_clear(KEY_KBDILLUMUP); break;
@@ -1237,6 +1251,7 @@ static int asus_input_mapping(struct hid_device *hdev,
case 0x7e: asus_map_key_clear(KEY_EMOJI_PICKER); break;
case 0x8b: asus_map_key_clear(KEY_PROG1); break; /* ProArt Creator Hub key */
+ case 0x5f: asus_map_key_clear(KEY_PROG2); break; /* S-shaped programmable key */
case 0x6b: asus_map_key_clear(KEY_F21); break; /* ASUS touchpad toggle */
case 0x38: asus_map_key_clear(KEY_PROG1); break; /* ROG key */
case 0xba: asus_map_key_clear(KEY_PROG2); break; /* Fn+C ASUS Splendid */
@@ -1656,6 +1671,9 @@ static const struct hid_device_id asus_devices[] = {
{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK,
USB_DEVICE_ID_ASUSTEK_I2C_KEYBOARD), I2C_KEYBOARD_QUIRKS},
{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK,
+ USB_DEVICE_ID_ASUSTEK_I2C_ZENBOOK_KEYBOARD),
+ I2C_KEYBOARD_QUIRKS | QUIRK_FILTER_CAMERA_COMPANION },
+ { HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK,
USB_DEVICE_ID_ASUSTEK_I2C_TOUCHPAD), I2C_TOUCHPAD_QUIRKS },
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD1), QUIRK_USE_KBD_BACKLIGHT },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index c86c8c4e7694..1ba78cf11cd0 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -220,6 +220,7 @@
#define USB_DEVICE_ID_ASUSTEK_T101HA_KEYBOARD 0x183d
#define USB_DEVICE_ID_ASUSTEK_T304_KEYBOARD 0x184a
#define USB_DEVICE_ID_ASUSTEK_I2C_KEYBOARD 0x8585
+#define USB_DEVICE_ID_ASUSTEK_I2C_ZENBOOK_KEYBOARD 0x4b42
#define USB_DEVICE_ID_ASUSTEK_I2C_TOUCHPAD 0x0101
#define USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD1 0x1854
#define USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD2 0x1837