The 2024 USB-C Magic Keyboards (05ac:0320, 05ac:0321 and 05ac:0322) have a Device Management HID interface as interface 0 and the Boot Keyboard as interface 1. U-Boot only looks at interface 0 when matching a driver, so these keyboards are bound to the generic USB device driver and do not work as a console input device.
Match them by vendor and product ID so that usb_kbd binds to them. probe_usb_keyboard() already looks through all interfaces and uses the Boot Keyboard on interface 1. Tested with a 05ac:0320 keyboard (US layout, no Touch ID) on qemu_arm64 with USB passthrough. Without this patch the device is bound to the generic driver and no usbkbd console device is registered; with it, usb_kbd is bound and keyboard input works. 05ac:0321 and 05ac:0322 are untested. The IDs are taken from Linux's drivers/hid/hid-ids.h. Signed-off-by: Ryoya Tsujita <[email protected]> --- common/usb_kbd.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/common/usb_kbd.c b/common/usb_kbd.c index 36107a3b278..25d8a0dff64 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -30,6 +30,9 @@ #define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021 0x029c #define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021 0x029a #define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021 0x029f +#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024 0x0320 +#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2024 0x0321 +#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2024 0x0322 #define USB_VENDOR_ID_KEYCHRON 0x3434 @@ -724,6 +727,18 @@ static const struct usb_device_id kbd_id_table[] = { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021), }, + { + USB_DEVICE(USB_VENDOR_ID_APPLE, + USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024), + }, + { + USB_DEVICE(USB_VENDOR_ID_APPLE, + USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2024), + }, + { + USB_DEVICE(USB_VENDOR_ID_APPLE, + USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2024), + }, { } /* Terminating entry */ }; -- 2.47.3
