-
-
Notifications
You must be signed in to change notification settings - Fork 9
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
Allow updating single fields of InterrupterRegisterSet #142
Conversation
Thank you for the PR. I'm going to go on a trip for three days from tomorrow. I'll check this PR after that. |
I appreciate your patience. I plan to release two versions:
Could you split the two things and send another PR for the renaming? |
Thank you for #143. Could you rebase this PR? |
d595ee5
to
9f41a78
Compare
This is necessary to be able to update ERDP without confusing the controller (in QEMU, at least).
Thank you. The code looks good. I'll check this PR with my OS later. Meanwhile, could you apply |
Thank you. There are some Clippy warnings: https://github.com/rust-osdev/xhci/runs/7940871377?check_suite_focus=true |
Thanks for the fix. The code looks good to me. I'm still trying to try this PR with my OS, but (un)fortunately, this PR revealed a defect in my OS. I'm struggling to fix it, but I'll merge this PR anyway if I can't fix it shortly. By the way, I've figured out why the old API confused QEMU. The description of ERSTBA which is on page 428 of xHCI specification 1.2 says:
Thus, writing to any register in an interrupter register set made an event ring reset. |
It does work with USB keyboard, though I haven't tried other devices yet. |
Thank you. Sorry for the inconvenience, but please wait one or two days. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I confirmed this PR with my OS, and it works! Thank you for your contributions and patience!
I'm sorry, but I left a comment. After resolving it, I'll release 0.9.0.
Thanks! I'll release 0.9.0 soon. |
Published as 0.9.0. |
This is necessary to be able to update ERDP without confusing the controller (in QEMU, at least).
For example, this code works:
But this doesn't (which is what the old API effectively did):
Since this is an API break I also took the liberty to rename InterruptRegisterSet to the technically correct InterrupterRegisterSet. I added a type alias to reduce confusion.
Fixes #115