Hi guys. I implemented OHCI on some SoC (that also has EHCI) for basic usb/mouse/storage support. I checked some simple os drivers to understand the basic flow of how controller works, and one thing still bothers me. For interrupt transfers I put endpoint descriptors into hcca.interrupt_table, and what is the best way to check the result?
I found that if interrupt endpoint happened, it does not put this endpoint head into hcca.headDone, also no real hardware interrupt is triggered. And those implementations of simple os drivers that I saw, check if any of interrupt endpoint in table has completed flags.
That means that we have to interrupt cpu 1000 times per second and do a check of table with 32 entries each time. Is this the right way of doing it or I am missing some real implementation? And what about EHCI, is it kind of same?
OHCI 1000 interrupts per second, is it normal?
-
- Posts: 3
- Joined: Wed Oct 18, 2023 3:28 pm