diff options
author | Eric Miao <eric.miao@linaro.org> | 2011-08-28 20:11:02 +0800 |
---|---|---|
committer | Eric Miao <eric.miao@linaro.org> | 2011-11-10 11:20:09 +0800 |
commit | ed9fb034f335092ee14a975a0ba6ba8a96dbdf33 (patch) | |
tree | 61258e0249d60ff3b5001bb1996fc61f594a1dcf | |
parent | 38888d91cccb0c14331a1b8ca0ac0690c351e4b1 (diff) |
usb: convert arcotg_udc.c to the new udc infrastructure
Signed-off-by: Eric Miao <eric.miao@linaro.org>
-rw-r--r-- | drivers/usb/gadget/arcotg_udc.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/usb/gadget/arcotg_udc.c b/drivers/usb/gadget/arcotg_udc.c index 9d4e29e2da3..309b13995b8 100644 --- a/drivers/usb/gadget/arcotg_udc.c +++ b/drivers/usb/gadget/arcotg_udc.c @@ -1464,6 +1464,11 @@ static int fsl_pullup(struct usb_gadget *gadget, int is_on) return 0; } +static int fsl_udc_start(struct usb_gadget_driver *driver, + int (*bind)(struct usb_gadget *)); +static int fsl_udc_stop(struct usb_gadget_driver *driver); + + /* defined in gadget.h */ static struct usb_gadget_ops fsl_gadget_ops = { .get_frame = fsl_get_frame, @@ -1472,6 +1477,8 @@ static struct usb_gadget_ops fsl_gadget_ops = { .vbus_session = fsl_vbus_session, .vbus_draw = fsl_vbus_draw, .pullup = fsl_pullup, + .start = fsl_udc_start, + .stop = fsl_udc_stop, }; /* Set protocol stall on ep0, protocol stall will automatically be cleared @@ -2285,8 +2292,8 @@ irq_end: * Hook to gadget drivers * Called by initialization code of gadget drivers *----------------------------------------------------------------*/ -int usb_gadget_probe_driver(struct usb_gadget_driver *driver, - int (*bind)(struct usb_gadget *)) +static int fsl_udc_start(struct usb_gadget_driver *driver, + int (*bind)(struct usb_gadget *)) { int retval = -ENODEV; unsigned long flags = 0; @@ -2367,10 +2374,9 @@ out: } return retval; } -EXPORT_SYMBOL(usb_gadget_probe_driver); /* Disconnect from gadget driver */ -int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) +static int fsl_udc_stop(struct usb_gadget_driver *driver) { struct fsl_ep *loop_ep; unsigned long flags; @@ -2422,7 +2428,6 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) driver->driver.name); return 0; } -EXPORT_SYMBOL(usb_gadget_unregister_driver); /*------------------------------------------------------------------------- PROC File System Support @@ -2994,8 +2999,12 @@ static int __init fsl_udc_probe(struct platform_device *pdev) dr_clk_gate(false); create_proc_file(); - return 0; + ret = usb_add_gadget_udc(&pdev->dev, &udc_controller->gadget); + if (!ret) + return ret; + + remove_proc_file(); err4: device_unregister(&udc_controller->gadget.dev); err3: @@ -3023,6 +3032,8 @@ static int __exit fsl_udc_remove(struct platform_device *pdev) DECLARE_COMPLETION(done); + usb_del_gadget_udc(&udc_controller->gadget); + if (!udc_controller) return -ENODEV; udc_controller->done = &done; |