I just got a Raspberry Pi 3 and would like to contribute to this. I'm fairly experienced with user mode C programming, but I don't know much about AROS drivers. There are some bare metal USB drivers that have been written, and we could possibly take code from them.

saxplayingpcgeek wrote:I just got a Raspberry Pi 3 and would like to contribute to this. I'm fairly experienced with user mode C programming, but I don't know much about AROS drivers. There are some bare metal USB drivers that have been written, and we could possibly take code from them.

Aros drivers use something that is called a "xxx.device", in an essence it's just a "xxx.library" but it has specific functions to call.

Amiga and Amiga like OS's just call a library function directly via library function jump table. There is no kernel vs. user mode calls with them.

Rasperry uses USB IP-core of something starting with "w" or "v" and ending with "2", I just can't remember the name. There is register files and source codes for it floating around the net.

AROS now uses a USB stack called "Poseidon". There is some documentation for it on the AROS source code "rom/usb/doc" or something

Kalamatee(NicJa) has made some USB driver code in the source archive already, you could look at it or the other USB driver codes (not the xhci, I'll probaply write it from start one once again (it's not functioning)). There is some legal problems regarding the use of OTG functionality with AROS. One is that poseidon has absolutly no code for host class drivers and one that AROS would need to buy a VID/PID license from usb.org (5000€ minimum)

Only the low level hardware driver needs to be implemented, all other is HW-agnostic (HID code etc.) They communicate with the driver via USB stack (Poseidon)

EDIT: The PI uses designware IP-core as stated in the first link you posted.