usb: kbd: support Apple Magic Keyboards (2021)
Apple USB keyboards (Magic Keyboard from 2021 (product id 0x029c)) carry
the HID keyboard boot protocol on the second interface descriptor.
Probe via vendor and product IDs since the class/subclass/protocol match
uses the first interface descriptor.
Probe the two first interface descriptors for the HID keyboard boot
protocol.
USB configuration descriptor for reference:
| Bus 003 Device 002: ID 05ac:029c Apple, Inc. Magic Keyboard
| Device Descriptor:
| bLength 18
| bDescriptorType 1
| bcdUSB 2.00
| bDeviceClass 0 [unknown]
| bDeviceSubClass 0 [unknown]
| bDeviceProtocol 0
| bMaxPacketSize0 64
| idVendor 0x05ac Apple, Inc.
| idProduct 0x029c Magic Keyboard
| bcdDevice 3.90
| iManufacturer 1 Apple Inc.
| iProduct 2 Magic Keyboard
| iSerial 3 ...
| bNumConfigurations 1
| Configuration Descriptor:
| bLength 9
| bDescriptorType 2
| wTotalLength 0x003b
| bNumInterfaces 2
| bConfigurationValue 1
| iConfiguration 4 Keyboard
| bmAttributes 0xa0
| (Bus Powered)
| Remote Wakeup
| MaxPower 500mA
| Interface Descriptor:
| bLength 9
| bDescriptorType 4
| bInterfaceNumber 0
| bAlternateSetting 0
| bNumEndpoints 1
| bInterfaceClass 3 Human Interface Device
| bInterfaceSubClass 0 [unknown]
| bInterfaceProtocol 0
| iInterface 5 Device Management
| HID Device Descriptor:
| bLength 9
| bDescriptorType 33
| bcdHID 1.10
| bCountryCode 0 Not supported
| bNumDescriptors 1
| bDescriptorType 34 Report
| wDescriptorLength 83
| Report Descriptors:
| ** UNAVAILABLE **
| Endpoint Descriptor:
| bLength 7
| bDescriptorType 5
| bEndpointAddress 0x81 EP 1 IN
| bmAttributes 3
| Transfer Type Interrupt
| Synch Type None
| Usage Type Data
| wMaxPacketSize 0x0010 1x 16 bytes
| bInterval 8
| Interface Descriptor:
| bLength 9
| bDescriptorType 4
| bInterfaceNumber 1
| bAlternateSetting 0
| bNumEndpoints 1
| bInterfaceClass 3 Human Interface Device
| bInterfaceSubClass 1 Boot Interface Subclass
| bInterfaceProtocol 1 Keyboard
| iInterface 6 Keyboard / Boot
| HID Device Descriptor:
| bLength 9
| bDescriptorType 33
| bcdHID 1.10
| bCountryCode 13 International (ISO)
| bNumDescriptors 1
| bDescriptorType 34 Report
| wDescriptorLength 207
| Report Descriptors:
| ** UNAVAILABLE **
| Endpoint Descriptor:
| bLength 7
| bDescriptorType 5
| bEndpointAddress 0x82 EP 2 IN
| bmAttributes 3
| Transfer Type Interrupt
| Synch Type None
| Usage Type Data
| wMaxPacketSize 0x0010 1x 16 bytes
| bInterval 8
Reviewed-by: Marek Vasut <marex@denx.de>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Janne Grunau <j@jannau.net>
1 file changed