XHCI: Endpoint Ring does not work on real hardware

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
SanderR
Member
Member
Posts: 70
Joined: Tue Aug 30, 2016 1:31 pm
Libera.chat IRC: SDR

XHCI: Endpoint Ring does not work on real hardware

Post by SanderR »

Hello everyone,

I am working on XHCI again and I was trying to make the XHCI driver work on real hardware.
I managed to make it working untill the point that I want to get the GET_DESCRIPTOR command.
In the emulator, it does exactly what I want: an object is placed on the event ring and there is a value in the buffer.
On real hardware, nothing seems to happen.

I decided to make a dump of the element the XHCI hardware made for the bcbaap and everything is 0 except Context Entries which is 1, Root hub port number,which is 1, Speed which is 4 and slotstate which is 1.
I got the feeling I am doing something wrong, but I have no idea what I did wrong and if there is any good debugging tool for this.

The following link goes to the code and to the location where I do the action:
https://github.com/AdeRegt/SanderOSUSB/ ... ci.c#L1041

I hope someone can tell me what I am doing wrong.

Thank you in advantage!
User avatar
Candy
Member
Member
Posts: 3882
Joined: Tue Oct 17, 2006 11:33 pm
Location: Eindhoven

Re: XHCI: Endpoint Ring does not work on real hardware

Post by Candy »

Your repo is still private. Not sure if I can help with this really...
SanderR
Member
Member
Posts: 70
Joined: Tue Aug 30, 2016 1:31 pm
Libera.chat IRC: SDR

Re: XHCI: Endpoint Ring does not work on real hardware

Post by SanderR »

Thank you for checking out on this post.
I closed the branch(this is why it looked like a private project) but this is the latest branch for this issue:
https://github.com/AdeRegt/SanderOSUSB/ ... dev/xhci.c
I found out that on real hardware the doorbell is working on this endpoint ring. but it returns a error and floods my system with interrupts without a number in USBSTS. I try to do it without interrupts, as you can see in the code. I hope you can help me seeing what is wrong.

Thanks.
Post Reply