The following is my test series for XHCI. I've gotten it to the point that I can boot from a "super speed" USB flash drive. However, high speed flash drives and low speed keyboard/mouse still don't work for me. Hopefully, when Gerd returns he'll have some insight.
The most notable part of this series is the work to make the code auto-detect and handle 64 byte contexts (which the xhci controller on my e350m1 requires).
The series is also available at: https://github.com/KevinOConnor/seabios/tree/xhci-testing
Gerd Hoffmann (1): xhci: allocate scratch pad buffers
Kevin O'Connor (9): xhci: Use 64bit writes to ERDP register. xhci: Fix incorrect direction setting on status transmissions. xhci: Set the interval parameter on interrupt pipes. xhci: Verify PAGESIZE register before initializing driver. xhci: Allocate and free the xhci inctx structure on each use. xhci: Move set_address code from xhci_control to xhci_alloc_pipe. xhci: Eliminate 'struct xhci_device'. xhci: Support xhci controllers with 64 byte contexts. xhci: Allow the XHCI USB controller to be enabled for coreboot.
src/Kconfig | 2 +- src/hw/usb-xhci.c | 342 +++++++++++++++++++++++++++++------------------------- src/hw/usb-xhci.h | 8 -- src/hw/usb.c | 4 +- src/hw/usb.h | 1 + 5 files changed, 186 insertions(+), 171 deletions(-)