This is not compile tested as I failed at it. I added an #if 0 block because I did not find the struct device of the device. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> --- Greg, I guess this should go via your staging tree. .../staging/westbridge/astoria/gadget/cyasgadget.c | 20 ++++++++++++++++---- 1 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/staging/westbridge/astoria/gadget/cyasgadget.c b/drivers/staging/westbridge/astoria/gadget/cyasgadget.c index be851ca..92015ec 100644 --- a/drivers/staging/westbridge/astoria/gadget/cyasgadget.c +++ b/drivers/staging/westbridge/astoria/gadget/cyasgadget.c @@ -1595,12 +1595,18 @@ initsoj_safe_exit: return 0; } +static int cyasgadget_start(struct usb_gadget_driver *driver, + int (*bind)(struct usb_gadget *)); +static int cyasgadget_stop(struct usb_gadget_driver *driver); + static const struct usb_gadget_ops cyasgadget_ops = { .get_frame = cyasgadget_get_frame, .wakeup = cyasgadget_wakeup, .set_selfpowered = cyasgadget_set_selfpowered, .pullup = cyasgadget_pullup, .ioctl = cyasgadget_ioctl, + .start = cyasgadget_start, + .stop = cyasgadget_stop, }; @@ -1883,7 +1889,7 @@ static void cyas_ep0_start( * disconnect is reported. then a host may connect again, or * the driver might get unbound. */ -int usb_gadget_probe_driver(struct usb_gadget_driver *driver, +static int cyasgadget_start(struct usb_gadget_driver *driver, int (*bind)(struct usb_gadget *)) { cyasgadget *dev = cy_as_gadget_controller; @@ -1938,7 +1944,6 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver, return 0; } -EXPORT_SYMBOL(usb_gadget_probe_driver); static void cyasgadget_nuke( cyasgadget_ep *an_ep @@ -2011,7 +2016,7 @@ static void cyasgadget_stop_activity( #endif } -int usb_gadget_unregister_driver( +static int cyasgadget_stop( struct usb_gadget_driver *driver ) { @@ -2040,7 +2045,6 @@ int usb_gadget_unregister_driver( return 0; } -EXPORT_SYMBOL(usb_gadget_unregister_driver); static void cyas_gadget_release( struct device *_dev @@ -2071,6 +2075,7 @@ static void cyasgadget_deinit( #endif return; } + usb_del_gadget_udc(&cy_as_dev->gadget); if (cy_as_dev->driver) { /* should have been done already by driver model core */ @@ -2131,6 +2136,13 @@ static int cyasgadget_initialize(void) /* We are done now */ cy_as_gadget_controller = cy_as_dev; +#if 0 + pdev is the platform_device or pci_device or whatever is used here + retval = usb_add_gadget_udc(&pdev->dev, &cy_as_dev->gadget); + if (retval) + goto done; +#endif + return 0; /* -- 1.7.4.4 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html