On Thu, 6 Jan 2005, David Brownell wrote: > > In any case this isn't under our control. > > Devices are resumed in the same order they were detected initially. I > > think the only way to solve this problem is to find a workaround for EHCI > > controllers that act weird when they resume. > > The problem could well be in UHCI instead, or BIOS.
I don't see how. Nothing in the UHCI driver is aware of the existence of that flip-flop or does anything to change it. It's entirely under control of the EHCI driver. Is it possible that the hardware or the BIOS is changing the flip-flop? That's why I suggested seeing what happens when ehci-hcd isn't loaded; if some other component changed the flip-flop you would expect the test to fail in the same way. Instead it succeeded. > The only thing that a quick scan of the ehci resume > code suggested might be a problem is the line of code > in ehci-hub.c::ehci_resume() that checks for whether > the PORT_SUSPEND bit is set. Maybe that should be > checking for (PORT_SUSPEND|PORT_OWNER)? I guess that might work. Is there any reason why PORT_SUSPEND would be set if PORT_OWNER was set? It's also possible that the flip-flop is changed during the suspend operation rather than the resume operation. Perhaps Oliver can add some debugging lines to print the values of the regs->port_status[] entries in those three loops (one in ehci_hub_suspend and two in ehci_hub_resume). Alan Stern ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel