This patch set adds support for high-speed USB (EHCI) controllers. I've tested this on my epia-cn machine. The EHCI support noticeably decreases the time required to boot from a USB drive.
This support includes the code necessary to hand off full/low speed devices to "companion controllers" (both uhci and ohci). It also supports full/low speed devices attached to high-speed hubs.
This is an initial implementation, but I think it's ready for more wide spread testing. Feedback is welcome.
-Kevin
Kevin O'Connor (5): Dynamically allocate USB controller structures. Reduce size of USB 'struct uhci_td'. Minor - USB OHCI interrupt queue should be one larger. Some USB UHCI and OHCI fixes and cleanups. Add USB EHCI controller support.
Makefile | 2 +- src/config.h | 2 + src/usb-ehci.c | 751 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/usb-ehci.h | 173 +++++++++++++ src/usb-hub.c | 3 +- src/usb-hub.h | 2 + src/usb-ohci.c | 232 ++++++++++-------- src/usb-ohci.h | 3 +- src/usb-uhci.c | 214 +++++++++------- src/usb-uhci.h | 5 +- src/usb.c | 82 +++++-- src/usb.h | 31 +-- 12 files changed, 1261 insertions(+), 239 deletions(-) create mode 100644 src/usb-ehci.c create mode 100644 src/usb-ehci.h