usb: gadget: convert all users to the new udc infrastructure
[deliverable/linux.git] / drivers / usb / gadget / amd5536udc.c
index 95e8138cd48fd9ff9be91f170777f562d3c88ede..70f2b376c86d27d4b4af607d5fa70492560ebd3c 100644 (file)
@@ -1438,10 +1438,15 @@ static int udc_wakeup(struct usb_gadget *gadget)
        return 0;
 }
 
+static int amd5536_start(struct usb_gadget_driver *driver,
+               int (*bind)(struct usb_gadget *));
+static int amd5536_stop(struct usb_gadget_driver *driver);
 /* gadget operations */
 static const struct usb_gadget_ops udc_ops = {
        .wakeup         = udc_wakeup,
        .get_frame      = udc_get_frame,
+       .start          = amd5536_start,
+       .stop           = amd5536_stop,
 };
 
 /* Setups endpoint parameters, adds endpoints to linked list */
@@ -1955,7 +1960,7 @@ static int setup_ep0(struct udc *dev)
 }
 
 /* Called by gadget driver to register itself */
-int usb_gadget_probe_driver(struct usb_gadget_driver *driver,
+static int amd5536_start(struct usb_gadget_driver *driver,
                int (*bind)(struct usb_gadget *))
 {
        struct udc              *dev = udc;
@@ -2002,7 +2007,6 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver,
 
        return 0;
 }
-EXPORT_SYMBOL(usb_gadget_probe_driver);
 
 /* shutdown requests and disconnect from gadget */
 static void
@@ -2027,7 +2031,7 @@ __acquires(dev->lock)
 }
 
 /* Called by gadget driver to unregister itself */
-int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
+static int amd5536_stop(struct usb_gadget_driver *driver)
 {
        struct udc      *dev = udc;
        unsigned long   flags;
@@ -2057,8 +2061,6 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
 
        return 0;
 }
-EXPORT_SYMBOL(usb_gadget_unregister_driver);
-
 
 /* Clear pending NAK bits */
 static void udc_process_cnak_queue(struct udc *dev)
@@ -3134,6 +3136,7 @@ static void udc_pci_remove(struct pci_dev *pdev)
 
        dev = pci_get_drvdata(pdev);
 
+       usb_del_gadget_udc(&udc->gadget);
        /* gadget driver must not be registered */
        BUG_ON(dev->driver != NULL);
 
@@ -3382,8 +3385,13 @@ static int udc_probe(struct udc *dev)
                "driver version: %s(for Geode5536 B1)\n", tmp);
        udc = dev;
 
+       retval = usb_add_gadget_udc(&udc->pdev->dev, &dev->gadget);
+       if (retval)
+               goto finished;
+
        retval = device_register(&dev->gadget.dev);
        if (retval) {
+               usb_del_gadget_udc(&dev->gadget);
                put_device(&dev->gadget.dev);
                goto finished;
        }
This page took 0.03164 seconds and 5 git commands to generate.