Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

USB IRQ integration #613

Merged
merged 19 commits into from
Jan 2, 2025
Merged

USB IRQ integration #613

merged 19 commits into from
Jan 2, 2025

Conversation

bunnie
Copy link
Member

@bunnie bunnie commented Jan 1, 2025

This is for handling plug in/plug out detection and robustifying the stack against those conditions.

WIP for now, mostly just to help resolve merge conflicts as we've got a couple changes in flight in parallel.

this all seems to work as expected now, next up: hooking the
interrupt handler for the IOX.

Probably should put the actual IRQ router in the HAL so that multiple
services can configure it, but have the handler actually invoke
a function in our address space.
the Iox block can register up to 8 interrupts on any of the
GPIO pins on the device. All the interrupts get OR'd together
to generate a single interrupt to the CPU, which has to be
disambiguated and forwarded on to the registering server as an
event.

Due to the protection model of Xous, the configuration of
the IRQ has to be centralized, and the handling is done with
a message. This means that the actual time from the interrupt
to the handling can be a bit variable, up to several ms, so
this method isn't suitable for hard real time.

For hard real time stuff, see the implementation in the USB
stack for Cramium, which has a very timing sensitive IRQ
handler requirement.
CGU has some additional dividers to help with ATPG and other things.
@bunnie bunnie marked this pull request as ready for review January 2, 2025 20:13
@bunnie bunnie merged commit e0d1085 into main Jan 2, 2025
2 checks passed
@bunnie bunnie deleted the usb-irq branch January 2, 2025 20:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant