Skip to content

Commit 96ba894

Browse files
author
Jiri Kosina
committed
Merge branch 'for-6.17/apple' into for-linus
- fix for potential NULL pointer dereference in hid-apple that could be caused by malicious device with APPLE_MAGIC_BACKLIGHT quirk present triggering overflow in data field (Qasim Ijaz) - third party trackpart support for MacBookPro15,1 (Aditya Garg) - Apple Magic Keyboard A311[89] USB-C support (Aditya Garg, Grigorii Sokolik)
2 parents e9ef810 + 1bb3363 commit 96ba894

File tree

3 files changed

+148
-111
lines changed

3 files changed

+148
-111
lines changed

drivers/hid/hid-apple.c

Lines changed: 132 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
#include "hid-ids.h"
3131

3232
#define APPLE_RDESC_JIS BIT(0)
33-
#define APPLE_IGNORE_MOUSE BIT(1)
33+
/* BIT(1) reserved, was: APPLE_IGNORE_MOUSE */
3434
#define APPLE_HAS_FN BIT(2)
3535
/* BIT(3) reserved, was: APPLE_HIDDEV */
3636
#define APPLE_ISO_TILDE_QUIRK BIT(4)
@@ -42,8 +42,10 @@
4242
#define APPLE_BACKLIGHT_CTL BIT(10)
4343
#define APPLE_IS_NON_APPLE BIT(11)
4444
#define APPLE_MAGIC_BACKLIGHT BIT(12)
45+
#define APPLE_DISABLE_FKEYS BIT(13)
4546

46-
#define APPLE_FLAG_FKEY 0x01
47+
#define APPLE_FLAG_FKEY BIT(0)
48+
#define APPLE_FLAG_TB_FKEY BIT(1)
4749

4850
#define HID_COUNTRY_INTERNATIONAL_ISO 13
4951
#define APPLE_BATTERY_TIMEOUT_MS 60000
@@ -55,7 +57,7 @@
5557
static unsigned int fnmode = 3;
5658
module_param(fnmode, uint, 0644);
5759
MODULE_PARM_DESC(fnmode, "Mode of fn key on Apple keyboards (0 = disabled, "
58-
"1 = fkeyslast, 2 = fkeysfirst, [3] = auto)");
60+
"1 = fkeyslast, 2 = fkeysfirst, [3] = auto, 4 = fkeysdisabled)");
5961

6062
static int iso_layout = -1;
6163
module_param(iso_layout, int, 0644);
@@ -89,6 +91,19 @@ struct apple_sc_backlight {
8991
struct hid_device *hdev;
9092
};
9193

94+
struct apple_backlight_config_report {
95+
u8 report_id;
96+
u8 version;
97+
u16 backlight_off, backlight_on_min, backlight_on_max;
98+
};
99+
100+
struct apple_backlight_set_report {
101+
u8 report_id;
102+
u8 version;
103+
u16 backlight;
104+
u16 rate;
105+
};
106+
92107
struct apple_magic_backlight {
93108
struct led_classdev cdev;
94109
struct hid_report *brightness;
@@ -108,7 +123,7 @@ struct apple_sc {
108123
struct apple_key_translation {
109124
u16 from;
110125
u16 to;
111-
u8 flags;
126+
unsigned long flags;
112127
};
113128

114129
static const struct apple_key_translation magic_keyboard_alu_fn_keys[] = {
@@ -152,21 +167,7 @@ static const struct apple_key_translation magic_keyboard_2015_fn_keys[] = {
152167
{ }
153168
};
154169

155-
struct apple_backlight_config_report {
156-
u8 report_id;
157-
u8 version;
158-
u16 backlight_off, backlight_on_min, backlight_on_max;
159-
};
160-
161-
struct apple_backlight_set_report {
162-
u8 report_id;
163-
u8 version;
164-
u16 backlight;
165-
u16 rate;
166-
};
167-
168-
169-
static const struct apple_key_translation apple2021_fn_keys[] = {
170+
static const struct apple_key_translation magic_keyboard_2021_and_2024_fn_keys[] = {
170171
{ KEY_BACKSPACE, KEY_DELETE },
171172
{ KEY_ENTER, KEY_INSERT },
172173
{ KEY_F1, KEY_BRIGHTNESSDOWN, APPLE_FLAG_FKEY },
@@ -212,19 +213,19 @@ static const struct apple_key_translation macbookair_fn_keys[] = {
212213
static const struct apple_key_translation macbookpro_no_esc_fn_keys[] = {
213214
{ KEY_BACKSPACE, KEY_DELETE },
214215
{ KEY_ENTER, KEY_INSERT },
215-
{ KEY_GRAVE, KEY_ESC },
216-
{ KEY_1, KEY_F1 },
217-
{ KEY_2, KEY_F2 },
218-
{ KEY_3, KEY_F3 },
219-
{ KEY_4, KEY_F4 },
220-
{ KEY_5, KEY_F5 },
221-
{ KEY_6, KEY_F6 },
222-
{ KEY_7, KEY_F7 },
223-
{ KEY_8, KEY_F8 },
224-
{ KEY_9, KEY_F9 },
225-
{ KEY_0, KEY_F10 },
226-
{ KEY_MINUS, KEY_F11 },
227-
{ KEY_EQUAL, KEY_F12 },
216+
{ KEY_GRAVE, KEY_ESC, APPLE_FLAG_TB_FKEY },
217+
{ KEY_1, KEY_F1, APPLE_FLAG_TB_FKEY },
218+
{ KEY_2, KEY_F2, APPLE_FLAG_TB_FKEY },
219+
{ KEY_3, KEY_F3, APPLE_FLAG_TB_FKEY },
220+
{ KEY_4, KEY_F4, APPLE_FLAG_TB_FKEY },
221+
{ KEY_5, KEY_F5, APPLE_FLAG_TB_FKEY },
222+
{ KEY_6, KEY_F6, APPLE_FLAG_TB_FKEY },
223+
{ KEY_7, KEY_F7, APPLE_FLAG_TB_FKEY },
224+
{ KEY_8, KEY_F8, APPLE_FLAG_TB_FKEY },
225+
{ KEY_9, KEY_F9, APPLE_FLAG_TB_FKEY },
226+
{ KEY_0, KEY_F10, APPLE_FLAG_TB_FKEY },
227+
{ KEY_MINUS, KEY_F11, APPLE_FLAG_TB_FKEY },
228+
{ KEY_EQUAL, KEY_F12, APPLE_FLAG_TB_FKEY },
228229
{ KEY_UP, KEY_PAGEUP },
229230
{ KEY_DOWN, KEY_PAGEDOWN },
230231
{ KEY_LEFT, KEY_HOME },
@@ -235,18 +236,18 @@ static const struct apple_key_translation macbookpro_no_esc_fn_keys[] = {
235236
static const struct apple_key_translation macbookpro_dedicated_esc_fn_keys[] = {
236237
{ KEY_BACKSPACE, KEY_DELETE },
237238
{ KEY_ENTER, KEY_INSERT },
238-
{ KEY_1, KEY_F1 },
239-
{ KEY_2, KEY_F2 },
240-
{ KEY_3, KEY_F3 },
241-
{ KEY_4, KEY_F4 },
242-
{ KEY_5, KEY_F5 },
243-
{ KEY_6, KEY_F6 },
244-
{ KEY_7, KEY_F7 },
245-
{ KEY_8, KEY_F8 },
246-
{ KEY_9, KEY_F9 },
247-
{ KEY_0, KEY_F10 },
248-
{ KEY_MINUS, KEY_F11 },
249-
{ KEY_EQUAL, KEY_F12 },
239+
{ KEY_1, KEY_F1, APPLE_FLAG_TB_FKEY },
240+
{ KEY_2, KEY_F2, APPLE_FLAG_TB_FKEY },
241+
{ KEY_3, KEY_F3, APPLE_FLAG_TB_FKEY },
242+
{ KEY_4, KEY_F4, APPLE_FLAG_TB_FKEY },
243+
{ KEY_5, KEY_F5, APPLE_FLAG_TB_FKEY },
244+
{ KEY_6, KEY_F6, APPLE_FLAG_TB_FKEY },
245+
{ KEY_7, KEY_F7, APPLE_FLAG_TB_FKEY },
246+
{ KEY_8, KEY_F8, APPLE_FLAG_TB_FKEY },
247+
{ KEY_9, KEY_F9, APPLE_FLAG_TB_FKEY },
248+
{ KEY_0, KEY_F10, APPLE_FLAG_TB_FKEY },
249+
{ KEY_MINUS, KEY_F11, APPLE_FLAG_TB_FKEY },
250+
{ KEY_EQUAL, KEY_F12, APPLE_FLAG_TB_FKEY },
250251
{ KEY_UP, KEY_PAGEUP },
251252
{ KEY_DOWN, KEY_PAGEDOWN },
252253
{ KEY_LEFT, KEY_HOME },
@@ -425,7 +426,12 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
425426
unsigned int real_fnmode;
426427

427428
if (fnmode == 3) {
428-
real_fnmode = (asc->quirks & APPLE_IS_NON_APPLE) ? 2 : 1;
429+
if (asc->quirks & APPLE_DISABLE_FKEYS)
430+
real_fnmode = 4;
431+
else if (asc->quirks & APPLE_IS_NON_APPLE)
432+
real_fnmode = 2;
433+
else
434+
real_fnmode = 1;
429435
} else {
430436
real_fnmode = fnmode;
431437
}
@@ -466,42 +472,54 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
466472
asc->fn_on = !!value;
467473

468474
if (real_fnmode) {
469-
if (hid->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI ||
470-
hid->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO ||
471-
hid->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS ||
472-
hid->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI ||
473-
hid->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO ||
474-
hid->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS ||
475-
hid->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI ||
476-
hid->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO ||
477-
hid->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_JIS)
475+
switch (hid->product) {
476+
case USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI:
477+
case USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO:
478+
case USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS:
479+
case USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI:
480+
case USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO:
481+
case USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS:
482+
case USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI:
483+
case USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO:
484+
case USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_JIS:
478485
table = magic_keyboard_alu_fn_keys;
479-
else if (hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2015 ||
480-
hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2015)
486+
break;
487+
case USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2015:
488+
case USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2015:
481489
table = magic_keyboard_2015_fn_keys;
482-
else if (hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021 ||
483-
hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024 ||
484-
hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021 ||
485-
hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021)
486-
table = apple2021_fn_keys;
487-
else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132 ||
488-
hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680 ||
489-
hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213)
490-
table = macbookpro_no_esc_fn_keys;
491-
else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K ||
492-
hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223 ||
493-
hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F)
494-
table = macbookpro_dedicated_esc_fn_keys;
495-
else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K ||
496-
hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K)
497-
table = apple_fn_keys;
498-
else if (hid->product >= USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI &&
499-
hid->product <= USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS)
500-
table = macbookair_fn_keys;
501-
else if (hid->product < 0x21d || hid->product >= 0x300)
502-
table = powerbook_fn_keys;
503-
else
490+
break;
491+
case USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021:
492+
case USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021:
493+
case USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021:
494+
case USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024:
495+
case USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2024:
496+
case USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2024:
497+
table = magic_keyboard_2021_and_2024_fn_keys;
498+
break;
499+
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
500+
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
501+
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
502+
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT:
503+
table = macbookpro_no_esc_fn_keys;
504+
break;
505+
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F:
506+
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
507+
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
508+
table = macbookpro_dedicated_esc_fn_keys;
509+
break;
510+
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
511+
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K:
504512
table = apple_fn_keys;
513+
break;
514+
default:
515+
if (hid->product >= USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI &&
516+
hid->product <= USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS)
517+
table = macbookair_fn_keys;
518+
else if (hid->product < 0x21d || hid->product >= 0x300)
519+
table = powerbook_fn_keys;
520+
else
521+
table = apple_fn_keys;
522+
}
505523

506524
trans = apple_find_translation(table, code);
507525

@@ -524,8 +542,16 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
524542
do_translate = asc->fn_on;
525543
break;
526544
default:
527-
/* should never happen */
545+
/* case 4 */
546+
do_translate = false;
547+
}
548+
} else if (trans->flags & APPLE_FLAG_TB_FKEY) {
549+
switch (real_fnmode) {
550+
case 4:
528551
do_translate = false;
552+
break;
553+
default:
554+
do_translate = asc->fn_on;
529555
}
530556
} else {
531557
do_translate = asc->fn_on;
@@ -682,7 +708,7 @@ static void apple_setup_input(struct input_dev *input)
682708
apple_setup_key_translation(input, apple_iso_keyboard);
683709
apple_setup_key_translation(input, magic_keyboard_alu_fn_keys);
684710
apple_setup_key_translation(input, magic_keyboard_2015_fn_keys);
685-
apple_setup_key_translation(input, apple2021_fn_keys);
711+
apple_setup_key_translation(input, magic_keyboard_2021_and_2024_fn_keys);
686712
apple_setup_key_translation(input, macbookpro_no_esc_fn_keys);
687713
apple_setup_key_translation(input, macbookpro_dedicated_esc_fn_keys);
688714
}
@@ -890,7 +916,8 @@ static int apple_magic_backlight_init(struct hid_device *hdev)
890916
backlight->brightness = report_enum->report_id_hash[APPLE_MAGIC_REPORT_ID_BRIGHTNESS];
891917
backlight->power = report_enum->report_id_hash[APPLE_MAGIC_REPORT_ID_POWER];
892918

893-
if (!backlight->brightness || !backlight->power)
919+
if (!backlight->brightness || backlight->brightness->maxfield < 2 ||
920+
!backlight->power || backlight->power->maxfield < 2)
894921
return -ENODEV;
895922

896923
backlight->cdev.name = ":white:" LED_FUNCTION_KBD_BACKLIGHT;
@@ -1129,19 +1156,25 @@ static const struct hid_device_id apple_devices[] = {
11291156
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K),
11301157
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK },
11311158
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132),
1132-
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK },
1159+
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
1160+
APPLE_DISABLE_FKEYS },
11331161
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680),
1134-
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK },
1162+
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
1163+
APPLE_DISABLE_FKEYS },
1164+
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT),
1165+
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
1166+
APPLE_DISABLE_FKEYS },
11351167
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213),
1136-
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK },
1168+
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
1169+
APPLE_DISABLE_FKEYS },
11371170
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K),
1138-
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
1171+
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_DISABLE_FKEYS },
11391172
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223),
1140-
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
1173+
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_DISABLE_FKEYS },
11411174
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K),
11421175
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
11431176
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F),
1144-
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
1177+
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_DISABLE_FKEYS },
11451178
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI),
11461179
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
11471180
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO),
@@ -1157,10 +1190,6 @@ static const struct hid_device_id apple_devices[] = {
11571190
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
11581191
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021),
11591192
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
1160-
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024),
1161-
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
1162-
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024),
1163-
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
11641193
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021),
11651194
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
11661195
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021),
@@ -1169,6 +1198,18 @@ static const struct hid_device_id apple_devices[] = {
11691198
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
11701199
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021),
11711200
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
1201+
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024),
1202+
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
1203+
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024),
1204+
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
1205+
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2024),
1206+
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
1207+
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2024),
1208+
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
1209+
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2024),
1210+
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
1211+
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2024),
1212+
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
11721213
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_TOUCHBAR_BACKLIGHT),
11731214
.driver_data = APPLE_MAGIC_BACKLIGHT },
11741215

drivers/hid/hid-ids.h

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -167,31 +167,34 @@
167167
#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_JIS 0x0257
168168
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2015 0x0267
169169
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2015 0x026c
170+
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021 0x029c
171+
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021 0x029a
172+
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021 0x029f
173+
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024 0x0320
174+
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2024 0x0321
175+
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2024 0x0322
170176
#define USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI 0x0290
171177
#define USB_DEVICE_ID_APPLE_WELLSPRING8_ISO 0x0291
172178
#define USB_DEVICE_ID_APPLE_WELLSPRING8_JIS 0x0292
173179
#define USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI 0x0272
174180
#define USB_DEVICE_ID_APPLE_WELLSPRING9_ISO 0x0273
175181
#define USB_DEVICE_ID_APPLE_WELLSPRING9_JIS 0x0274
176-
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K 0x027a
177-
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132 0x027b
178-
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680 0x027c
179-
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213 0x027d
180-
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K 0x027e
181-
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223 0x027f
182-
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K 0x0280
183-
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F 0x0340
182+
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K 0x027a
183+
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132 0x027b
184+
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680 0x027c
185+
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT 0x0278
186+
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213 0x027d
187+
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K 0x027e
188+
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223 0x027f
189+
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K 0x0280
190+
#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F 0x0340
184191
#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
185192
#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
186193
#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240
187194
#define USB_DEVICE_ID_APPLE_IRCONTROL2 0x1440
188195
#define USB_DEVICE_ID_APPLE_IRCONTROL3 0x8241
189196
#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
190197
#define USB_DEVICE_ID_APPLE_IRCONTROL5 0x8243
191-
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021 0x029c
192-
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024 0x0320
193-
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021 0x029a
194-
#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021 0x029f
195198
#define USB_DEVICE_ID_APPLE_TOUCHBAR_BACKLIGHT 0x8102
196199
#define USB_DEVICE_ID_APPLE_TOUCHBAR_DISPLAY 0x8302
197200

0 commit comments

Comments
 (0)