]> git.karo-electronics.de Git - linux-beck.git/commitdiff
usb: gadget: omap_udc: convert to udc_start/udc_stop
authorFelipe Balbi <balbi@ti.com>
Thu, 24 Jan 2013 08:52:52 +0000 (10:52 +0200)
committerFelipe Balbi <balbi@ti.com>
Thu, 24 Jan 2013 19:11:30 +0000 (21:11 +0200)
Mechanical change making use of the new (can we
still call it new ?) interface for registering
UDC drivers.

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/gadget/omap_udc.c

index 8bfe990caf1ac40f23709016194686b008270471..d0c87b15b9a324d41375ac9fe7e89077f64ead01 100644 (file)
@@ -1309,9 +1309,10 @@ static int omap_pullup(struct usb_gadget *gadget, int is_on)
        return 0;
 }
 
-static int omap_udc_start(struct usb_gadget_driver *driver,
-               int (*bind)(struct usb_gadget *, struct usb_gadget_driver *));
-static int omap_udc_stop(struct usb_gadget_driver *driver);
+static int omap_udc_start(struct usb_gadget *g,
+               struct usb_gadget_driver *driver)
+static int omap_udc_stop(struct usb_gadget *g,
+               struct usb_gadget_driver *driver);
 
 static struct usb_gadget_ops omap_gadget_ops = {
        .get_frame              = omap_get_frame,
@@ -1320,8 +1321,8 @@ static struct usb_gadget_ops omap_gadget_ops = {
        .vbus_session           = omap_vbus_session,
        .vbus_draw              = omap_vbus_draw,
        .pullup                 = omap_pullup,
-       .start                  = omap_udc_start,
-       .stop                   = omap_udc_stop,
+       .udc_start              = omap_udc_start,
+       .udc_stop               = omap_udc_stop,
 };
 
 /*-------------------------------------------------------------------------*/
@@ -2041,28 +2042,15 @@ static inline int machine_without_vbus_sense(void)
                || cpu_is_omap7xx();
 }
 
-static int omap_udc_start(struct usb_gadget_driver *driver,
-               int (*bind)(struct usb_gadget *, struct usb_gadget_driver *))
+static int omap_udc_start(struct usb_gadget *g,
+               struct usb_gadget_driver *driver)
 {
        int             status = -ENODEV;
        struct omap_ep  *ep;
        unsigned long   flags;
 
-       /* basic sanity tests */
-       if (!udc)
-               return -ENODEV;
-       if (!driver
-                       /* FIXME if otg, check:  driver->is_otg */
-                       || driver->max_speed < USB_SPEED_FULL
-                       || !bind || !driver->setup)
-               return -EINVAL;
 
        spin_lock_irqsave(&udc->lock, flags);
-       if (udc->driver) {
-               spin_unlock_irqrestore(&udc->lock, flags);
-               return -EBUSY;
-       }
-
        /* reset state */
        list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) {
                ep->irqs = 0;
@@ -2084,15 +2072,6 @@ static int omap_udc_start(struct usb_gadget_driver *driver,
        if (udc->dc_clk != NULL)
                omap_udc_enable_clock(1);
 
-       status = bind(&udc->gadget, driver);
-       if (status) {
-               DBG("bind to %s --> %d\n", driver->driver.name, status);
-               udc->gadget.dev.driver = NULL;
-               udc->driver = NULL;
-               goto done;
-       }
-       DBG("bound to driver %s\n", driver->driver.name);
-
        omap_writew(UDC_IRQ_SRC_MASK, UDC_IRQ_SRC);
 
        /* connect to bus through transceiver */
@@ -2124,19 +2103,16 @@ static int omap_udc_start(struct usb_gadget_driver *driver,
 done:
        if (udc->dc_clk != NULL)
                omap_udc_enable_clock(0);
+
        return status;
 }
 
-static int omap_udc_stop(struct usb_gadget_driver *driver)
+static int omap_udc_stop(struct usb_gadget *g,
+               struct usb_gadget_driver *driver)
 {
        unsigned long   flags;
        int             status = -ENODEV;
 
-       if (!udc)
-               return -ENODEV;
-       if (!driver || driver != udc->driver || !driver->unbind)
-               return -EINVAL;
-
        if (udc->dc_clk != NULL)
                omap_udc_enable_clock(1);
 
@@ -2152,13 +2128,12 @@ static int omap_udc_stop(struct usb_gadget_driver *driver)
        udc_quiesce(udc);
        spin_unlock_irqrestore(&udc->lock, flags);
 
-       driver->unbind(&udc->gadget);
        udc->gadget.dev.driver = NULL;
        udc->driver = NULL;
 
        if (udc->dc_clk != NULL)
                omap_udc_enable_clock(0);
-       DBG("unregistered driver '%s'\n", driver->driver.name);
+
        return status;
 }