Hi, Norman!

I've reimplemented the writes{l,b,w} calls to perform proper IO port access
as opposed to using memcpy, and now usb works without ugly hacks.
As for the io_port driver, it is completely irrelevant in this case for
musb driver is not pci, and dde_kit had no previous implementation of
writes{l,b,w} for ARM, so we never ended up calling out{l,b,w} functions. Moreover,
io_port expects the addresses to be limited to 16 bits which is ok for x86 reserved
range but will blow up on anything else when used with arbitrary IO range.

For now, I'll finish porting ethernet or rndis usb gadget and prepare the
patches for the dde kit. Currently I would like to make usb otg a separate
service inside the usb_drv (just as nic and input) for simplicity, but
I would like to hear your opinion on how we should rework the makefile
and dde_linux to make it possible to build drivers into separate binaries.
Also, in future it would be nice to add more granularity to the platform
code in dde_kit as well as in other genode services because eventually
we'll have to think of how to keep multiple boards with the same SoC in
one tree.

One thing we've found is that the at the header preprocessing stage
genode makefile fails on the "musb_regs.file" at the following line:
#include "tusb6010.h" /* Needed "only" for TUSB_EP0_CONF */
It is confused by the quotes there. If we remove them, it works fine. If
we do not, a strace shows that an emtpy line appears somewhere, as
if the opening quotation mark terminates a string somewhere in the
preprocessing stage.

Btw, I've found some time to write down my thoughts about what I want to
see in genode one day, but it had boiled down to what's being discussed
here lately - power management and graceful service restart on errors
(http://t.co/14KBWz7X)

Have a nice day!

--
Regards, Alexander