Merge branch 'for-6.4/core' into for-linus
authorJiri Kosina <jkosina@suse.cz>
Wed, 26 Apr 2023 20:54:24 +0000 (22:54 +0200)
committerJiri Kosina <jkosina@suse.cz>
Wed, 26 Apr 2023 20:54:24 +0000 (22:54 +0200)
- improve handling of generic "Digitizer" usage (Jason Gerecke)
- support for KEY_CAMERA_FOCUS (Feng Qi)

drivers/hid/hid-ids.h
drivers/hid/hid-input.c
include/linux/hid.h

index c2e9b6d..8f3e0a5 100644 (file)
 #define I2C_DEVICE_ID_HP_SPECTRE_X360_15       0x2817
 #define I2C_DEVICE_ID_HP_SPECTRE_X360_13_AW0020NG  0x29DF
 #define I2C_DEVICE_ID_ASUS_TP420IA_TOUCHSCREEN 0x2BC8
+#define I2C_DEVICE_ID_ASUS_GV301RA_TOUCHSCREEN 0x2C82
 #define USB_DEVICE_ID_ASUS_UX550VE_TOUCHSCREEN 0x2544
 #define USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN   0x2706
 #define I2C_DEVICE_ID_SURFACE_GO_TOUCHSCREEN   0x261A
index 5c65a58..a1d2690 100644 (file)
@@ -372,6 +372,8 @@ static const struct hid_device_id hid_battery_quirks[] = {
          HID_BATTERY_QUIRK_IGNORE },
        { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_ASUS_TP420IA_TOUCHSCREEN),
          HID_BATTERY_QUIRK_IGNORE },
+       { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_ASUS_GV301RA_TOUCHSCREEN),
+         HID_BATTERY_QUIRK_IGNORE },
        { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN),
          HID_BATTERY_QUIRK_IGNORE },
        { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ASUS_UX550VE_TOUCHSCREEN),
@@ -1267,6 +1269,16 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
                        return;
                }
                goto unknown;
+       case HID_UP_CAMERA:
+               switch (usage->hid & HID_USAGE) {
+               case 0x020:
+                       map_key_clear(KEY_CAMERA_FOCUS);        break;
+               case 0x021:
+                       map_key_clear(KEY_CAMERA);              break;
+               default:
+                       goto ignore;
+               }
+               break;
 
        case HID_UP_HPVENDOR:   /* Reported on a Dutch layout HP5308 */
                set_bit(EV_REP, input->evbit);
index 1ea8c7a..4e4c4fe 100644 (file)
@@ -156,6 +156,7 @@ struct hid_item {
 #define HID_UP_DIGITIZER       0x000d0000
 #define HID_UP_PID             0x000f0000
 #define HID_UP_BATTERY         0x00850000
+#define HID_UP_CAMERA          0x00900000
 #define HID_UP_HPVENDOR         0xff7f0000
 #define HID_UP_HPVENDOR2        0xff010000
 #define HID_UP_MSVENDOR                0xff000000
@@ -873,7 +874,7 @@ extern bool hid_is_usb(const struct hid_device *hdev);
 /* We ignore a few input applications that are not widely used */
 #define IS_INPUT_APPLICATION(a) \
                (((a >= HID_UP_GENDESK) && (a <= HID_GD_MULTIAXIS)) \
-               || ((a >= HID_DG_PEN) && (a <= HID_DG_WHITEBOARD)) \
+               || ((a >= HID_DG_DIGITIZER) && (a <= HID_DG_WHITEBOARD)) \
                || (a == HID_GD_SYSTEM_CONTROL) || (a == HID_CP_CONSUMER_CONTROL) \
                || (a == HID_GD_WIRELESS_RADIO_CTLS))