[PATCH v2 0/6] USB keyboard improvements for asahi / desktop systems

Neal Gompa neal at gompa.dev
Sun Mar 17 12:26:19 CET 2024


On Sun, Mar 17, 2024 at 4:07 AM Janne Grunau via B4 Relay
<devnull+j.jannau.net at kernel.org> wrote:
>
> Apple USB Keyboards from 2021 need quirks to be useable. The boot HID
> keyboard protocol is unfortunately not described in the first interface
> descriptor but the second. This needs several changes. The USB keyboard
> driver has to look at all (2) interface descriptors during probing.
> Since I didn't want to rebuild the USB driver probe code the Apple
> keyboards are bound to the keyboard driver via USB vendor and product
> IDs.
> To make the keyboards useable on Apple silicon devices the xhci driver
> needs to initializes rings for the endpoints of the first two interface
> descriptors. If this is causes concerns regarding regressions or memory
> use the USB_MAX_ACTIVE_INTERFACES define could be turned into a CONFIG
> option.
> Even after this changes the keyboards still do not probe successfully
> since they apparently do not behave HID standard compliant. They only
> generate reports on key events. This leads the final check whether the
> keyboard is operational to fail unless the user presses keys during the
> probe. Skip this check for known keyboards.
> Keychron seems to emulate Apple keyboards (some models even "re-use"
> Apple's USB vendor ID) so apply this quirk as well.
>
> Some devices like Yubikeys emulate a keyboard. since u-boot only binds a
> single keyboard block this kind of devices from the USB keyboard driver.
>
> Signed-off-by: Janne Grunau <j at jannau.net>
> ---
> Changes in v2:
> - rewritten commit message for "[PATCH 2/6] usb: xhci: Set up endpoints for the first 2 interfaces"
> - Replaced the usb keyboard Yubikey block with an env based USB device blocklist
> - Use "-EINVAL" as return value in "[PATCH 3/6] usb: xhci: Abort transfers with unallocated rings"
> - added "Reviewed-by:" tags
> - Link to v1: https://lore.kernel.org/r/20240221-asahi-keyboards-v1-0-814b2e741790@jannau.net
>
> ---
> Janne Grunau (6):
>       usb: xhci: refactor xhci_set_configuration
>       usb: xhci: Set up endpoints for the first 2 interfaces
>       usb: xhci: Abort transfers with unallocated rings
>       usb: Add environment based device blocklist
>       usb: kbd: support Apple Magic Keyboards (2021)
>       usb: kbd: Add probe quirk for Apple and Keychron keyboards
>
>  common/usb.c                 |  56 +++++++++++++++++++
>  common/usb_kbd.c             |  61 +++++++++++++++++++--
>  doc/usage/environment.rst    |  12 +++++
>  drivers/usb/host/xhci-ring.c |   5 ++
>  drivers/usb/host/xhci.c      | 126 +++++++++++++++++++++++++++----------------
>  include/env_default.h        |  11 ++++
>  include/usb.h                |   6 +++
>  7 files changed, 227 insertions(+), 50 deletions(-)
> ---
> base-commit: 37345abb97ef0dd9c50a03b2a72617612dcae585
> change-id: 20240218-asahi-keyboards-f2ddaf0022b2
>

Series LGTM. Thanks for this! :)

Reviewed-by: Neal Gompa <neal at gompa.dev>


-- 
真実はいつも一つ!/ Always, there's only one truth!


More information about the U-Boot mailing list