Re: Non-enumerable devices on USB and other enumerable buses

From: Mark Brown
Date: Mon Aug 12 2013 - 05:52:31 EST

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

> > 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.

Attachment: signature.asc
Description: Digital signature