On Wed, 8 Jul 2015, Julius Werner wrote: > > But I don't see how you will make it work when the root hub itself is > > not enabled for wakeup and a non-hub device plugged into one of the > > root hub's ports is enabled. > > > > It seems like you would need a usb_hcd_wakeup_not_needed(hcd, port) > > subroutine. > > We'd just put that in the Tegra platform driver, I guess. Iterate over > all ports, call usb_wakeup_enabled_descendants() on the connected > device (if any) and disable that port's PHY if it returns 0 or wasn't > connected. Since usb_wakeup_enabled_descendants() also counts > do_remote_wakeup from the device itself and is safe to call even on > non-hubs, that should work for all cases. All right, that seems reasonable. But remember not to do this if wakeup is enabled on the root hub -- in that case all the PHYs must remain powered because unplugging and plugging are both wakeup events. Alan Stern