On Mon, Apr 9, 2012 at 7:14 AM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: >> USB runtime PM seems to focus on the individual USB devices, and does >> not allow for dynamically suspending the entire host controller >> AFAICT. > > That is not correct. USB host controllers _can_ be suspended. (Not > all of them; many of the platform drivers don't implement controller > suspend. But some of them do, and almost all of the PCI-based drivers > do.) I am not clear on what is actually happening at the chip level in these cases? i.e. is the entire USB core getting clock gated or power gated, such that it is completely non-responsive to register accesses or device hotplug? Or is the driver just shutting down a few tiny pieces of the hardware? Is there a way to initiate USB runtime suspend on the host controller even if there are devices plugged into the downstream ports? >> In general I don't >> see any facility where the application can explicitly tell the PM core >> to suspend a device (incurring a potential loss of functionality, such >> as hot plug/unplug detection). > > Right; there is no way to do this. The OS will suspend a device only > when it believes it is safe to do so. Assuming that somebody is able to come up with a satisfactory implementation, are you open to allowing a "user-initiated suspend" mode, in addition to "opportunistic suspend"? >> d) Or should I just go back to using "rmmod"? > > I don't see how rmmod will save any power. rmmod allows me to forcibly shut down the controller, cleanly (in theory) disconnecting any active devices and preventing the kernel from touching the registers. After rmmod, I can then tell the SoC to put the whole core into an unresponsive, low power state. This is not a very clean way of doing things, so I would prefer to use runtime PM if at all possible. But I don't think my hardware is designed in a way that is compatible with "opportunistic suspend." Thanks. _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/linux-pm