Hi Gerd,
Have you had a chance to review the XHCI branch I've been testing? https://github.com/KevinOConnor/seabios/commits/xhci-testing
Beyond a general review, I have a few questions on the XHCI code:
1 - It looks like usb-xhci.c is missing a copyright. Are you okay if I add one that looks like what you have on ahci.c?
2 - What is the mdelay(100) in configure_xhci() for? I don't understand the comment there. Also, any delay should probably be an msleep(), so that seabios can continue to bring up other devices. (An mdelay() doesn't let other threads run.)
3 - In the original code xhci_hub_disconnect() free'd the xhci slot for a device, but this doesn't look right to me as there can be more than one slot for a given port (in the case of a hub). The testing branch above never free's slots now - do you have any thoughts on how slot allocation/free'ing should be done?
4 - In the testing branch above, I added a patch to make hubs work (see "xhci: Hack to get hubs working."). This further overloads xhci_alloc_pipe() though. Do you think that is okay or do you think there is a better way to catch hub registration so that the xhci controller knows about it?
-Kevin