There is some preliminary usb3.0 code from years ago, all non working or not tied together.
I would delete the current xhci driver and just take some code from it (PCI interrupt part and enumeration) USB3.0 uses the newer style of pci interrupt system and I'm not sure if it is implemented on Aros. You can make it work with the legacy interrupt system but then only one event ring can be used, not optimal (should be in the xhci.driver).
I also added then the ability to read pci extended configuration space (needs updating) It could be usefull.
Also the hubss class (roothub code resides there also) needs to be written as of now it is just a copy of the hub.class Also the driver needs to have alignment memory allocator as most of the memory used by the usb3.0 driver has to be aligned in certain ways. Why do we not have a common code for it in some rom library? Realtime operating systems avoid memory allocations as that is one place that can screw things up, now we have to implement aligned allocations per usage needs. Would it not be better to have such code in only one place?
My plan was as above, delete the xhci driver and base the usb3.0 driver code on vusbhc driver, main purpose for the hosted virtual usb host controller driver (VUSBHC) was that I could more easily add the usb3.0 code to Poseidon and develop other usb class drivers (roothub agnostic code)
VUSBHC takes the usb ports from Linux (only one and the one port is that which gets a device plugged in) using libusb and then one could write all the higher level stuff (roothub code) for Poseidon and once that is implemented one could write the native usb3.0 driver.
There are some redundant and needles things in usb drivers, for example the driver has to set a flag for the usb1 or usb2. I added usb3 flag there also but there are much more cleaner ways to code things, just look what is in the roothub structure...
vusbhc.device should have enough information on how to more cleanly code a usb3.0 driver, If I would do it again I would split it apart as now it has both usb(2) and usb3 code.
Usb3.0 is much cleaner solution and much more easier than the previous protocols, all are driven by the rings (event etc.) Also the isochorous stuff is much much easier as the chipset does much more.