The USB controller is in the ARM chip.
Okay, are there any specs for the hardware/api/asm instructions that anyone knows of? And is this the PXA or the SA, or both?
Another problem is power - the host or hub provides it. You would have to hack in a 5 volt power to both target devices from somewhere.
The power's not a major issue - it's always possible to supply that externally, and with a battery powered device this is always going to be a possible issue anyway. I was really interested in what you call "bit-banging" and whether this would be possible.
I've been doing some digging of my own, but still need to learn more; but from what you say it's the timing (or rather being able to provide the timing signals or signals at the correct times, etc.) which will cause the issues?
I agree with iamasmith that if it comes down to having to clock the hardware speed and adjust the assembly accoringly to ensure that the timing is correct it's really a non-starter, but I live in hope that this might not be necessary ;-)
My real issue is that I don't know what the hardware differences are between the host and client chips and their functionality; the same goes for the software (I need to dig out the kernel source and take a look).
The new USB 2.0 chips that can do peer-to-peer have the extra modes and registers to make this work.
Yes, I realise this, but it was my understanding that only basic hardware is actually needed and that the rest can be performed in software (should one so desire - and I'm certainly interested ;-))
Theoretically, someone could come up with a USB "null modem" that would be a pair of hosts with some intelligence that would simply echo USB Serial (and maybe network) across the two host ports.
Or would it be easier to implement the On-the-go part of the USB spec (which can still runa t slow speed iirc), as this should be more similar to the current client setup than a complete host.
Si
P.S.
I won't go into deep theoretical possibilities (changing the USB ports to digitial I/O, adding RTLinux (real-time extensions) and bit-banging the USB host signals).
I'd be interested, as, I'm sure, would others. I'm always happy to learn :-)