]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/usb/gadget/atmel_usba_udc.c
Merge git://git.infradead.org/battery-2.6
[karo-tx-linux.git] / drivers / usb / gadget / atmel_usba_udc.c
index d623c7bda1f610741dce00ee3ab0216cccc19303..b5e20e873cbad09bbebb7134929cf97880532bea 100644 (file)
@@ -1789,7 +1789,8 @@ out:
        return IRQ_HANDLED;
 }
 
-int usb_gadget_register_driver(struct usb_gadget_driver *driver)
+int usb_gadget_probe_driver(struct usb_gadget_driver *driver,
+               int (*bind)(struct usb_gadget *))
 {
        struct usba_udc *udc = &the_udc;
        unsigned long flags;
@@ -1812,7 +1813,7 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
        clk_enable(udc->pclk);
        clk_enable(udc->hclk);
 
-       ret = driver->bind(&udc->gadget);
+       ret = bind(&udc->gadget);
        if (ret) {
                DBG(DBG_ERR, "Could not bind to driver %s: error %d\n",
                        driver->driver.name, ret);
@@ -1841,7 +1842,7 @@ err_driver_bind:
        udc->gadget.dev.driver = NULL;
        return ret;
 }
-EXPORT_SYMBOL(usb_gadget_register_driver);
+EXPORT_SYMBOL(usb_gadget_probe_driver);
 
 int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
 {
@@ -2014,6 +2015,9 @@ static int __init usba_udc_probe(struct platform_device *pdev)
                        } else {
                                disable_irq(gpio_to_irq(udc->vbus_pin));
                        }
+               } else {
+                       /* gpio_request fail so use -EINVAL for gpio_is_valid */
+                       ubc->vbus_pin = -EINVAL;
                }
        }