On Sun, Aug 11, 2013 at 09:53:01PM -0400, Alan Stern wrote: > On Sun, 11 Aug 2013, Mark Brown wrote: > > One example that's bugging me right now is that on the Insignal Arndale > > platform there's a USB hub connected to one of the USB ports on the SoC > > (not as a PHY, it seems we also need the internal PHY running to talk to > > the device). The hub needs to be "plugged" into the SoC after the SoC > > USB controller has started with some GPIOs so we need to tell the system > > that the hub exists and needs to be synchronised with the USB controller. > On the surface, this seems like a particularly simple case. Why wait > until the SoC's USB controller has started? Why not "plug in" the hub > via the GPIOs right from the beginning? I tried that, it doesn't seem to work - for some reason it seems that the hub is only successfully enumerated if it starts after its parent is running. I don't know enough about USB to speculate on why that might be, the GPIOs are brining the device out of reset not applying power or anything. > > Another case that's going to be problematic once it's in mainline is > > Slimbus - this is a bus used in some embedded audio subsystems which is > > enumerable in a similar manner to USB but where the devices on the bus > > are normally powered up only on demand (causing them to hotplug when > > used and unplug when idle) and have at least interrupt lines wired to > > the SoC using a normal interrupt outside the enumerable bus. > That is indeed more difficult, because it requires geniune cooperation > between the bus and platform subsystems. Yeah. You might want to do the same with for example a USB network controller when you're in flight only mode, that seems to be one of the more common reasons for doing this sort of thing with USB.