From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758809AbbGHT6Z (ORCPT ); Wed, 8 Jul 2015 15:58:25 -0400 Received: from iolanthe.rowland.org ([192.131.102.54]:56179 "HELO iolanthe.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1758261AbbGHT6P (ORCPT ); Wed, 8 Jul 2015 15:58:15 -0400 Date: Wed, 8 Jul 2015 15:58:14 -0400 (EDT) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: Julius Werner cc: Felipe Balbi , Douglas Anderson , Greg Kroah-Hartman , John Youn , "linux-usb@vger.kernel.org" , Chris Zhong , Heiko Stuebner , Andrew Bresticker , Alexandru Stan , lyz , "open list:ARM/Rockchip SoC..." , LKML Subject: Re: [REPOST PATCH 3/3] USB: dwc2: Don't turn off the usbphy in suspend if wakeup is enabled In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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