On 13.03.2013, at 18:28, Doug Anderson wrote: > Alexander, > > On Tue, Mar 12, 2013 at 6:09 PM, Alexander Graf <agraf@xxxxxxx> wrote: >> - err = gpio_request_one(gpio, GPIOF_OUT_INIT_HIGH, "ehci_vbus_gpio"); >> - if (err) >> + /* reset pulls the line down, then up again */ >> + err = gpio_request_one(gpio, GPIOF_OUT_INIT_LOW, "ehci_vbus_gpio"); >> + if (err) { >> dev_err(&pdev->dev, "can't request ehci vbus gpio %d", gpio); >> + return; >> + } >> + mdelay(1); >> + __gpio_set_value(gpio, 1); >> + gpio_free(gpio); > > Freeing the gpio is a little on the iffy side since you actually care > about keeping the value. Perhaps you can change this to > devm_gpio_request_one() and avoid the free? I was about to submit a > patch to do just that (since otherwise you run into trouble if you > ever defer the probe) but then ran across your patch. I could also just return it when the function exits and only free it when we exit the probe function with a negative value. The reason I put it in here was that on probe deferral, the pin simply gets blocked. However, I could probably also just completely take the gpio_free() out of this patch and resubmit, as it should be pretty much unrelated. Then you can patch it properly. Alex > > Thanks! > > -Doug -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html