Hello all,
I am currently starting to port the Linux drivers necessary to
get USB (both Host and OTG) working on the USB armory. Given my current
schedule I hope to have something working by the end of the month (or at
least that is my goal).
First off, some notes from my investigation. The USB armory (and in
general imx53) uses the Chipidea USB HCD driver in Linux. Confusingly,
this is not the 'fsl' driver that I was originally looking at as that
is for PPC arch only (even though uBoot calls it the 'fsl' driver, I
guess because the register layout is the same).
Concretely, this means I need to bring the 'drivers/usb/chipidea'
directory into the DDE Linux repo. The actual driver entry point is in
'ci_hdrc_imx.c' (the same driver as imx27). The imx53 has a built-in PHY
and no IOMUX pins for both the host or OTG controller, which is nice.
For host only functionality, there should be no special hardware
initialisation necessary beyound a bus reset, because mainline uBoot
seems to include the necessary bits to initialise the clocks and the
controller by default (not tested though).
For OTG functionality on the controller side it should just be changing
the mode and the register base to the OTG controller. I'm not sure yet
whether it's possible just to use the OTG controller for both the host
and device mode though according to the TRM it should be possible.
Is anybody else working on supporting the USB armory USB currently (just
to make sure)?
My bigger question is of course - what shall be done about the USB
gadgets necessary to have things like CDC ethernet or serial working. Of
course we can port them from Linux initially but I guess because some of
them will be simple (? like serial, hopefully) it would make perhaps
make sense to make a native Genode port. But I have not yet thought
about this in depth because I want to get the controller working first.
The Wandboard uses the same USB driver but it needs some code to control
the PHY and I don't know about the pin muxing.
Vladimir