Add basic support for xHCI USB controllers. The code is based on seabios implementation, but has been heavily modified to match grubs internals.
Changes done in version 2: * Code cleanup * Code style fixes * Don't leak memory buffers * Compile without warnings * Add more defines * Add more helper functions * Don't assume a 1:1 virtual to physical mapping * Flush cachelines after writing buffers * Don't use hardcoded page size * Proper scratchpad register setup * xHCI bios ownership handoff Tested: * Qemu system x86_64 * virtual USB HID keyboard (usb-kbd) * virtual USB HID mass storage (usb-storage) * Intel C246 integrated xHCI (Supermicro X11SSH-F) * iKVM HID keyboard * USB3 HID mass storage (controller root port) * External USB HID keyboard TODO: * Test on more hardware * Test on USB3 hubs * Support for USB 3.1 and USB 3.2 controllers Patrick Rudolph (6): grub-core/bus/usb: Parse SuperSpeed companion descriptors usb: Add enum for xHCI usbtrans: Set default maximum packet size grub-core/bus/usb: Add function pointer for attach/detach events grub-core/bus/usb/usbhub: Add new private fields for xHCI controller grub-core/bus/usb: Add xhci support Makefile.am | 2 +- grub-core/Makefile.core.def | 7 + grub-core/bus/usb/ehci.c | 2 + grub-core/bus/usb/ohci.c | 2 + grub-core/bus/usb/serial/common.c | 2 +- grub-core/bus/usb/uhci.c | 2 + grub-core/bus/usb/usb.c | 44 +- grub-core/bus/usb/usbhub.c | 55 +- grub-core/bus/usb/usbtrans.c | 2 + grub-core/bus/usb/xhci-pci.c | 195 +++ grub-core/bus/usb/xhci.c | 2383 +++++++++++++++++++++++++++++ grub-core/commands/usbtest.c | 2 +- grub-core/disk/usbms.c | 2 +- grub-core/term/usb_keyboard.c | 2 +- include/grub/usb.h | 18 +- include/grub/usbdesc.h | 11 +- 16 files changed, 2697 insertions(+), 34 deletions(-) create mode 100644 grub-core/bus/usb/xhci-pci.c create mode 100644 grub-core/bus/usb/xhci.c -- 2.26.2 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel