usb: gadget: s3c2410: convert to udc_start/udc_stop
authorFelipe Balbi <balbi@ti.com>
Thu, 24 Jan 2013 15:20:46 +0000 (17:20 +0200)
committerFelipe Balbi <balbi@ti.com>
Thu, 24 Jan 2013 19:11:32 +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/s3c2410_udc.c
drivers/usb/gadget/s3c2410_udc.h

index a2fa6e16d019cf46ff5dff1e172b7106e6abf43c..fc07b43812867d4070143093060be8d328fad9ff 100644 (file)
@@ -1538,9 +1538,10 @@ static int s3c2410_vbus_draw(struct usb_gadget *_gadget, unsigned ma)
        return -ENOTSUPP;
 }
 
-static int s3c2410_udc_start(struct usb_gadget_driver *driver,
-               int (*bind)(struct usb_gadget *, struct usb_gadget_driver *));
-static int s3c2410_udc_stop(struct usb_gadget_driver *driver);
+static int s3c2410_udc_start(struct usb_gadget *g,
+               struct usb_gadget_driver *driver);
+static int s3c2410_udc_stop(struct usb_gadget *g,
+               struct usb_gadget_driver *driver);
 
 static const struct usb_gadget_ops s3c2410_ops = {
        .get_frame              = s3c2410_udc_get_frame,
@@ -1549,8 +1550,8 @@ static const struct usb_gadget_ops s3c2410_ops = {
        .pullup                 = s3c2410_udc_pullup,
        .vbus_session           = s3c2410_udc_vbus_session,
        .vbus_draw              = s3c2410_vbus_draw,
-       .start                  = s3c2410_udc_start,
-       .stop                   = s3c2410_udc_stop,
+       .udc_start              = s3c2410_udc_start,
+       .udc_stop               = s3c2410_udc_stop,
 };
 
 static void s3c2410_udc_command(enum s3c2410_udc_cmd_e cmd)
@@ -1664,33 +1665,14 @@ static void s3c2410_udc_enable(struct s3c2410_udc *dev)
        s3c2410_udc_command(S3C2410_UDC_P_ENABLE);
 }
 
-static int s3c2410_udc_start(struct usb_gadget_driver *driver,
-               int (*bind)(struct usb_gadget *, struct usb_gadget_driver *))
+static int s3c2410_udc_start(struct usb_gadget *g,
+               struct usb_gadget_driver *driver)
 {
-       struct s3c2410_udc *udc = the_controller;
+       struct s3c2410_udc *udc = to_s3c2410(g)
        int             retval;
 
        dprintk(DEBUG_NORMAL, "%s() '%s'\n", __func__, driver->driver.name);
 
-       /* Sanity checks */
-       if (!udc)
-               return -ENODEV;
-
-       if (udc->driver)
-               return -EBUSY;
-
-       if (!bind || !driver->setup || driver->max_speed < USB_SPEED_FULL) {
-               dev_err(&udc->gadget.dev, "Invalid driver: bind %p setup %p speed %d\n",
-                       bind, driver->setup, driver->max_speed);
-               return -EINVAL;
-       }
-#if defined(MODULE)
-       if (!driver->unbind) {
-               dev_err(&udc->gadget.dev, "Invalid driver: no unbind method\n");
-               return -EINVAL;
-       }
-#endif
-
        /* Hook the driver */
        udc->driver = driver;
        udc->gadget.dev.driver = &driver->driver;
@@ -1702,15 +1684,6 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver,
                goto register_error;
        }
 
-       dprintk(DEBUG_NORMAL, "binding gadget driver '%s'\n",
-               driver->driver.name);
-
-       retval = bind(&udc->gadget, driver);
-       if (retval) {
-               device_del(&udc->gadget.dev);
-               goto register_error;
-       }
-
        /* Enable udc */
        s3c2410_udc_enable(udc);
 
@@ -1722,24 +1695,10 @@ register_error:
        return retval;
 }
 
-static int s3c2410_udc_stop(struct usb_gadget_driver *driver)
+static int s3c2410_udc_stop(struct usb_gadget *g,
+               struct usb_gadget_driver *driver)
 {
-       struct s3c2410_udc *udc = the_controller;
-
-       if (!udc)
-               return -ENODEV;
-
-       if (!driver || driver != udc->driver || !driver->unbind)
-               return -EINVAL;
-
-       dprintk(DEBUG_NORMAL, "usb_gadget_unregister_driver() '%s'\n",
-               driver->driver.name);
-
-       /* report disconnect */
-       if (driver->disconnect)
-               driver->disconnect(&udc->gadget);
-
-       driver->unbind(&udc->gadget);
+       struct s3c2410_udc *udc = to_s3c2410(g);
 
        device_del(&udc->gadget.dev);
        udc->driver = NULL;
index 3e80fd5c820fc59f41ef8932d412694a6cd6c942..93bf225f196974b0e918d2a09cf8e13051ecfda1 100644 (file)
@@ -95,5 +95,6 @@ struct s3c2410_udc {
        u8                              vbus;
        struct dentry                   *regs_info;
 };
+#define to_s3c2410(g)  (container_of((g), struct s3c2410_udc, gadget))
 
 #endif