Page 1 of 1

OHCI 1000 interrupts per second, is it normal?

Posted: Sun Jun 30, 2024 4:18 am
by alex1237424
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?