[Cbe-oss-dev] [PATCH 1/5] usb: Fix PS3 EHCI suspend

Geoff Levand geoff at infradead.org
Fri Dec 2 11:07:14 EST 2011


On Wed, 2011-11-23 at 22:40 -0500, Alan Stern wrote: 
> > > > > Does the controller do this if only one port is suspended and the other 
> > > > > is not enabled?  What if neither port is enabled?
> > > > 
> > > > I have not tested these.
> > > 
> > > It would be nice to know.  Is there any way you can test it?  If those
> > > hubs are internal and permanently connected then I guess you can't.  Do 
> > > the controllers really have only two ports?
> > 
> > They are internal, and only two ports.  The PS3 has an additional
> > USB hub inside its case to provide 4 external ports.
> 
> So in theory you could leave the port that's not attached to the 
> internal hub unconnected, and wait for the internal hub to be 
> suspended.  At that point one port would be suspended and the other 
> disabled.  Does the root hub get stopped then?
> 
> Actually, this doesn't really matter.  We'll have to deal with the
> problem either way.  I'm just curious to know the answer.


Sorry I wasn't clear, one of the root hub ports is connected to the
internal hub, and the other is connected to the internal bluetooth
controller, so none are routed outside.

Just if you are interested, some info on the PS3 hardware is here:

http://kernel.mirrors.pair.com/pub/linux/kernel/people/geoff/cell/ps3-linux-docs/ps3-linux-docs-latest/LinuxKernelOverview.html


> Here's one possible approach.  In handshake_on_error_set_halt(), read
> the frame counter before the call to handshake().  If handshake()  
> returns an error then read the frame counter again.  If the value
> hasn't changed, assume the root hub is stopped and return 0.  And of
> course, add some comments explaining why the PS3 controller needs all
> this.
> 
> Admittedly, this will make handshake_on_error_set_halt() inefficient on
> the PS3 (it will have to wait for the full timeout period).  This may
> be unavoidable, given that the driver has no good way to tell when the
> root hub is stopped other than checking the frame counter.

Patch to follow.

-Geoff






More information about the cbe-oss-dev mailing list