Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758309AbcJYIZg (ORCPT ); Tue, 25 Oct 2016 04:25:36 -0400 Received: from mail-qk0-f172.google.com ([209.85.220.172]:38935 "EHLO mail-qk0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752259AbcJYIZc (ORCPT ); Tue, 25 Oct 2016 04:25:32 -0400 MIME-Version: 1.0 In-Reply-To: <672c1f1a-58b7-6947-7fb2-acd38fab8597@lechnology.com> References: <20161024164634.4330-1-ahaslam@baylibre.com> <20161024164634.4330-13-ahaslam@baylibre.com> <672c1f1a-58b7-6947-7fb2-acd38fab8597@lechnology.com> From: Axel Haslam Date: Tue, 25 Oct 2016 10:24:50 +0200 Message-ID: Subject: Re: [PATCH/RFT v2 12/17] USB: ochi-da8xx: Use a regulator for vbus/overcurrent To: David Lechner Cc: Greg KH , Johan Hovold , robh+dt@kernel.org, Sekhar Nori , Alan Stern , Kevin Hilman , Sergei Shtylyov , Mark Brown , Alexandre Bailon , linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3008 Lines: 86 On Tue, Oct 25, 2016 at 3:39 AM, David Lechner wrote: > On 10/24/2016 11:46 AM, ahaslam@baylibre.com wrote: >> >> From: Axel Haslam >> >> Currently, the da8xx ohci driver uses a set of gpios and callbacks in >> board files to handle vbus and overcurrent irqs form the power supply. >> However, this does not play nice when moving to a DT based boot were >> we wont have board files. >> >> Instead of requesting and handling the gpio, use the regulator framework >> to take care of enabling and disabling vbus power. >> This has the benefit >> that we dont need to pass any more platform data to the driver: >> >> These will be handled by the regulator framework: >> set_power -> regulator_enable/regulator_disable >> get_power -> regulator_is_enabled >> get_oci -> regulator_get_mode >> ocic_notify -> regulator notification >> >> We can keep the default potpgt and use the regulator start delay instead: >> potpgt -> regulator startup delay time >> >> The hawk board does not have a GPIO/OVERCURRENT gpio to control vbus, >> (they should not have been decleared/reserved) so, just remove those >> definitions from the hwk board file. >> >> Signed-off-by: Axel Haslam >> --- > > > > How do you recover after an overcurrent event? > > I have configured a fixed-regulator using device-tree, but similar to the > configuration in the board files here. However, when I shorted out the VBUS > and caused an overcurrent event, I see nothing in the kernel log saying that > there was an overcurrent event and after I remove the short, the regulator > is never turned back on. > > You should have the patch to fix gpiolib, and you should declare the over current gpio on the regulator as such: (if the pin is enabled high you should add oc-active-high); vbus_fixed: fixed-regulator-vbus { compatible = "regulator-fixed"; gpio = <&gpio 109 0>; oc-gpio = <&gpio 36 0>; regulator-boot-on; enable-active-high; regulator-name = "vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; }; Question: Do you see that the over current gpio was requested in debugfs/gpio? and, do you see the interrupt in /proc/interrupts? If you unplug and plug in back the usb device it should work again. also you can unbind and bind it should also start to work: something like: echo usb1 >/sys/bus/usb/drivers/usb/unbind echo usb1 >/sys/bus/usb/drivers/usb/bind > >> @@ -163,7 +198,6 @@ static int ohci_da8xx_hub_control(struct usb_hcd *hcd, >> u16 typeReq, u16 wValue, >> u16 wIndex, char *buf, u16 wLength) >> { >> struct device *dev = hcd->self.controller; >> - struct da8xx_ohci_root_hub *hub = dev_get_platdata(dev); > > > nit: unnecessary whitespace change > >> int temp; >> >> switch (typeReq) { > >