Hi again!
I've now have another kind of a problem. While you can clearly see that we now have the control endpoint working and the device (with the zero gadget) is detected by the host.
However, it seems like non-control endpoints are still malfunctioning. Take a look at the log. To me, endpoint numbers are clearly wrong, though I've not figured out the reason for that.
http://pastebin.com/UdPsi8rw http://pastebin.com/xZH62BQ3
Another interesting thing I've noticed is that if we disable LX_VERBOSE_DEBUG, usb fails to work at all due to timeouts. Turns out, some functions that are called around endpoint setup at gadget registration, cause usb to break if we disable debugging. The weird thing is that if we insert an mdelay or a printk, it still does not work, but if the dde_kit_printf is used with color escape sequences, that makes it work.
Do you have any ideas as to what may be happening? That looks strange, especially given that I've explicitely disabled the L2 cache in u-boot. Maybe it's about the time we added l2x0 support for omap4 to fiasco.oc?
For now, I'll keep working on our other projects (that includes rebasing and upstreaming our drivers and writing more omap4 support). One interesting question is how to handle gpio mux for various SoC. I mean, alternate pin functions. Ideally, we should be able to set up all the hardware from Genode, and most SoCs have their GPIO pins multiplexed to multiple functions. Probably the easiest thing is to use strings for pin names, or just integers? Like, "Gpio.set_mux(unsigned pin, string &name)" vs "Gpio.set_mux(unsigned pin, unsigned af)"