From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Chen Subject: Re: [PATCH 1/3] usb: core: add power sequence for USB devices Date: Fri, 4 Mar 2016 10:37:50 +0800 Message-ID: <20160304023750.GF30272@shlinux2.ap.freescale.net> References: <1456999276-6315-1-git-send-email-peter.chen@nxp.com> <1456999276-6315-2-git-send-email-peter.chen@nxp.com> <20160304020242.GB30272@shlinux2.ap.freescale.net> <20160304022305.GB20597@lunn.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20160304022305.GB20597-g2DYL2Zd6BY@public.gmane.org> Sender: linux-usb-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Andrew Lunn Cc: Rob Herring , Mark Rutland , Peter Chen , "Maciej S. Szmigiero" , Arnd Bergmann , Pawel Moll , "devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Greg Kroah-Hartman , Sascha Hauer , Linux USB List , troy.kisky-Q5RJGjKts06CY9SHAMCTRUEOCMrvLtNR@public.gmane.org, Alan Stern , Philipp Zabel , Fabio Estevam , "linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org" List-Id: devicetree@vger.kernel.org On Fri, Mar 04, 2016 at 03:23:05AM +0100, Andrew Lunn wrote: > On Fri, Mar 04, 2016 at 10:02:42AM +0800, Peter Chen wrote: > > On Thu, Mar 03, 2016 at 02:54:55PM -0600, Rob Herring wrote: > > > On Thu, Mar 3, 2016 at 4:01 AM, Peter Chen wrote: > > > > Some hard-wired USB devices need to do power sequence to let the > > > > device work normally, the typical power sequence like: enable USB > > > > PHY clock, toggle reset pin, etc. But current Linux USB driver > > > > lacks of such code to do it, it may cause some hard-wired USB devices > > > > works abnormal or can't be recognized by controller at all. > > > > > > > > In this patch, it will do power on sequence at hub's probe for all > > > > devices under this hub (includes root hub) if this device is described > > > > at dts and there is a phandle "usb-pwrseq" for it. At hub_disconnect, > > > > it will do power off sequence. > > > > > > > > Signed-off-by: Peter Chen > > > > --- > > > > .../devicetree/bindings/usb/usb-device.txt | 41 +++++- > > > > drivers/usb/core/Makefile | 2 +- > > > > drivers/usb/core/hub.c | 32 +++++ > > > > drivers/usb/core/pwrseq.c | 149 +++++++++++++++++++++ > > > > include/linux/usb/of.h | 10 ++ > > > > 5 files changed, 232 insertions(+), 2 deletions(-) > > > > create mode 100644 drivers/usb/core/pwrseq.c > > > > > > > > diff --git a/Documentation/devicetree/bindings/usb/usb-device.txt b/Documentation/devicetree/bindings/usb/usb-device.txt > > > > index 1c35e7b..c7a298c 100644 > > > > --- a/Documentation/devicetree/bindings/usb/usb-device.txt > > > > +++ b/Documentation/devicetree/bindings/usb/usb-device.txt > > > > @@ -13,8 +13,37 @@ Required properties: > > > > - reg: the port number which this device is connecting to, the range > > > > is 1-31. > > > > > > > > +Optional properties: > > > > +- usb-pwrseq: the power sequence handler which need to do before this USB > > > > + device can work. > > > > +- clocks: the input clock for USB device. > > > > +- clock-frequency: the frequency for device's clock. > > > > +- reset-gpios: Should specify the GPIO for reset. > > > > +- reset-duration-us: the duration in microsecond for assert reset signal. > > > > > > So we sorted out how to describe USB devices in DT, but now we don't > > > use it? > > > > We only know USB device after USB bus finds it, but without power > > on sequence, the USB bus can't find it. > > Not really true. Device tree says it exists, you just cannot see it > yet. The fact it is in device tree means it is soldered on the board > and really is there. So when the host controller enumerates the bus, > it should run the power sequence of all child nodes to make them > appear. > Yes, it is my patch doing. My words "We only know USB device after USB bus finds it" means the USB common code only create the USB device, and assign its .of_node after USB bus finds it. -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html