Loading drivers/usb/gadget/amd5536udc.c +14 −45 Original line number Diff line number Diff line Loading @@ -1400,15 +1400,16 @@ static int udc_wakeup(struct usb_gadget *gadget) return 0; } static int amd5536_start(struct usb_gadget_driver *driver, int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)); static int amd5536_stop(struct usb_gadget_driver *driver); static int amd5536_udc_start(struct usb_gadget *g, struct usb_gadget_driver *driver); static int amd5536_udc_stop(struct usb_gadget *g, 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, .udc_start = amd5536_udc_start, .udc_stop = amd5536_udc_stop, }; /* Setups endpoint parameters, adds endpoints to linked list */ Loading Loading @@ -1913,41 +1914,22 @@ static int setup_ep0(struct udc *dev) } /* Called by gadget driver to register itself */ static int amd5536_start(struct usb_gadget_driver *driver, int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)) static int amd5536_udc_start(struct usb_gadget *g, struct usb_gadget_driver *driver) { struct udc *dev = udc; int retval; struct udc *dev = to_amd5536_udc(g); u32 tmp; if (!driver || !bind || !driver->setup || driver->max_speed < USB_SPEED_HIGH) return -EINVAL; if (!dev) return -ENODEV; if (dev->driver) return -EBUSY; driver->driver.bus = NULL; dev->driver = driver; dev->gadget.dev.driver = &driver->driver; retval = bind(&dev->gadget, driver); /* Some gadget drivers use both ep0 directions. * NOTE: to gadget driver, ep0 is just one endpoint... */ dev->ep[UDC_EP0OUT_IX].ep.driver_data = dev->ep[UDC_EP0IN_IX].ep.driver_data; if (retval) { DBG(dev, "binding to %s returning %d\n", driver->driver.name, retval); dev->driver = NULL; dev->gadget.dev.driver = NULL; return retval; } /* get ready for ep0 traffic */ setup_ep0(dev); Loading @@ -1969,14 +1951,9 @@ __acquires(dev->lock) { int tmp; if (dev->gadget.speed != USB_SPEED_UNKNOWN) { spin_unlock(&dev->lock); driver->disconnect(&dev->gadget); spin_lock(&dev->lock); } /* empty queues and init hardware */ udc_basic_init(dev); for (tmp = 0; tmp < UDC_EP_NUM; tmp++) empty_req_queue(&dev->ep[tmp]); Loading @@ -1984,23 +1961,18 @@ __acquires(dev->lock) } /* Called by gadget driver to unregister itself */ static int amd5536_stop(struct usb_gadget_driver *driver) static int amd5536_udc_stop(struct usb_gadget *g, struct usb_gadget_driver *driver) { struct udc *dev = udc; struct udc *dev = to_amd5536_udc(g); unsigned long flags; u32 tmp; if (!dev) return -ENODEV; if (!driver || driver != dev->driver || !driver->unbind) return -EINVAL; spin_lock_irqsave(&dev->lock, flags); udc_mask_unused_interrupts(dev); shutdown(dev, driver); spin_unlock_irqrestore(&dev->lock, flags); driver->unbind(&dev->gadget); dev->gadget.dev.driver = NULL; dev->driver = NULL; Loading @@ -2009,9 +1981,6 @@ static int amd5536_stop(struct usb_gadget_driver *driver) tmp |= AMD_BIT(UDC_DEVCTL_SD); writel(tmp, &dev->regs->ctl); DBG(dev, "%s: unregistered\n", driver->driver.name); return 0; } Loading drivers/usb/gadget/amd5536udc.h +2 −0 Original line number Diff line number Diff line Loading @@ -563,6 +563,8 @@ struct udc { u16 cur_alt; }; #define to_amd5536_udc(g) (container_of((g), struct udc, gadget)) /* setup request data */ union udc_setup_data { u32 data[2]; Loading Loading
drivers/usb/gadget/amd5536udc.c +14 −45 Original line number Diff line number Diff line Loading @@ -1400,15 +1400,16 @@ static int udc_wakeup(struct usb_gadget *gadget) return 0; } static int amd5536_start(struct usb_gadget_driver *driver, int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)); static int amd5536_stop(struct usb_gadget_driver *driver); static int amd5536_udc_start(struct usb_gadget *g, struct usb_gadget_driver *driver); static int amd5536_udc_stop(struct usb_gadget *g, 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, .udc_start = amd5536_udc_start, .udc_stop = amd5536_udc_stop, }; /* Setups endpoint parameters, adds endpoints to linked list */ Loading Loading @@ -1913,41 +1914,22 @@ static int setup_ep0(struct udc *dev) } /* Called by gadget driver to register itself */ static int amd5536_start(struct usb_gadget_driver *driver, int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)) static int amd5536_udc_start(struct usb_gadget *g, struct usb_gadget_driver *driver) { struct udc *dev = udc; int retval; struct udc *dev = to_amd5536_udc(g); u32 tmp; if (!driver || !bind || !driver->setup || driver->max_speed < USB_SPEED_HIGH) return -EINVAL; if (!dev) return -ENODEV; if (dev->driver) return -EBUSY; driver->driver.bus = NULL; dev->driver = driver; dev->gadget.dev.driver = &driver->driver; retval = bind(&dev->gadget, driver); /* Some gadget drivers use both ep0 directions. * NOTE: to gadget driver, ep0 is just one endpoint... */ dev->ep[UDC_EP0OUT_IX].ep.driver_data = dev->ep[UDC_EP0IN_IX].ep.driver_data; if (retval) { DBG(dev, "binding to %s returning %d\n", driver->driver.name, retval); dev->driver = NULL; dev->gadget.dev.driver = NULL; return retval; } /* get ready for ep0 traffic */ setup_ep0(dev); Loading @@ -1969,14 +1951,9 @@ __acquires(dev->lock) { int tmp; if (dev->gadget.speed != USB_SPEED_UNKNOWN) { spin_unlock(&dev->lock); driver->disconnect(&dev->gadget); spin_lock(&dev->lock); } /* empty queues and init hardware */ udc_basic_init(dev); for (tmp = 0; tmp < UDC_EP_NUM; tmp++) empty_req_queue(&dev->ep[tmp]); Loading @@ -1984,23 +1961,18 @@ __acquires(dev->lock) } /* Called by gadget driver to unregister itself */ static int amd5536_stop(struct usb_gadget_driver *driver) static int amd5536_udc_stop(struct usb_gadget *g, struct usb_gadget_driver *driver) { struct udc *dev = udc; struct udc *dev = to_amd5536_udc(g); unsigned long flags; u32 tmp; if (!dev) return -ENODEV; if (!driver || driver != dev->driver || !driver->unbind) return -EINVAL; spin_lock_irqsave(&dev->lock, flags); udc_mask_unused_interrupts(dev); shutdown(dev, driver); spin_unlock_irqrestore(&dev->lock, flags); driver->unbind(&dev->gadget); dev->gadget.dev.driver = NULL; dev->driver = NULL; Loading @@ -2009,9 +1981,6 @@ static int amd5536_stop(struct usb_gadget_driver *driver) tmp |= AMD_BIT(UDC_DEVCTL_SD); writel(tmp, &dev->regs->ctl); DBG(dev, "%s: unregistered\n", driver->driver.name); return 0; } Loading
drivers/usb/gadget/amd5536udc.h +2 −0 Original line number Diff line number Diff line Loading @@ -563,6 +563,8 @@ struct udc { u16 cur_alt; }; #define to_amd5536_udc(g) (container_of((g), struct udc, gadget)) /* setup request data */ union udc_setup_data { u32 data[2]; Loading