Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit 5126887

Browse files
jwrdegoedeJiri Kosina
authored andcommitted
HID: lenovo: Add support for Thinkpad X1 Tablet Gen 3 keyboard
The Thinkpad X1 Tablet Gen 3 keyboard has the same Lenovo specific quirks as the original Thinkpad X1 Tablet keyboard. Add the PID for the "Thinkpad X1 Tablet Gen 3 keyboard" to the hid-lenovo driver to fix the FnLock, Mute and media buttons not working. Suggested-by: Izhar Firdaus <[email protected]> Closes https://bugzilla.redhat.com/show_bug.cgi?id=2315395 Signed-off-by: Hans de Goede <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>
1 parent 526748b commit 5126887

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

drivers/hid/hid-lenovo.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,7 @@ static int lenovo_input_mapping(struct hid_device *hdev,
473473
return lenovo_input_mapping_tp10_ultrabook_kbd(hdev, hi, field,
474474
usage, bit, max);
475475
case USB_DEVICE_ID_LENOVO_X1_TAB:
476+
case USB_DEVICE_ID_LENOVO_X1_TAB3:
476477
return lenovo_input_mapping_x1_tab_kbd(hdev, hi, field, usage, bit, max);
477478
default:
478479
return 0;
@@ -583,6 +584,7 @@ static ssize_t attr_fn_lock_store(struct device *dev,
583584
break;
584585
case USB_DEVICE_ID_LENOVO_TP10UBKBD:
585586
case USB_DEVICE_ID_LENOVO_X1_TAB:
587+
case USB_DEVICE_ID_LENOVO_X1_TAB3:
586588
ret = lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, value);
587589
if (ret)
588590
return ret;
@@ -776,6 +778,7 @@ static int lenovo_event(struct hid_device *hdev, struct hid_field *field,
776778
return lenovo_event_cptkbd(hdev, field, usage, value);
777779
case USB_DEVICE_ID_LENOVO_TP10UBKBD:
778780
case USB_DEVICE_ID_LENOVO_X1_TAB:
781+
case USB_DEVICE_ID_LENOVO_X1_TAB3:
779782
return lenovo_event_tp10ubkbd(hdev, field, usage, value);
780783
default:
781784
return 0;
@@ -1056,6 +1059,7 @@ static int lenovo_led_brightness_set(struct led_classdev *led_cdev,
10561059
break;
10571060
case USB_DEVICE_ID_LENOVO_TP10UBKBD:
10581061
case USB_DEVICE_ID_LENOVO_X1_TAB:
1062+
case USB_DEVICE_ID_LENOVO_X1_TAB3:
10591063
ret = lenovo_led_set_tp10ubkbd(hdev, tp10ubkbd_led[led_nr], value);
10601064
break;
10611065
}
@@ -1286,6 +1290,7 @@ static int lenovo_probe(struct hid_device *hdev,
12861290
break;
12871291
case USB_DEVICE_ID_LENOVO_TP10UBKBD:
12881292
case USB_DEVICE_ID_LENOVO_X1_TAB:
1293+
case USB_DEVICE_ID_LENOVO_X1_TAB3:
12891294
ret = lenovo_probe_tp10ubkbd(hdev);
12901295
break;
12911296
default:
@@ -1372,6 +1377,7 @@ static void lenovo_remove(struct hid_device *hdev)
13721377
break;
13731378
case USB_DEVICE_ID_LENOVO_TP10UBKBD:
13741379
case USB_DEVICE_ID_LENOVO_X1_TAB:
1380+
case USB_DEVICE_ID_LENOVO_X1_TAB3:
13751381
lenovo_remove_tp10ubkbd(hdev);
13761382
break;
13771383
}
@@ -1421,6 +1427,8 @@ static const struct hid_device_id lenovo_devices[] = {
14211427
*/
14221428
{ HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
14231429
USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_TAB) },
1430+
{ HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
1431+
USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_TAB3) },
14241432
{ }
14251433
};
14261434

0 commit comments

Comments
 (0)