Here comes a set of six patches to support OHCI controllers in libpayload.
This work was originally started by Leandro Dorilex and we worked together on this. However, his first approach to develop everything from scratch was a little too ambitious and so we decided to take an existing stack from U-Boot (which was again derived from Linux 2.4).
I finished the work on my own now as we urgently need it and Leandro didn't have a proper development environment.
The stack was heavily cleaned up from many legacy code pathes and adopted to libpayload's USB API. Also, U-Boot's stack wasn't aware of any virtual/physical address mappings, so I had to add that.
What's missing at the moment are the implementation bits for interrupt queues and isocronous transfers. The first one should be easy to do as I left in all the functions for it. I just couldn't test it though.
Also unclear is the situation on big endian machines. I only have an Geode based board here which matches the endianess of the USB controller, so I couldn't test that either. Volounteers welcome :)
Best regards, Daniel