FlingOS
FlingOS copied to clipboard
USB Low and Full Speed Device support
Complete the UHCI implementation and then test/bug fix it. So far, a lot of the implementation is there but it isn't quite working.
UHCI Interrupts are now working thanks to bug fix discovered by a user. (IRQ2 needed to be enabled for slave PIC interrupts to occur reliably).
Further fixes including:
- Correctly issuing Slave PIC EOI signal.
- UHCI uses port-mapped I/O not memory-mapped. The "memory map" I/O code was altering the USB Base Address resulting in incorrect ports and thus UHCI failing to configure/start/respond properly.
UHCI driver now responds correctly to valid Control and Bulk transfers. As per rest of USB stack, no isochronous support etc.
Renaming this issue to "USB Low and Full Speed Device support" because now UHCI is working, it appears that low/full speed devices aren't working properly. The USB Driver can correctly obtain device descriptors, set the device address and get config descriptors but it can't get Unicode strings from the device. Also, devices are unrecognized even when they are USB mass storage - a configuration might need to be selected before trying to get full descriptors and strings?
Anyway, UHCI is working. USB Low/Full Speed is now very close to working.